diff --git a/.swiftlint.yml b/.swiftlint.yml index 344f76bdd..b304435f3 100755 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -24,7 +24,7 @@ line_length: error: 1000 file_length: - warning: 800 + warning: 1000 error: 1000 type_name: @@ -38,9 +38,12 @@ type_body_length: error: 1000 function_body_length: - warning: 50 + warning: 100 error: 100 +cyclomatic_complexity: + ignores_case_statements: true + nesting: type_level: warning: 5 diff --git a/ElementX/Sources/Application/AppCoordinator.swift b/ElementX/Sources/Application/AppCoordinator.swift index 17c46852c..edab80140 100644 --- a/ElementX/Sources/Application/AppCoordinator.swift +++ b/ElementX/Sources/Application/AppCoordinator.swift @@ -241,7 +241,6 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationCoordinatorDelegate, userSessionStore.reset() } - // swiftlint:disable:next cyclomatic_complexity private func setupStateMachine() { stateMachine.addTransitionHandler { [weak self] context in guard let self else { return } diff --git a/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift index 008954ba1..849727ff4 100644 --- a/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift @@ -95,7 +95,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol { // MARK: - Private - // swiftlint:disable:next cyclomatic_complexity function_body_length + // swiftlint:disable:next function_body_length private func setupStateMachine() { stateMachine.addRouteMapping { event, fromState, _ in switch (event, fromState) { @@ -258,7 +258,6 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol { } } - // swiftlint:disable:next cyclomatic_complexity function_body_length private func asyncPresentRoom(_ roomID: String, animated: Bool, destinationRoomProxy: RoomProxyProtocol? = nil) async { if let roomProxy, roomProxy.id == roomID { navigationStackCoordinator.popToRoot() diff --git a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift index 5227d396f..cdabb0f8c 100644 --- a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift @@ -135,7 +135,6 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { // MARK: - Private - // swiftlint:disable:next cyclomatic_complexity function_body_length private func setupStateMachine() { stateMachine.addTransitionHandler { [weak self] context in guard let self else { return } @@ -241,7 +240,6 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { } } - // swiftlint:disable:next cyclomatic_complexity private func presentHomeScreen() { let parameters = HomeScreenCoordinatorParameters(userSession: userSession, attributedStringBuilder: AttributedStringBuilder(permalinkBaseURL: ServiceLocator.shared.settings.permalinkBaseURL), diff --git a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinatorStateMachine.swift b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinatorStateMachine.swift index b6c4bad47..79a870cf6 100644 --- a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinatorStateMachine.swift +++ b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinatorStateMachine.swift @@ -114,7 +114,6 @@ class UserSessionFlowCoordinatorStateMachine { configure() } - // swiftlint:disable:next cyclomatic_complexity private func configure() { stateMachine.addRoutes(event: .start, transitions: [.initial => .roomList(selectedRoomID: nil)]) stateMachine.addRoutes(event: .startWithMigration, transitions: [.initial => .migration]) diff --git a/ElementX/Sources/Other/Extensions/UNNotificationContent.swift b/ElementX/Sources/Other/Extensions/UNNotificationContent.swift index b43b8c995..6cbbbcc3a 100644 --- a/ElementX/Sources/Other/Extensions/UNNotificationContent.swift +++ b/ElementX/Sources/Other/Extensions/UNNotificationContent.swift @@ -101,7 +101,6 @@ extension UNMutableNotificationContent { return self } - // swiftlint:disable:next function_body_length func addSenderIcon(using mediaProvider: MediaProviderProtocol?, senderID: String, senderName: String, diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index 022d34380..11bd0d3aa 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -34,7 +34,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol var callback: ((HomeScreenViewModelAction) -> Void)? - // swiftlint:disable:next function_body_length cyclomatic_complexity init(userSession: UserSessionProtocol, attributedStringBuilder: AttributedStringBuilderProtocol, selectedRoomPublisher: CurrentValuePublisher, @@ -156,7 +155,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol // MARK: - Public - // swiftlint:disable:next cyclomatic_complexity override func process(viewAction: HomeScreenViewAction) { switch viewAction { case .selectRoom(let roomIdentifier): diff --git a/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift b/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift index 9cffcf537..c768b0606 100644 --- a/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift @@ -69,7 +69,6 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr // MARK: - Public - // swiftlint:disable:next cyclomatic_complexity override func process(viewAction: RoomDetailsScreenViewAction) { switch viewAction { case .processTapPeople: diff --git a/ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift b/ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift index 157d6779f..748e79962 100644 --- a/ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift +++ b/ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift @@ -59,7 +59,6 @@ final class RoomScreenCoordinator: CoordinatorProtocol { // MARK: - Public - // swiftlint:disable:next cyclomatic_complexity func start() { viewModel.callback = { [weak self] action in guard let self else { return } diff --git a/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift b/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift index 3e6e648b4..8659802b4 100644 --- a/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift @@ -81,7 +81,6 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol var callback: ((RoomScreenViewModelAction) -> Void)? - // swiftlint:disable:next cyclomatic_complexity function_body_length override func process(viewAction: RoomScreenViewAction) { switch viewAction { case .displayRoomDetails: @@ -539,7 +538,6 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol item.isOutgoing || (canCurrentUserRedact && !roomProxy.isDirect) } - // swiftlint:disable:next cyclomatic_complexity function_body_length private func processTimelineItemMenuAction(_ action: TimelineItemMenuAction, itemID: TimelineItemIdentifier) { guard let timelineItem = timelineController.timelineItems.firstUsingStableID(itemID), let eventTimelineItem = timelineItem as? EventBasedTimelineItemProtocol else { diff --git a/ElementX/Sources/Screens/RoomScreen/View/Style/LongPressWithFeedback.swift b/ElementX/Sources/Screens/RoomScreen/View/Style/LongPressWithFeedback.swift index 09e6e2749..87f28fa78 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/Style/LongPressWithFeedback.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/Style/LongPressWithFeedback.swift @@ -33,7 +33,7 @@ struct LongPressWithFeedback: ViewModifier { .animation(isLongPressing ? .spring(response: 0.5).delay(0.1) : .spring(response: 0.5), value: isLongPressing) // The minimum duration here doesn't actually invoke the perform block when elapsed (thus - // the implementation bellow) but it does cancel other system gestures e.g. swipe to reply + // the implementation below) but it does cancel other system gestures e.g. swipe to reply .onLongPressGesture(minimumDuration: 0.25) { } onPressingChanged: { isPressing in isLongPressing = isPressing diff --git a/ElementX/Sources/Screens/SessionVerificationScreen/SessionVerificationScreenStateMachine.swift b/ElementX/Sources/Screens/SessionVerificationScreen/SessionVerificationScreenStateMachine.swift index 1f2e102a2..94d5314fe 100644 --- a/ElementX/Sources/Screens/SessionVerificationScreen/SessionVerificationScreenStateMachine.swift +++ b/ElementX/Sources/Screens/SessionVerificationScreen/SessionVerificationScreenStateMachine.swift @@ -83,7 +83,6 @@ class SessionVerificationScreenStateMachine { configure() } - // swiftlint:disable:next cyclomatic_complexity private func configure() { stateMachine.addRoutes(event: .requestVerification, transitions: [.initial => .requestingVerification]) stateMachine.addRoutes(event: .didAcceptVerificationRequest, transitions: [.requestingVerification => .verificationRequestAccepted]) diff --git a/ElementX/Sources/Services/BugReport/BugReportService.swift b/ElementX/Sources/Services/BugReport/BugReportService.swift index 0d92aa403..db78bb3e4 100644 --- a/ElementX/Sources/Services/BugReport/BugReportService.swift +++ b/ElementX/Sources/Services/BugReport/BugReportService.swift @@ -101,7 +101,6 @@ class BugReportService: NSObject, BugReportServiceProtocol { SentrySDK.crash() } - // swiftlint:disable:next function_body_length cyclomatic_complexity func submitBugReport(_ bugReport: BugReport, progressListener: CurrentValueSubject) async -> Result { var params = [ diff --git a/ElementX/Sources/Services/Room/RoomSummary/RoomEventStringBuilder.swift b/ElementX/Sources/Services/Room/RoomSummary/RoomEventStringBuilder.swift index 936ac0f64..e55f2378e 100644 --- a/ElementX/Sources/Services/Room/RoomSummary/RoomEventStringBuilder.swift +++ b/ElementX/Sources/Services/Room/RoomSummary/RoomEventStringBuilder.swift @@ -23,7 +23,6 @@ struct RoomEventStringBuilder { self.stateEventStringBuilder = stateEventStringBuilder } - // swiftlint:disable:next cyclomatic_complexity func buildAttributedString(for eventItemProxy: EventTimelineItemProxy) -> AttributedString? { let sender = eventItemProxy.sender let isOutgoing = eventItemProxy.isOwn diff --git a/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift b/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift index 8c2c71836..1984bf889 100644 --- a/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift +++ b/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift @@ -206,7 +206,6 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol { } } - // swiftlint:disable:next cyclomatic_complexity function_body_length private func buildDiff(from diff: RoomListEntriesUpdate, on rooms: [RoomSummary]) -> CollectionDifference? { var changes = [CollectionDifference.Change]() diff --git a/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift b/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift index d6017036f..3caf74432 100644 --- a/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift +++ b/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift @@ -89,7 +89,7 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol { MXLog.verbose("Finished applying diffs, current items (\(itemProxies.count)) : \(itemProxies.map(\.debugIdentifier))") } - // swiftlint:disable:next cyclomatic_complexity function_body_length + // swiftlint:disable:next cyclomatic_complexity private func buildDiff(from diff: TimelineDiff, on itemProxies: [TimelineItemProxy]) -> CollectionDifference? { var changes = [CollectionDifference.Change]() diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/RoomStateEventStringBuilder.swift b/ElementX/Sources/Services/Timeline/TimelineItems/RoomStateEventStringBuilder.swift index 6701aba44..22e87f493 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/RoomStateEventStringBuilder.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/RoomStateEventStringBuilder.swift @@ -20,7 +20,6 @@ import UIKit struct RoomStateEventStringBuilder { let userID: String - // swiftlint:disable:next cyclomatic_complexity func buildString(for change: MembershipChange?, member: String, sender: TimelineItemSender, isOutgoing: Bool) -> String? { guard let change else { MXLog.verbose("Filtering timeline item for membership change that is nil") @@ -76,7 +75,7 @@ struct RoomStateEventStringBuilder { } } - // swiftlint:disable:next cyclomatic_complexity function_parameter_count + // swiftlint:disable:next function_parameter_count func buildProfileChangeString(displayName: String?, previousDisplayName: String?, avatarURLString: String?, previousAvatarURLString: String?, member: String, memberIsYou: Bool) -> String? { @@ -122,7 +121,6 @@ struct RoomStateEventStringBuilder { } } - // swiftlint:disable:next cyclomatic_complexity function_body_length func buildString(for state: OtherState, stateKey: String?, sender: TimelineItemSender, isOutgoing: Bool) -> String? { let senderName = sender.displayName ?? sender.id diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift index 3d6074ffd..943824127 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift @@ -36,7 +36,6 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { self.stateEventStringBuilder = stateEventStringBuilder } - // swiftlint:disable:next cyclomatic_complexity func buildTimelineItem(for eventItemProxy: EventTimelineItemProxy) -> RoomTimelineItemProtocol? { let isOutgoing = eventItemProxy.isOwn @@ -543,7 +542,6 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { // MARK: - Reply details - // swiftlint:disable:next cyclomatic_complexity private func buildReplyToDetailsFrom(details: InReplyToDetails?) -> TimelineItemReplyDetails? { guard let details else { return nil } diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemViewState.swift b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemViewState.swift index e8cd0a0a0..a32a12196 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemViewState.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemViewState.swift @@ -70,7 +70,6 @@ enum RoomTimelineItemType: Equatable { case location(LocationRoomTimelineItem) case poll(PollRoomTimelineItem) - // swiftlint:disable:next cyclomatic_complexity init(item: RoomTimelineItemProtocol) { switch item { case let item as TextRoomTimelineItem: diff --git a/UnitTests/Sources/LoggingTests.swift b/UnitTests/Sources/LoggingTests.swift index 51c5a6c50..a1e79884a 100644 --- a/UnitTests/Sources/LoggingTests.swift +++ b/UnitTests/Sources/LoggingTests.swift @@ -248,7 +248,6 @@ class LoggingTests: XCTestCase { XCTAssertFalse(content.contains(lastMessage)) } - // swiftlint:disable:next function_body_length func testTimelineContentIsRedacted() throws { // Given timeline items that contain text let textAttributedString = "TextAttributed"