-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathswiftlint_baseline_02_05_26.json
More file actions
1 lines (1 loc) · 383 KB
/
Copy pathswiftlint_baseline_02_05_26.json
File metadata and controls
1 lines (1 loc) · 383 KB
1
[{"text":" self.vm.inputs.didRegisterForRemoteNotifications(withDeviceTokenData: \"token\".data(using: .utf8)!)","violation":{"location":{"character":77,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/AppDelegateViewModelTests.swift","line":938},"ruleIdentifier":"non_optional_string_data_conversion","ruleName":"Non-optional String -> Data Conversion","ruleDescription":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`","severity":"warning","reason":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`"}},{"text":" self.vm.inputs.didRegisterForRemoteNotifications(withDeviceTokenData: \"token\".data(using: .utf8)!)","violation":{"location":{"character":77,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/AppDelegateViewModelTests.swift","line":968},"ruleIdentifier":"non_optional_string_data_conversion","ruleName":"Non-optional String -> Data Conversion","ruleDescription":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`","severity":"warning","reason":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`"}},{"text":" self.vm.inputs.didRegisterForRemoteNotifications(withDeviceTokenData: \"token\".data(using: .utf8)!)","violation":{"location":{"character":77,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/AppDelegateViewModelTests.swift","line":997},"ruleIdentifier":"non_optional_string_data_conversion","ruleName":"Non-optional String -> Data Conversion","ruleDescription":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`","severity":"warning","reason":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`"}},{"text":" self.vm.inputs.didRegisterForRemoteNotifications(withDeviceTokenData: \"deadbeef\".data(using: .utf8)!)","violation":{"location":{"character":77,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/AppDelegateViewModelTests.swift","line":1033},"ruleIdentifier":"non_optional_string_data_conversion","ruleName":"Non-optional String -> Data Conversion","ruleDescription":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`","severity":"warning","reason":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`"}},{"text":" categories.enumerated().forEach { _, state in","violation":{"location":{"character":39,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/AppDelegateViewModelTests.swift","line":1219},"ruleIdentifier":"unused_enumerated","ruleName":"Unused Enumerated","ruleDescription":"When the index or the item is not used, `.enumerated()` can be removed.","severity":"warning","reason":"When the index is not used, `.enumerated()` can be removed"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/AppDelegateViewModelTests.swift","line":2661},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":51},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":85},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":129},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":137},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":187},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":195},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":203},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":250},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":259},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":438},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":14,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOViewModelTests.swift","line":465},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" value: (AudioVideoViewElement, AVPlayer, UIImage),","violation":{"location":{"character":18,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSourceTests.swift","line":1140},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" value: (AudioVideoViewElement, AVPlayer, UIImage?),","violation":{"location":{"character":18,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSourceTests.swift","line":1358},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" private let showConfirmLogout = TestObserver<(message: String, cancel: String, confirm: String), Never>()","violation":{"location":{"character":48,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/Features\/Settings\/ViewModel\/SettingsViewModelTests.swift","line":22},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"internal func combos<A, B, C>(_ xs: [A], _ ys: [B], _ zs: [C]) -> [(A, B, C)] {","violation":{"location":{"character":68,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/TestHelpers\/Combos.swift","line":13},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"internal func orthogonalCombos<A, B, C>(_ xs: [A], _ ys: [B], _ zs: [C]) -> [(A, B, C)] {","violation":{"location":{"character":78,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/TestHelpers\/Combos.swift","line":39},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"internal func traitControllers(","violation":{"location":{"character":10,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/Kickstarter-iOS\/TestHelpers\/TraitController.swift","line":38},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 11"}},{"text":" withEnvironment(application: mockApplication, isVoiceOverRunning: { false }) {","violation":{"location":{"character":82,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/ViewModels\/RootViewModelTests.swift","line":104},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" withEnvironment(application: mockApplication, isVoiceOverRunning: { true }) {","violation":{"location":{"character":81,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/ViewModels\/RootViewModelTests.swift","line":112},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" withEnvironment(application: mockApplication, isVoiceOverRunning: { false }) {","violation":{"location":{"character":82,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework-iOSTests\/ViewModels\/RootViewModelTests.swift","line":119},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" public init() {","violation":{"location":{"character":10,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/AppDelegateViewModel.swift","line":190},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 16"}},{"text":" .map { link -> (Param, Navigation.Project, RefInfo?, secretRewardToken: String?)? in","violation":{"location":{"character":22,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/AppDelegateViewModel.swift","line":467},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" .map { project -> (Project, Navigation.Project, [UIViewController], RefInfo?) in","violation":{"location":{"character":29,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/AppDelegateViewModel.swift","line":476},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" .map { project, subpage, vcs, _ -> (Project, Int, Navigation.Project.Update, [UIViewController])? in","violation":{"location":{"character":42,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/AppDelegateViewModel.swift","line":634},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" .map { update -> (Project, Update, Navigation.Project.Update, [UIViewController]) in","violation":{"location":{"character":28,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/AppDelegateViewModel.swift","line":643},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" fileprivate typealias ApplicationOpenUrl = (","violation":{"location":{"character":46,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/AppDelegateViewModel.swift","line":877},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"private func navigation(fromPushEnvelope envelope: PushEnvelope) -> Navigation? {","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/AppDelegateViewModel.swift","line":1050},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"error","reason":"Function should have complexity 10 or less; currently complexity is 21"}},{"text":" @IBAction internal func refresh() {","violation":{"location":{"character":22,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Controller\/ActivitiesViewController.swift","line":227},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" case let (cell as ActivitySurveyResponseCell, value as (SurveyResponse, Int, Int)):","violation":{"location":{"character":60,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Datasource\/ActivitiesDataSource.swift","line":81},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var containerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressBarView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectTextContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendBackingCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendFollowCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var containerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendFollowCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendFollowCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendFollowCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var followButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityFriendFollowCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var containerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressBarView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataBackgroundView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var textBackgroundView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityProjectStatusCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var containerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var creatorImageView: CircleAvatarImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var creatorNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var respondNowButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var rewardSurveysCountLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var surveyLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var topLineView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func configureWith(value: (surveyResponse: SurveyResponse, count: Int, position: Int)) {","violation":{"location":{"character":38,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivitySurveyResponseCell.swift","line":34},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" @IBOutlet fileprivate var bodyLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var containerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var updateSequenceLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":25},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction internal func tappedProjectImage() {","violation":{"location":{"character":22,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/ActivityUpdateCell.swift","line":91},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/FindFriendsFacebookConnectCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var closeButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/FindFriendsFacebookConnectCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var containerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/FindFriendsFacebookConnectCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var facebookConnectButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/FindFriendsFacebookConnectCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var subtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/FindFriendsFacebookConnectCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Activities\/Views\/Cells\/FindFriendsFacebookConnectCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var avatarImageView: CircleAvatarImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var backedMenuButton: UIButton!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var backerNameLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var dividerView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var embeddedViewTopLayoutConstraint: NSLayoutConstraint!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var headerTopContainerView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var headerStackView: UIStackView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var headerView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var headerViewTopConstraint: NSLayoutConstraint!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var menuButtonsStackView: UIStackView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var messagesButtonItem: UIBarButtonItem!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var savedMenuButton: UIButton!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var selectedButtonIndicatorLeadingConstraint: NSLayoutConstraint!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var selectedButtonIndicatorView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var selectedButtonIndicatorWidthConstraint: NSLayoutConstraint!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var settingsButtonItem: UIBarButtonItem!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var sortBar: ProfileSortBarView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var topBackgroundView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":25},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var containerBottomToSafeArea: NSLayoutConstraint!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardPages\/Controller\/BackerDashboardViewController.swift","line":26},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var filledHeartIconImageView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardEmptyStateCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var messageLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardEmptyStateCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var titleLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardEmptyStateCell.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var iconImageView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardEmptyStateCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var mainContentContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataBackgroundView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataIconImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var percentFundedLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var progressStaticView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var progressBarView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var savedIconImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/BackerDashboardProjects\/Views\/Cells\/BackerDashboardProjectCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var currentEmailContainer: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var currentEmailTitle: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var currentEmailValue: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var messageLabelView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var newEmailLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var newEmailTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var passwordLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var passwordTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var resendVerificationEmailButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var resendVerificationEmailView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var scrollView: UIScrollView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var unverifiedEmailLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var warningMessageLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func saveButtonTapped(_: Any) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":197},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func resendVerificationEmailButtonTapped(_: Any) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":201},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func emailFieldTextDidChange(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":205},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func passwordFieldTextDidChange(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangeEmail\/Controller\/ChangeEmailViewController.swift","line":209},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var changePasswordLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var confirmNewPasswordLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var confirmNewPasswordTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var currentPasswordLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var currentPasswordTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var validationErrorMessageLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var newPasswordLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var newPasswordTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var scrollView: UIScrollView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var stackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func currentPasswordTextDidChange(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":199},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func currentPasswordDidEndEditing(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":207},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func currentPasswordDidReturn(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":215},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func newPasswordTextDidChange(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":223},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func newPasswordDidEndEditing(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":231},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func newPasswordDidReturn(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":239},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func confirmNewPasswordTextDidChange(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":247},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func confirmNewPasswordDidEndEditing(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":255},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func confirmNewPasswordDidReturn(_ sender: UITextField) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":264},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func saveButtonTapped(_: Any) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ChangePassword\/Controller\/ChangePasswordViewController.swift","line":273},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var bottomConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cancelButton: UIBarButtonItem!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var subtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var bodyTextView: UITextView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var postButton: UIBarButtonItem!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var loadingView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction internal func cancelButtonPressed() {","violation":{"location":{"character":22,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":100},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction internal func postButtonPressed() {","violation":{"location":{"character":22,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Comments\/Controllers\/CommentDialogViewController.swift","line":104},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":"public typealias TextFieldTargetAction = (target: Any?, action: Selector, event: UIControl.Event)","violation":{"location":{"character":42,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/CreatePassword\/Views\/Cells\/SettingsTextInputCell.swift","line":5},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" @IBOutlet fileprivate var rootStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DebugPushNotifications\/Controller\/DebugPushNotificationsViewController.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var scrollView: UIScrollView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DebugPushNotifications\/Controller\/DebugPushNotificationsViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorViews: [UIView]!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DebugPushNotifications\/Controller\/DebugPushNotificationsViewController.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var arrowImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var betaToolsButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var bgView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var bookmarkImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var bookmarkOutlineImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var debugContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var debugImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var dividerLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var exploreLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var favoriteButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":25},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var favoriteContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":26},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var primaryLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":27},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var secondaryLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":28},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":29},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var containerStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":30},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var outerStackViewTopConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":31},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleStackView: UIStackView! {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryNavigationHeaderViewController.swift","line":32},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet var pagesBottomToSafeArea: NSLayoutConstraint!","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet var pagesBottomToSuperview: NSLayoutConstraint!","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Controller\/DiscoveryViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var activityStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleBackingCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var activityTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleBackingCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backerImageAndInfoStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleBackingCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backerImageView: CircleAvatarImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleBackingCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backingTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleBackingCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleBackingCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var seeAllActivityButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleBackingCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var activityStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleFollowCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var activityTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleFollowCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleFollowCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendFollowLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleFollowCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendImageAndFollowStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleFollowCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendImageView: CircleAvatarImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleFollowCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var seeAllActivityButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleFollowCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var activityStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var activityTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageAndInfoStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectSubtitleAndTitleStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectSubtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var seeAllActivityButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/ActivitySampleProjectCell.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var loginButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryOnboardingCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var logoImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryOnboardingCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var onboardingTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryOnboardingCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var stackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryOnboardingCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backgroundGradientView: GradientView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backersSubtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backersTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var deadlineSubtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":25},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var deadlineTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":26},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressBarView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":27},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":28},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingSubtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":29},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":30},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var locationImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":31},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var locationLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":32},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var locationStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":33},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataIconImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":34},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":35},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":36},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":37},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":38},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameAndBlurbLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":39},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectStateSubtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":40},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectCategoriesStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":41},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectStateTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":42},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectStateStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":43},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectStatsStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":44},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var saveButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":45},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var socialAvatarImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":46},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var socialLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":47},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var socialStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":48},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectStatsSocialLocationStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/Cells\/DiscoveryPostcardCell.swift","line":49},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var blurView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/DiscoveryProjectCategoryView.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var categoryStackView: UIStackView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/DiscoveryProjectCategoryView.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var categoryViewImageView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/DiscoveryProjectCategoryView.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var categoryViewLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Discovery\/Views\/DiscoveryProjectCategoryView.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var bgView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Controller\/DiscoveryFiltersViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var closeButton: UIButton!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Controller\/DiscoveryFiltersViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var filtersTableView: UITableView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Controller\/DiscoveryFiltersViewController.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var filterTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoveryExpandableRowCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectsCountLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoveryExpandableRowCell.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var filterTitleLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoveryExpandedSelectableRow.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var highlightView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoveryExpandedSelectableRow.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var circleImageView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoveryExpandedSelectableRow.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var checkImageView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoveryExpandedSelectableRow.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var activityIndicator: UIActivityIndicatorView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoveryFiltersLoaderCell.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoveryFiltersStaticRowCell.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var filterTitleLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/DiscoveryFilters\/Views\/Cells\/DiscoverySelectableRowCell.swift","line":6},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backgroundStripView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/EmptyStates\/Controller\/EmptyStatesViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var mainButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/EmptyStates\/Controller\/EmptyStatesViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var mainButtonBottomLayoutConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/EmptyStates\/Controller\/EmptyStatesViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var headlineStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/EmptyStates\/Controller\/EmptyStatesViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var stripViewTopLayoutConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/EmptyStates\/Controller\/EmptyStatesViewController.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var subtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/EmptyStates\/Controller\/EmptyStatesViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/EmptyStates\/Controller\/EmptyStatesViewController.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var disclaimerTextView: UITextView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var confirmationLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var createAccountButton: UIButton!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var emailLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var loginButton: UIButton!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var loginLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var newsletterLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var newsletterSwitch: UISwitch!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var rootStackView: UIStackView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FacebookConfirmation\/Controller\/FacebookConfirmationViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var avatarImageView: CircleAvatarImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsFriendFollowCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsFriendFollowCell.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendLocationLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsFriendFollowCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectsBackedLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsFriendFollowCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectsCreatedLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsFriendFollowCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var followButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsFriendFollowCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var unfollowButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsFriendFollowCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backedProjectsLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsStatsCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var bulletSeparatorView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsStatsCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendsLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsStatsCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var friendsCountLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsStatsCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backedProjectsCountLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsStatsCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var followAllButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/FindFriends\/Views\/Cells\/FindFriendsStatsCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var tableView: UITableView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Help\/Controller\/HelpViewController.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var arrowImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Help\/Views\/Cells\/SettingsTableViewCell.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Help\/Views\/Cells\/SettingsTableViewCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var logoImageView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/HelpWeb\/Controller\/HelpWebViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var emailTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var forgotPasswordButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var formBackgroundView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var formDividerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var loginButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var passwordTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var rootStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var showHidePasswordButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func loginButtonPressed(_: UIButton) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":187},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func resetPasswordButtonPressed(_: UIButton) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Login\/Controller\/LoginViewController.swift","line":208},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backgroundView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageBanner\/Controller\/MessageBannerViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var iconImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageBanner\/Controller\/MessageBannerViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var messageLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageBanner\/Controller\/MessageBannerViewController.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction private func bannerViewPanned(_ sender: UIPanGestureRecognizer) {","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageBanner\/Controller\/MessageBannerViewController.swift","line":200},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction private func bannerViewTapped(_: Any) {","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageBanner\/Controller\/MessageBannerViewController.swift","line":229},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" HStack(alignment: .center, spacing: Constants.defaultSpacing) {","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageBanner\/Views\/MessageBannerView.swift","line":19},"ruleIdentifier":"accessibility_trait_for_button","ruleName":"Accessibility Trait for Button","ruleDescription":"All views with tap gestures added should include the .isButton or the .isLink accessibility traits","severity":"warning","reason":"All views with tap gestures added should include the .isButton or the .isLink accessibility traits"}},{"text":" @IBOutlet private var bodyTextView: UITextView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageDialog\/Controller\/MessageDialogViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var bottomConstraint: NSLayoutConstraint!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageDialog\/Controller\/MessageDialogViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var cancelButton: UIBarButtonItem!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageDialog\/Controller\/MessageDialogViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var loadingView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageDialog\/Controller\/MessageDialogViewController.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var nameLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageDialog\/Controller\/MessageDialogViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var postButton: UIBarButtonItem!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageDialog\/Controller\/MessageDialogViewController.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction fileprivate func cancelButtonPressed() {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageDialog\/Controller\/MessageDialogViewController.swift","line":86},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction fileprivate func postButtonPressed() {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageDialog\/Controller\/MessageDialogViewController.swift","line":90},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var footerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Controller\/MessageThreadsViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var mailboxLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Controller\/MessageThreadsViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction fileprivate func mailboxButtonPressed() {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Controller\/MessageThreadsViewController.swift","line":127},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction fileprivate func searchButtonPressed() {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Controller\/MessageThreadsViewController.swift","line":131},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction fileprivate func refresh() {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Controller\/MessageThreadsViewController.swift","line":135},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var avatarImageView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var bodyLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var dateLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var dividerView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var nameLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var projectNameLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var replyIndicator: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var unreadIndicatorView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var titleLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/MessageThreads\/Views\/Cells\/MessageThreadEmptyStateCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var replyBarButtonItem: UIBarButtonItem!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Controller\/MessagesViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction fileprivate func replyButtonPressed() {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Controller\/MessagesViewController.swift","line":160},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" case let (cell as BackingCell, value as (Backing, Project, Bool)):","violation":{"location":{"character":45,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Datasource\/MessagesDataSource.swift","line":58},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" @IBOutlet private var backingInfoButton: UIButton!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/BackingCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var deliveryLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/BackingCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var dividerView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/BackingCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var pledgedLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/BackingCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var rewardLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/BackingCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var rootStackView: UIStackView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/BackingCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func configureWith(value: (backing: Backing, project: Project, isFromBacking: Bool)) {","violation":{"location":{"character":38,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/BackingCell.swift","line":34},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" @IBOutlet private var avatarImageView: UIImageView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/MessageCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var dividerView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/MessageCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var nameLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/MessageCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var timestampLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/MessageCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var bodyTextView: UITextView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/MessageCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet var participantStackView: UIStackView!","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/MessageCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var titleLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/MessagesEmptyStateCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var subTitleLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/MessagesEmptyStateCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/ProjectBannerCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/ProjectBannerCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var creatorNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Messages\/Views\/Cells\/ProjectBannerCell.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" Button(action: {}) {","violation":{"location":{"character":24,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Onboarding\/Views\/OnboardingCTAView.swift","line":85},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" Image(OnboardingStyles.backgroundImage)","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Onboarding\/Views\/OnboardingView.swift","line":40},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" }) {","violation":{"location":{"character":10,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Onboarding\/Views\/OnboardingView.swift","line":108},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" init() {","violation":{"location":{"character":3,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaginationExample\/PaginationExampleViewModel.swift","line":20},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 12"}},{"text":" @IBOutlet private var tableView: UITableView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Controller\/PaymentMethodSettingsViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var stackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/Cells\/CreditCardCell.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/Cells\/CreditCardCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardNumberLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/Cells\/CreditCardCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var expirationDateLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/Cells\/CreditCardCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var addCardButton: UIButton!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/PaymentMethodsFooterView.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var separatorView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/PaymentMethodsFooterView.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var loadingIndicator: UIActivityIndicatorView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/PaymentMethodsFooterView.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func addNewCardButtonTapped(_: Any) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/PaymentMethodsFooterView.swift","line":39},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PaymentMethods\/Views\/SettingsTableViewHeader.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" ) { _ in }","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgePaymentMethods\/Controller\/PledgeExpandableRewardsHeaderViewController.swift","line":169},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" Image(PPOStyles.editAddressImage)","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/CardView\/PPOAddressSummary.swift","line":26},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" Image(PPOStyles.timeImage)","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/CardView\/PPOAlertFlag.swift","line":39},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" Image(PPOStyles.alertImage)","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/CardView\/PPOAlertFlag.swift","line":41},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" public static func == (lhs: PPOCardEvent, rhs: PPOCardEvent) -> Bool {","violation":{"location":{"character":10,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/CardView\/PPOProjectCardViewModel.swift","line":18},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 11"}},{"text":" Image(PPOStyles.sendMessageImage)","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/CardView\/PPOProjectCreator.swift","line":26},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" Image(PPOStyles.chevronRight)","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/CardView\/PPOProjectDetails.swift","line":53},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" (addressId: String, backingId: String, onProgress: (PPOActionState) -> Void),","violation":{"location":{"character":5,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOContainerViewModel.swift","line":223},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" ) { card in","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/PledgedProjectsOverview\/PPOView.swift","line":52},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" @IBOutlet fileprivate var nameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectNotifications\/Views\/Cells\/ProjectNotificationCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var notificationSwitch: UISwitch!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectNotifications\/Views\/Cells\/ProjectNotificationCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" private func bindProjectPageViewModel() {","violation":{"location":{"character":11,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Controller\/ProjectPageViewController.swift","line":303},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 16"}},{"text":" if let _ = tableView.cellForRow(at: mainCellIndexPath) as? ProjectPamphletMainCell,","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Controller\/ProjectPageViewController.swift","line":834},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":" @IBOutlet fileprivate var playButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Controller\/VideoViewController.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Controller\/VideoViewController.swift","line":25},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var videoContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Controller\/VideoViewController.swift","line":26},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" public override func observeValue(","violation":{"location":{"character":19,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Controller\/VideoViewController.swift","line":182},"ruleIdentifier":"block_based_kvo","ruleName":"Block Based KVO","ruleDescription":"Prefer the new block based KVO API with keypaths when using Swift 3.2 or later","severity":"warning","reason":"Prefer the new block based KVO API with keypaths when using Swift 3.2 or later"}},{"text":" func load(","violation":{"location":{"character":3,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":77},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"error","reason":"Function should have complexity 10 or less; currently complexity is 27"}},{"text":" override func configureCell(tableCell cell: UITableViewCell, withValue value: Any) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":342},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 20"}},{"text":" case let (cell as AudioVideoViewElementCell, value as (AudioVideoViewElement, AVPlayer?, UIImage?)):","violation":{"location":{"character":59,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":374},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" if !seenURLStrings.contains(imageElement.src) {","violation":{"location":{"character":11,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":402},"ruleIdentifier":"for_where","ruleName":"Prefer For-Where","ruleDescription":"`where` clauses are preferred over a single `if` inside a `for`","severity":"warning","reason":"`where` clauses are preferred over a single `if` inside a `for`"}},{"text":" .value as? (AudioVideoViewElement, AVPlayer?, UIImage?)","violation":{"location":{"character":22,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":417},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" if !seenURLStrings.contains(audioVideoElement.sourceURLString) {","violation":{"location":{"character":11,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":427},"ruleIdentifier":"for_where","ruleName":"Prefer For-Where","ruleDescription":"`where` clauses are preferred over a single `if` inside a `for`","severity":"warning","reason":"`where` clauses are preferred over a single `if` inside a `for`"}},{"text":" ) -> (","violation":{"location":{"character":8,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":468},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" if allURLStrings[index] == imageViewElementItem.element.src {","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":484},"ruleIdentifier":"for_where","ruleName":"Prefer For-Where","ruleDescription":"`where` clauses are preferred over a single `if` inside a `for`","severity":"warning","reason":"`where` clauses are preferred over a single `if` inside a `for`"}},{"text":" let _ = self.items(in: section.rawValue)[indexPath.row].value as? (ImageViewElement, UIImage?) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":514},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":" .value as? (AudioVideoViewElement, AVPlayer?, UIImage?),","violation":{"location":{"character":19,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":551},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" .value as? (AudioVideoViewElement, AVPlayer, UIImage?) {","violation":{"location":{"character":19,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Datasource\/Datasource\/ProjectPageViewControllerDataSource.swift","line":567},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" func configureWith(value: (element: AudioVideoViewElement, player: AVPlayer?, thumbnailImage: UIImage?)) {","violation":{"location":{"character":29,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/AudioVideoViewElementCell.swift","line":39},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" override func observeValue(","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/AudioVideoViewElementCell.swift","line":142},"ruleIdentifier":"block_based_kvo","ruleName":"Block Based KVO","ruleDescription":"Prefer the new block based KVO API with keypaths when using Swift 3.2 or later","severity":"warning","reason":"Prefer the new block based KVO API with keypaths when using Swift 3.2 or later"}},{"text":" @IBOutlet fileprivate var backersSubtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":27},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backersTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":28},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var blurbAndOverviewStackview: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":29},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var blurbStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":30},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var categoryStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":31},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var categoryAndLocationStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":32},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var categoryIconImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":33},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var categoryNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":34},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var contentStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":35},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var conversionLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":36},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate(set) var creatorButton: UIButton! \/\/ Made visible so it can be used as a popover target","violation":{"location":{"character":30,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":37},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var creatorImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":38},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var creatorLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":39},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var creatorStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":40},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var deadlineSubtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":41},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var deadlineTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":42},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressBarView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":43},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var fundingProgressContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":44},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var locationImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":45},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var locationNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":46},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var locationStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":47},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var pledgeSubtitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":48},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var pledgedTitleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":49},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectBlurbLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":50},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":51},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameAndCreatorStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":52},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":53},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var progressBarAndStatsStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":54},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var stateLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":55},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var statsStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":56},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backingContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":57},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backingContainerViewLeadingConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":58},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backingLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletMainCell.swift","line":59},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var countContainerView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletSubpageCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var countLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletSubpageCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var rootStackView: UIStackView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletSubpageCell.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var separatorView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletSubpageCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var subpageLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletSubpageCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var topSeparatorView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/Cells\/ProjectPamphletSubpageCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" Image(\"chevron-right\")","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/ReportProjectLabelView.swift","line":21},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" Image(\"info\")","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ProjectPage\/Views\/ReportProjectLabelView.swift","line":33},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" RowView(","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ReportProject\/ReportProjectInfoView.swift","line":36},"ruleIdentifier":"accessibility_trait_for_button","ruleName":"Accessibility Trait for Button","ruleDescription":"All views with tap gestures added should include the .isButton or the .isLink accessibility traits","severity":"warning","reason":"All views with tap gestures added should include the .isButton or the .isLink accessibility traits"}},{"text":" Image(self.isExpanded ? \"arrow-down\" : \"chevron-right\")","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ReportProject\/ReportProjectInfoView.swift","line":101},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" if string.lowercased().contains(linkType.stringLiteral().lowercased()) {","violation":{"location":{"character":5,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ReportProject\/ReportProjectInfoView.swift","line":161},"ruleIdentifier":"for_where","ruleName":"Prefer For-Where","ruleDescription":"`where` clauses are preferred over a single `if` inside a `for`","severity":"warning","reason":"`where` clauses are preferred over a single `if` inside a `for`"}},{"text":" @IBOutlet private var emailTextFieldBackgroundView: UIView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ResetPassword\/Controller\/ResetPasswordViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var emailTextField: UITextField!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ResetPassword\/Controller\/ResetPasswordViewController.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var resetPasswordButton: UIButton!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ResetPassword\/Controller\/ResetPasswordViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var rootStackView: UIStackView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ResetPassword\/Controller\/ResetPasswordViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func emailTextFieldEditingChanged(_ textfield: UITextField) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ResetPassword\/Controller\/ResetPasswordViewController.swift","line":77},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func resetPasswordPressed(_: UIButton) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ResetPassword\/Controller\/ResetPasswordViewController.swift","line":82},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal var delegate: RewardCardViewDelegate? {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/RewardsCollection\/Views\/RewardCardContainerView.swift","line":12},"ruleIdentifier":"weak_delegate","ruleName":"Weak Delegate","ruleDescription":"Delegates should be weak to avoid reference cycles","severity":"warning","reason":"Delegates should be weak to avoid reference cycles"}},{"text":" @IBOutlet fileprivate var searchBarContainerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Controller\/SearchViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/DiscoverProjectsTitleCell.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var cardView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataBackgroundView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataIconImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var metadataLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var percentFundedLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var progressBarView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var progressStaticView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectInfoOverlayView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectInfoStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectNameLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separateView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var statsStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Search\/Views\/Cell\/MostPopularSearchProjectCell.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var searchTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SearchMessages\/SearchMessagesViewController.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var loadingView: UIActivityIndicatorView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SearchMessages\/SearchMessagesViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction fileprivate func searchTextChanged(_ textField: UITextField) {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SearchMessages\/SearchMessagesViewController.swift","line":71},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var tableView: UITableView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Settings\/Controller\/SettingsViewController.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" var showConfirmLogoutPrompt: Signal<(message: String, cancel: String, confirm: String), Never> { get }","violation":{"location":{"character":39,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Settings\/ViewModel\/SettingsViewModel.swift","line":25},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let showConfirmLogoutPrompt: Signal<(message: String, cancel: String, confirm: String), Never>","violation":{"location":{"character":46,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Settings\/ViewModel\/SettingsViewModel.swift","line":115},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" @IBOutlet fileprivate var arrowImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Settings\/Views\/Cells\/FindFriendsCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Settings\/Views\/Cells\/FindFriendsCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var titleLabel: UILabel!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Settings\/Views\/SettingsFooterView.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Settings\/Views\/SettingsHeaderView.swift","line":6},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet private var tableView: UITableView!","violation":{"location":{"character":21,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsAccount\/Controller\/SettingsAccountViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" } else if let _ = self[indexPath] as? Bool {","violation":{"location":{"character":19,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsAccount\/Datasource\/SettingsAccountDataSource.swift","line":77},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":"public typealias SettingsAccountData = (","violation":{"location":{"character":40,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsAccount\/ViewModel\/SettingsAccountViewModel.swift","line":11},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" @IBOutlet fileprivate var arrowIconImage: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsAccount\/Views\/Cells\/SettingsAccountWarningCell.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsAccount\/Views\/Cells\/SettingsAccountWarningCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var warningIconImage: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsAccount\/Views\/Cells\/SettingsAccountWarningCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var tableView: UITableView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Controller\/SettingsNewslettersViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var newslettersDescriptionLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var newslettersLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var newslettersSwitch: UISwitch!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorViews: [UIView]!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func newslettersSwitchTapped(_ sender: UISwitch) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersCell.swift","line":85},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var descriptionLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersTopCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var newsletterSwitch: UISwitch!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersTopCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersTopCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorViews: [UIView]!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersTopCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func newsletterSwitchTapped(_ sender: UISwitch) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNewsletters\/Views\/Cells\/SettingsNewslettersTopCell.swift","line":81},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var tableView: UITableView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Controller\/SettingsNotificationsViewController.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var emailFrequencyPickerView: UIPickerView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Controller\/SettingsNotificationsViewController.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var emailPickerViewTopConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Controller\/SettingsNotificationsViewController.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var arrowImageView: UIImageView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var emailNotificationsButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectCountLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var pushNotificationsButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var stackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func emailNotificationsButtonTapped(_ sender: UIButton) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":151},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func pushNotificationsButtonTapped(_ sender: UIButton) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":155},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func cellBackgroundTapped(_: Any) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationCell.swift","line":159},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationPickerCell.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var currentEmailFrequencyLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationPickerCell.swift","line":9},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsNotifications\/Views\/Cells\/SettingsNotificationPickerCell.swift","line":10},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var followingLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsFollowCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var followStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsFollowCell.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var followingSwitch: UISwitch!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsFollowCell.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorView: [UIView]!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsFollowCell.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func followingPrivacySwitchTapped(_ followingPrivacySwitch: UISwitch) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsFollowCell.swift","line":86},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var deleteAccountButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacyDeleteOrRequestCell.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var deleteAccountLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacyDeleteOrRequestCell.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorView: [UIView]!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacyDeleteOrRequestCell.swift","line":24},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var recommendationsLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacyRecommendationCell.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var recommendationsSwitch: UISwitch!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacyRecommendationCell.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorView: [UIView]!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacyRecommendationCell.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func recommendationsSwitch(_ recommendationsSwitch: UISwitch) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacyRecommendationCell.swift","line":67},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var privacyInfoLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacyStaticCell.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var primaryDescriptionLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacySwitchCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacySwitchCell.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var secondaryDescriptionLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacySwitchCell.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var switchButton: UISwitch!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacySwitchCell.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorViews: [UIView]!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacySwitchCell.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction func switchToggled(_ sender: UISwitch) {","violation":{"location":{"character":13,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SettingsPrivacy\/Views\/Cells\/SettingsPrivacySwitchCell.swift","line":84},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" Image(uiImage: checkmark)","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ShippingRules\/ShippingLocationsView.swift","line":114},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" VStack(spacing: 0) {","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortFilter\/FilterCategory\/FilterCategoryView.swift","line":27},"ruleIdentifier":"accessibility_trait_for_button","ruleName":"Accessibility Trait for Button","ruleDescription":"All views with tap gestures added should include the .isButton or the .isLink accessibility traits","severity":"warning","reason":"All views with tap gestures added should include the .isButton or the .isLink accessibility traits"}},{"text":" Image(uiImage: icon)","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortFilter\/FilterRootView\/FilterSectionButton.swift","line":23},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" Image(uiImage: self.image)","violation":{"location":{"character":9,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortFilter\/HeaderView\/PillButtons.swift","line":113},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" Image(uiImage: carat)","violation":{"location":{"character":11,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortFilter\/HeaderView\/PillButtons.swift","line":145},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" Image(uiImage: image)","violation":{"location":{"character":11,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortFilter\/HeaderView\/PillButtons.swift","line":168},"ruleIdentifier":"accessibility_label_for_image","ruleName":"Accessibility Label for Image","ruleDescription":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility","severity":"warning","reason":"Images that provide context should have an accessibility label or should be explicitly hidden from accessibility"}},{"text":" }) {","violation":{"location":{"character":10,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortFilter\/SortView\/SortView.swift","line":37},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" VStack(spacing: 0) {","violation":{"location":{"character":7,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortFilter\/SortView\/SortView.swift","line":50},"ruleIdentifier":"accessibility_trait_for_button","ruleName":"Accessibility Trait for Button","ruleDescription":"All views with tap gestures added should include the .isButton or the .isLink accessibility traits","severity":"warning","reason":"All views with tap gestures added should include the .isButton or the .isLink accessibility traits"}},{"text":" @IBOutlet fileprivate var borderLineView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var indicatorView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var indicatorViewLeadingConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var indicatorViewWidthConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":19},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var scrollView: UIScrollView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":20},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var sortsStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":21},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var sortsStackViewLeadingConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":22},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var sortsStackViewTrailingConstraint: NSLayoutConstraint!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":23},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" |> UIStackView.lens.arrangedSubviews .~ sorts.enumerated().map { idx, _ in","violation":{"location":{"character":77,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/SortPager\/SortPagerViewController.swift","line":144},"ruleIdentifier":"unused_enumerated","ruleName":"Unused Enumerated","ruleDescription":"When the index or the item is not used, `.enumerated()` can be removed.","severity":"warning","reason":"When the item is not used, `.indices` should be used instead of `.enumerated()`"}},{"text":" @IBOutlet fileprivate var closeButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Controller\/ThanksViewController.swift","line":11},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var shareMoreButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Controller\/ThanksViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var projectsTableView: UITableView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Controller\/ThanksViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var backedLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Controller\/ThanksViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var recommendationsLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Controller\/ThanksViewController.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var separatorView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Controller\/ThanksViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var thankYouLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Controller\/ThanksViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var headerView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Controller\/ThanksViewController.swift","line":18},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var seeAllProjectsButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/ThanksProjects\/Views\/Cells\/ThanksCategoryCell.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var codeTextField: UITextField!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":12},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var formBackgroundView: UIView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":13},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var formStackView: UIStackView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var resendButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":15},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var submitButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":16},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleLabel: UILabel!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":17},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func codeEditingChanged(_ textField: UITextField) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":112},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func resendButtonPressed(_: AnyObject) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":117},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" internal func submitButtonPressed(_: AnyObject) {","violation":{"location":{"character":12,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/TwoFactorAuthentication\/Controller\/TwoFactorViewController.swift","line":122},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var shareButton: UIBarButtonItem!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Update\/Controller\/UpdateViewController.swift","line":14},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBAction fileprivate func shareButtonTapped() {","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Update\/Controller\/UpdateViewController.swift","line":123},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" -> SignalProducer<(WKNavigationActionData, Project, RefTag), Never> in","violation":{"location":{"character":27,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Features\/Update\/ViewModel\/UpdateViewModel.swift","line":119},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" nonmutating set {","violation":{"location":{"character":5,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/Library\/UIImageView+URL.swift","line":96},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" @IBOutlet fileprivate var activityIndicator: UIActivityIndicatorView!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/SharedViews\/LoadingBarButtonItemView.swift","line":7},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" @IBOutlet fileprivate var titleButton: UIButton!","violation":{"location":{"character":25,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/SharedViews\/LoadingBarButtonItemView.swift","line":8},"ruleIdentifier":"prohibited_interface_builder","ruleName":"Prohibited Interface Builder","ruleDescription":"Creating views using Interface Builder should be avoided","severity":"warning","reason":"Creating views using Interface Builder should be avoided"}},{"text":" private let transitioningDelegate = BottomSheetTransitioningDelegate()","violation":{"location":{"character":11,"file":"Kickstarter-Framework\/Sources\/Kickstarter-Framework\/Kickstarter-iOS\/SharedViews\/Presenters\/BottomSheetPresenter.swift","line":21},"ruleIdentifier":"weak_delegate","ruleName":"Weak Delegate","ruleDescription":"Delegates should be weak to avoid reference cycles","severity":"warning","reason":"Delegates should be weak to avoid reference cycles"}},{"text":" ) { [weak self] braze in","violation":{"location":{"character":7,"file":"Kickstarter-iOS\/AppDelegate.swift","line":495},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" let multipartTail = \"--\\(boundary)--\\r\\n\".data(using: .utf8)","violation":{"location":{"character":27,"file":"KsApi\/Sources\/KsApi\/extensions\/NSURLSession.swift","line":145},"ruleIdentifier":"non_optional_string_data_conversion","ruleName":"Non-optional String -> Data Conversion","ruleDescription":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`","severity":"warning","reason":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`"}},{"text":" let _ = childValue.children().first else {","violation":{"location":{"character":15,"file":"KsApi\/Sources\/KsApi\/lib\/HTML Parser\/Element+Helpers.swift","line":76},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":" private func parse(","violation":{"location":{"character":11,"file":"KsApi\/Sources\/KsApi\/lib\/HTML Parser\/HTMLParser.swift","line":23},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 11"}},{"text":" (method: Method, path: String, query: [String: Any], file: (name: UploadParam, url: URL)?) {","violation":{"location":{"character":5,"file":"KsApi\/Sources\/KsApi\/lib\/Route.swift","line":59},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" public static func failableComment(","violation":{"location":{"character":17,"file":"KsApi\/Sources\/KsApi\/models\/Comment.swift","line":57},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"warning","reason":"Function should have 5 parameters or less: it currently has 6"}},{"text":" func validForAPIV1() -> Bool {","violation":{"location":{"character":3,"file":"KsApi\/Sources\/KsApi\/models\/DiscoveryParams.swift","line":227},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 17"}},{"text":" if let _ = self.percentRaised {","violation":{"location":{"character":12,"file":"KsApi\/Sources\/KsApi\/models\/DiscoveryParams.swift","line":260},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":" if let _ = self.location {","violation":{"location":{"character":12,"file":"KsApi\/Sources\/KsApi\/models\/DiscoveryParams.swift","line":264},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":" if let _ = self.amountRaised {","violation":{"location":{"character":12,"file":"KsApi\/Sources\/KsApi\/models\/DiscoveryParams.swift","line":268},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":" if let _ = self.goal {","violation":{"location":{"character":12,"file":"KsApi\/Sources\/KsApi\/models\/DiscoveryParams.swift","line":272},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":" private static func notifications(","violation":{"location":{"character":11,"file":"KsApi\/Sources\/KsApi\/models\/graphql\/adapters\/User+UserFragment.swift","line":121},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 13"}},{"text":" public func fetch<Query: GraphQLQuery>(","violation":{"location":{"character":10,"file":"KsApi\/Sources\/KsApiTests\/MockApolloClient.swift","line":34},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"warning","reason":"Function should have 5 parameters or less: it currently has 6"}},{"text":" public func perform<Mutation: GraphQLMutation>(","violation":{"location":{"character":10,"file":"KsApi\/Sources\/KsApiTests\/MockApolloClient.swift","line":69},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"warning","reason":"Function should have 5 parameters or less: it currently has 6"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/extensions\/MockGraphQLClient+CombineTests.swift","line":16},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/extensions\/MockGraphQLClient+CombineTests.swift","line":30},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/extensions\/MockGraphQLClient+CombineTests.swift","line":57},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":9,"file":"KsApi\/Sources\/KsApiTests\/lib\/HTML Parser\/HTMLParserTests.swift","line":243},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/lib\/HTML Parser\/HTMLParserTests.swift","line":269},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/lib\/HTML Parser\/HTMLParserTests.swift","line":299},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/lib\/HTML Parser\/HTMLParserTests.swift","line":329},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/ProjectAndBackingEnvelopeTests.swift","line":22},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/ProjectAndBackingEnvelopeTests.swift","line":43},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/ProjectAndBackingEnvelopeTests.swift","line":66},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/ProjectAndBackingEnvelopeTests.swift","line":91},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/CategoryEnvelope+FetchCategoryQueryDataTests.swift","line":10},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/CommentRepliesEnvelope+GraphCommentRepliesEnvelopeTests.swift","line":9},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/CommentRepliesEnvelope+GraphCommentRepliesEnvelopeTests.swift","line":14},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/CommentsEnvelope+GraphCommentsEnvelopeTests.swift","line":11},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/CommentsEnvelope+GraphCommentsEnvelopeTests.swift","line":26},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/DeletePaymentSourceEnvelope+DeletePaymentSourceMutation.DataTests.swift","line":16},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/FetchProjectsEnvelope+FetchBackerProjectsQueryDataTests.swift","line":11},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/FetchProjectsEnvelope+FetchBackerProjectsQueryDataTests.swift","line":25},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/PostCommentEnvelope+PostCommentMutationDataTests.swift","line":39},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/PostCommentEnvelope+PostCommentMutationDataTests.swift","line":58},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/Project+FetchAddOnsQueryDataTests.swift","line":11},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/Project+FetchAddOnsQueryDataTests.swift","line":26},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/Project+FetchProjectQueryDataTests.swift","line":27},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/Project+FetchProjectRewardsByIdQueryDataTests.swift","line":14},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/Project+FetchProjectRewardsByIdQueryDataTests.swift","line":73},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/RootCategoriesEnvelope+FetchRootCategoriesEnvelopeDataTests.swift","line":56},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/UserCreditCards+UserFragmentTests.swift","line":19},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/UserCreditCards+UserFragmentTests.swift","line":33},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/UserEnvelope+GraphUserEnvelopeTests.swift","line":11},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/UserEnvelope+GraphUserEnvelopeTests.swift","line":46},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"KsApi\/Sources\/KsApiTests\/models\/graphql\/adapters\/UserEnvelope+GraphUserEnvelopeTests.swift","line":81},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"Library-Keychain-iOSTests\/KeychainTests.swift","line":39},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"Library-Keychain-iOSTests\/KeychainTests.swift","line":49},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"Library-Keychain-iOSTests\/KeychainTests.swift","line":61},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"Library-Keychain-iOSTests\/KeychainTests.swift","line":71},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"Library-Keychain-iOSTests\/KeychainTests.swift","line":78},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"Library-Keychain-iOSTests\/KeychainTests.swift","line":91},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"Library-Keychain-iOSTests\/KeychainTests.swift","line":102},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" public final class func doBadSwizzleStuff() {","violation":{"location":{"character":3,"file":"Library\/Sources\/Library\/Library\/DataSource\/UIView-Extensions.swift","line":36},"ruleIdentifier":"static_over_final_class","ruleName":"Static Over Final Class","ruleDescription":"Prefer `static` over `class` when the declaration is not allowed to be overridden in child classes due to its context being final. Likewise, the compiler complains about `open` being used in `final` classes.","severity":"warning","reason":"Prefer `static` over `final class`"}},{"text":" public override class var layerClass: AnyClass {","violation":{"location":{"character":3,"file":"Library\/Sources\/Library\/Library\/GradientView.swift","line":5},"ruleIdentifier":"static_over_final_class","ruleName":"Static Over Final Class","ruleDescription":"Prefer `static` over `class` when the declaration is not allowed to be overridden in child classes due to its context being final. Likewise, the compiler complains about `open` being used in `final` classes.","severity":"warning","reason":"Prefer `static` over `class` in a final class"}},{"text":" public func url(withBaseUrl baseUrl: URL) -> URL? {","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/HelpType.swift","line":80},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 12"}},{"text":" public typealias Change = (","violation":{"location":{"character":29,"file":"Library\/Sources\/Library\/Library\/Keyboard.swift","line":6},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" let password = String(decoding: passwordData, as: UTF8.self)","violation":{"location":{"character":20,"file":"Library\/Sources\/Library\/Library\/Keychain.swift","line":131},"ruleIdentifier":"optional_data_string_conversion","ruleName":"Optional Data -> String Conversion","ruleDescription":"Prefer failable `String(bytes:encoding:)` initializer when converting `Data` to `String`","severity":"warning","reason":"Prefer failable `String(bytes:encoding:)` initializer when converting `Data` to `String`"}},{"text":" let isRecognizedEmailHost = recognizedEmailHosts.reduce(false, hostRecognizer)","violation":{"location":{"character":52,"file":"Library\/Sources\/Library\/Library\/Navigation.swift","line":532},"ruleIdentifier":"reduce_boolean","ruleName":"Reduce Boolean","ruleDescription":"Prefer using `.allSatisfy()` or `.contains()` over `reduce(true)` or `reduce(false)`.","severity":"warning","reason":"Use `contains` instead"}},{"text":" let isRecognizedHost = recognizedHosts.reduce(false, hostRecognizer)","violation":{"location":{"character":42,"file":"Library\/Sources\/Library\/Library\/Navigation.swift","line":541},"ruleIdentifier":"reduce_boolean","ruleName":"Reduce Boolean","ruleDescription":"Prefer using `.allSatisfy()` or `.contains()` over `reduce(true)` or `reduce(false)`.","severity":"warning","reason":"Use `contains` instead"}},{"text":" public static func paymentRequest(","violation":{"location":{"character":17,"file":"Library\/Sources\/Library\/Library\/PKPaymentRequest+Helpers.swift","line":18},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"warning","reason":"Function should have 5 parameters or less: it currently has 6"}},{"text":" Button(action: { self.viewModel.didSelect(page: page) }) {","violation":{"location":{"character":62,"file":"Library\/Sources\/Library\/Library\/PagedContainer\/PagedTabBar.swift","line":20},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":"public func paginate<Cursor, Value: Equatable, Envelope, ErrorEnvelope, RequestParams>(","violation":{"location":{"character":8,"file":"Library\/Sources\/Library\/Library\/Paginate.swift","line":40},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"warning","reason":"Function should have 5 parameters or less: it currently has 7"}},{"text":" (","violation":{"location":{"character":3,"file":"Library\/Sources\/Library\/Library\/Paginate.swift","line":52},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"public func passwordFormValid(_ requirements: (notEmpty: Bool, match: Bool, length: Bool)) -> Bool {","violation":{"location":{"character":47,"file":"Library\/Sources\/Library\/Library\/PasswordValidation.swift","line":9},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public init(code: String) {","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/RefInfo.swift","line":54},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"error","reason":"Function should have complexity 10 or less; currently complexity is 49"}},{"text":" func allProjectsString() -> String {","violation":{"location":{"character":3,"file":"Library\/Sources\/Library\/Library\/RootCategory.swift","line":31},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 16"}},{"text":"typealias SanitizedPledgeParams = (pledgeTotal: String, rewardIds: [String], locationId: String?)","violation":{"location":{"character":35,"file":"Library\/Sources\/Library\/Library\/SharedFunctions.swift","line":258},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public func checkoutProperties(","violation":{"location":{"character":8,"file":"Library\/Sources\/Library\/Library\/SharedFunctions.swift","line":571},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"warning","reason":"Function should have 5 parameters or less: it currently has 8"}},{"text":"\/\/ swiftlint:disable valid_docs","violation":{"location":{"character":22,"file":"Library\/Sources\/Library\/Library\/Strings.swift","line":7},"ruleIdentifier":"blanket_disable_command","ruleName":"Blanket Disable Command","ruleDescription":"`swiftlint:disable` commands should use `next`, `this` or `previous` to disable rules for a single line, or `swiftlint:enable` to re-enable the rules immediately after the violations to be ignored, instead of disabling the rule for the rest of the file.","severity":"warning","reason":"Use 'next', 'this' or 'previous' instead to disable the 'valid_docs' rule once, or re-enable it as soon as possible`"}},{"text":"\/\/ swiftlint:disable valid_docs","violation":{"location":{"character":32,"file":"Library\/Sources\/Library\/Library\/Strings.swift","line":7},"ruleIdentifier":"superfluous_disable_command","ruleName":"Superfluous Disable Command","ruleDescription":"SwiftLint 'disable' commands are superfluous when the disabled rule would not have triggered a violation in the disabled region. Use \" - \" if you wish to document a command.","severity":"warning","reason":"'valid_docs' is not a valid SwiftLint rule; remove it from the disable command"}},{"text":"\/\/ swiftlint:disable line_length","violation":{"location":{"character":22,"file":"Library\/Sources\/Library\/Library\/Strings.swift","line":8},"ruleIdentifier":"blanket_disable_command","ruleName":"Blanket Disable Command","ruleDescription":"`swiftlint:disable` commands should use `next`, `this` or `previous` to disable rules for a single line, or `swiftlint:enable` to re-enable the rules immediately after the violations to be ignored, instead of disabling the rule for the rest of the file.","severity":"warning","reason":"Use 'next', 'this' or 'previous' instead to disable the 'line_length' rule once, or re-enable it as soon as possible`"}},{"text":"\/\/ swiftlint:disable line_length","violation":{"location":{"character":33,"file":"Library\/Sources\/Library\/Library\/Strings.swift","line":8},"ruleIdentifier":"superfluous_disable_command","ruleName":"Superfluous Disable Command","ruleDescription":"SwiftLint 'disable' commands are superfluous when the disabled rule would not have triggered a violation in the disabled region. Use \" - \" if you wish to document a command.","severity":"warning","reason":"'valid_docs' is not a valid SwiftLint rule; remove it from the disable command"}},{"text":" guard let _ = appTrackingTransparency.advertisingIdentifier else { return }","violation":{"location":{"character":15,"file":"Library\/Sources\/Library\/Library\/Tracking\/KSRAnalytics.swift","line":1583},"ruleIdentifier":"unused_optional_binding","ruleName":"Unused Optional Binding","ruleDescription":"Prefer `!= nil` over `let _ =`","severity":"warning","reason":"Prefer `!= nil` over `let _ =`"}},{"text":" set(key) {","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/UIButton+LocalizedKey.swift","line":8},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" set(key) {","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/UIButton+LocalizedKey.swift","line":20},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" set(key) {","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/UIButton+LocalizedKey.swift","line":35},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" set(clear) {","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/UILabel+IBClear.swift","line":8},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" set(key) {","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/UILabel+LocalizedKey.swift","line":11},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" set {}","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/UILabel+LocalizedKey.swift","line":24},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" set {}","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/UILabel+LocalizedKey.swift","line":24},"ruleIdentifier":"unused_setter_value","ruleName":"Unused Setter Value","ruleDescription":"Setter value is not used","severity":"warning","reason":"Setter value is not used"}},{"text":" set(key) {","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/UITextField+LocalizedPlaceholderKey.swift","line":11},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" public final class func doBadSwizzleStuff() {","violation":{"location":{"character":3,"file":"Library\/Sources\/Library\/Library\/UIViewController-Preparation.swift","line":40},"ruleIdentifier":"static_over_final_class","ruleName":"Static Over Final Class","ruleDescription":"Prefer `static` over `class` when the declaration is not allowed to be overridden in child classes due to its context being final. Likewise, the compiler complains about `open` being used in `final` classes.","severity":"warning","reason":"Prefer `static` over `final class`"}},{"text":" func update(","violation":{"location":{"character":3,"file":"Library\/Sources\/Library\/Library\/UseCases\/SearchFilters\/SearchFilters.swift","line":149},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"warning","reason":"Function should have 5 parameters or less: it currently has 8"}},{"text":" public func selectedFilter(_ event: SearchFilterEvent) {","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/UseCases\/SearchFilters\/SearchFiltersUseCase.swift","line":290},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 11"}},{"text":"private func filterModal(toShowForPill pill: SearchFilterPill.FilterType) -> SearchFilterModalType {","violation":{"location":{"character":9,"file":"Library\/Sources\/Library\/Library\/UseCases\/SearchFilters\/SearchFiltersUseCase.swift","line":341},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 12"}},{"text":"private func string(forCategoryId id: String, friendName: String) -> String {","violation":{"location":{"character":9,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ActivityFriendBackingViewModel.swift","line":126},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 16"}},{"text":" fileprivate let surveyResponseCountPositionProperty = MutableProperty<(SurveyResponse, Int, Int)?>(nil)","violation":{"location":{"character":73,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ActivitySurveyResponseCellViewModel.swift","line":82},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" func paymentAuthorizationDidAuthorizePayment(paymentData: (","violation":{"location":{"character":61,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ApplePayTokenUseCase.swift","line":14},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" private let (pkPaymentSignal, pkPaymentObserver) = Signal<(","violation":{"location":{"character":61,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ApplePayTokenUseCase.swift","line":118},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public func paymentAuthorizationDidAuthorizePayment(paymentData: (","violation":{"location":{"character":68,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ApplePayTokenUseCase.swift","line":123},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" var goToProject: Signal<(Project, [Project], RefTag), Never> { get }","violation":{"location":{"character":27,"file":"Library\/Sources\/Library\/Library\/ViewModels\/BackerDashboardProjectsViewModel.swift","line":35},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let goToProject: Signal<(Project, [Project], RefTag), Never>","violation":{"location":{"character":34,"file":"Library\/Sources\/Library\/Library\/ViewModels\/BackerDashboardProjectsViewModel.swift","line":180},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" fileprivate let backingAndProjectAndIsFromBackingProperty = MutableProperty<(Backing, Project, Bool)?>(nil)","violation":{"location":{"character":79,"file":"Library\/Sources\/Library\/Library\/ViewModels\/BackingCellViewModel.swift","line":58},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias CategoryPillCellValue = (name: String, category: KsApi.Category, indexPath: IndexPath?)","violation":{"location":{"character":42,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CategoryPillCellViewModel.swift","line":6},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"private func formFieldsNotEmpty(_ pwds: (first: String, second: String, third: String)) -> Bool {","violation":{"location":{"character":41,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ChangePasswordViewModel.swift","line":193},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias CommentComposerViewData = (","violation":{"location":{"character":44,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentComposerViewModel.swift","line":5},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" private let textViewShouldChangeProperty = MutableProperty<(String?, NSRange, String)?>(nil)","violation":{"location":{"character":62,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentComposerViewModel.swift","line":136},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" var loadFailableReplyIntoDataSource: Signal<(Comment, String, Project), Never> { get }","violation":{"location":{"character":47,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentRepliesViewModel.swift","line":62},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" Signal<(project: Project, commentableId: String, parentId: String, user: User), Never> = Signal","violation":{"location":{"character":14,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentRepliesViewModel.swift","line":198},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" fileprivate let commentProjectProperty = MutableProperty<(Comment, Project, Bool)?>(nil)","violation":{"location":{"character":60,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentRepliesViewModel.swift","line":317},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let loadFailableReplyIntoDataSource: Signal<(Comment, String, Project), Never>","violation":{"location":{"character":54,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentRepliesViewModel.swift","line":360},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (Comment, Project, Update?, Bool),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentsViewModel.swift","line":58},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" var loadCommentsAndProjectIntoDataSource: Signal<([Comment], Project, Bool), Never> { get }","violation":{"location":{"character":52,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentsViewModel.swift","line":63},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" let errorsAndHasRequestedNextPage: Signal<([Comment], Project, Bool), Never> = Signal","violation":{"location":{"character":47,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentsViewModel.swift","line":229},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" Signal<(project: Project, commentableId: String, user: User), Never> = Signal.combineLatest(","violation":{"location":{"character":14,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentsViewModel.swift","line":289},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (Comment, Project, Update?, Bool),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentsViewModel.swift","line":478},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" public let loadCommentsAndProjectIntoDataSource: Signal<([Comment], Project, Bool), Never>","violation":{"location":{"character":59,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CommentsViewModel.swift","line":481},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias ProjectData = (project: Project, projects: [Project], refTag: RefTag)","violation":{"location":{"character":32,"file":"Library\/Sources\/Library\/Library\/ViewModels\/CuratedProjectsViewModel.swift","line":6},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (rows: [ExpandableRow], categoryId: Int?, selectedRowId: Int?),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/DiscoveryFiltersViewModel.swift","line":34},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (rows: [ExpandableRow], categoryId: Int?, selectedRowId: Int?),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/DiscoveryFiltersViewModel.swift","line":182},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" var goToProjectPlaylist: Signal<(Project, [Project], RefTag), Never> { get }","violation":{"location":{"character":35,"file":"Library\/Sources\/Library\/Library\/ViewModels\/DiscoveryPageViewModel.swift","line":95},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let goToProjectPlaylist: Signal<(Project, [Project], RefTag), Never>","violation":{"location":{"character":42,"file":"Library\/Sources\/Library\/Library\/ViewModels\/DiscoveryPageViewModel.swift","line":477},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias DiscoveryProjectCellRowValue = (","violation":{"location":{"character":49,"file":"Library\/Sources\/Library\/Library\/ViewModels\/DiscoveryPostcardViewModel.swift","line":7},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public init() {","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/ViewModels\/DiscoveryProjectCardViewModel.swift","line":62},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 12"}},{"text":" MutableProperty<(element: AudioVideoViewElement, player: AVPlayer?, thumbnailImage: UIImage?)?>(nil)","violation":{"location":{"character":21,"file":"Library\/Sources\/Library\/Library\/ViewModels\/HTML Parser\/AudioVideoViewElementCellViewModel.swift","line":81},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"private func attributedText(textElement: TextViewElement) -> SignalProducer<NSAttributedString, Never> {","violation":{"location":{"character":9,"file":"Library\/Sources\/Library\/Library\/ViewModels\/HTML Parser\/TextViewElementCellViewModel.swift","line":45},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 13"}},{"text":"public typealias SignInWithAppleData = (appId: String, firstName: String?, lastName: String?, token: String)","violation":{"location":{"character":40,"file":"Library\/Sources\/Library\/Library\/ViewModels\/LoginToutViewModel.swift","line":6},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" var backingAndProjectAndIsFromBacking: Signal<(Backing, Project, Bool), Never> { get }","violation":{"location":{"character":49,"file":"Library\/Sources\/Library\/Library\/ViewModels\/MessagesViewModel.swift","line":37},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" .switchMap { value -> SignalProducer<(Backing, Project, Bool), Never> in","violation":{"location":{"character":42,"file":"Library\/Sources\/Library\/Library\/ViewModels\/MessagesViewModel.swift","line":137},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let backingAndProjectAndIsFromBacking: Signal<(Backing, Project, Bool), Never>","violation":{"location":{"character":56,"file":"Library\/Sources\/Library\/Library\/ViewModels\/MessagesViewModel.swift","line":299},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias PillCellData = (","violation":{"location":{"character":33,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PillCellViewModel.swift","line":6},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias PledgeAmountData = (amount: Double, min: Double, max: Double, isValid: Bool)","violation":{"location":{"character":37,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeAmountViewModel.swift","line":8},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"public typealias PledgeAmountViewConfigData = (","violation":{"location":{"character":47,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeAmountViewModel.swift","line":10},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias PledgeCTAPrelaunchState = (","violation":{"location":{"character":44,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeCTAContainerViewViewModel.swift","line":6},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" .map { project -> (Param, Project, Int) in","violation":{"location":{"character":29,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeManagerWebViewModel.swift","line":131},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" fallthrough","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeOverTimePaymentScheduleViewModel.swift","line":130},"ruleIdentifier":"no_fallthrough_only","ruleName":"No Fallthrough only","ruleDescription":"Fallthroughs can only be used if the `case` contains at least one other statement","severity":"warning","reason":"Fallthroughs can only be used if the `case` contains at least one other statement"}},{"text":"public typealias PledgePaymentMethodCellData = (","violation":{"location":{"character":48,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgePaymentMethodCellViewModel.swift","line":8},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"public typealias PledgePaymentMethodsValue = (","violation":{"location":{"character":46,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgePaymentMethodsViewModel.swift","line":15},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"private func statusLabelText(with data: PledgeStatusLabelViewData) -> NSAttributedString? {","violation":{"location":{"character":9,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeStatusLabelViewModel.swift","line":74},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 16"}},{"text":"public typealias PledgeSummaryViewData = (","violation":{"location":{"character":42,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeSummaryViewModel.swift","line":11},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"public typealias PledgeViewCTAContainerViewData = (","violation":{"location":{"character":51,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":7},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"public typealias CreateBackingData = (","violation":{"location":{"character":38,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":17},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"public typealias UpdateBackingData = (","violation":{"location":{"character":38,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":29},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"public typealias PaymentAuthorizationData = (","violation":{"location":{"character":45,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":41},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"public typealias PKPaymentData = (displayName: String, network: String, transactionIdentifier: String)","violation":{"location":{"character":34,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":49},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" paymentData: (displayName: String?, network: String?, transactionIdentifier: String)","violation":{"location":{"character":18,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":69},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (PostCampaignRewardsSummaryViewData, Double?, PledgeSummaryViewData),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":88},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public init() {","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":118},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 11"}},{"text":" -> (CreateBackingData, Bool, String?, Reward, Double, Double) in","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":762},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" private let (pkPaymentSignal, pkPaymentObserver) = Signal<(","violation":{"location":{"character":61,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":984},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public func paymentAuthorizationDidAuthorizePayment(paymentData: (","violation":{"location":{"character":68,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":989},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (PostCampaignRewardsSummaryViewData, Double?, PledgeSummaryViewData),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PledgeViewModel.swift","line":1064},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (PostCampaignRewardsSummaryViewData, Double?, PledgeSummaryViewData),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PostCampaignCheckoutViewModel.swift","line":61},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let configurePledgeRewardsSummaryViewWithData: Signal<(","violation":{"location":{"character":64,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PostCampaignCheckoutViewModel.swift","line":754},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" MutableProperty<(PostCampaignRewardsSummaryViewData, Double?, PledgeSummaryViewData)?>(nil)","violation":{"location":{"character":21,"file":"Library\/Sources\/Library\/Library\/ViewModels\/PostCampaignPledgeRewardsSummaryViewModel.swift","line":141},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (NavigationSection, Either<Project, any ProjectPageParam>, RefTag?),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":118},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" var goToReportProject: Signal<(Bool, String, String), Never> { get }","violation":{"location":{"character":33,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":157},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" var goToRewards: Signal<(Project, RefTag?, String?), Never> { get }","violation":{"location":{"character":27,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":160},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (NavigationSection, Project, RefTag?, [Bool], [URL], SimilarProjectsState),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":201},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" var updateFAQsInDataSource: Signal<(Project, RefTag?, [Bool]), Never> { get }","violation":{"location":{"character":38,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":206},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public init() {","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":231},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 14"}},{"text":" .map { data, shouldPrefix -> (Either<Project, any ProjectPageParam>, RefInfo?, String?, Bool) in","violation":{"location":{"character":36,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":245},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" private let configDataProperty = MutableProperty<(","violation":{"location":{"character":52,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":723},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (NavigationSection, Either<Project, any ProjectPageParam>, RefTag?),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":847},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let goToRewards: Signal<(Project, RefTag?, String?), Never>","violation":{"location":{"character":34,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":871},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let goToReportProject: Signal<(Bool, String, String), Never>","violation":{"location":{"character":40,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":873},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (NavigationSection, Project, RefTag?, [Bool], [URL], SimilarProjectsState),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":887},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" public let updateFAQsInDataSource: Signal<(Project, RefTag?, [Bool]), Never>","violation":{"location":{"character":45,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPageViewModel.swift","line":890},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public typealias Money = (amount: Int, currency: String, symbol: String)","violation":{"location":{"character":28,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPamphletMainCellProperties.swift","line":16},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"typealias ConvertedCurrrencyProjectData = (pledgedAmount: Int, goalAmount: Int, currency: String)","violation":{"location":{"character":43,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ProjectPamphletMainCellViewModel.swift","line":425},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" .map { project, reward, shippingRule -> (Project, Reward, Double) in","violation":{"location":{"character":47,"file":"Library\/Sources\/Library\/Library\/ViewModels\/RewardAddOnCardViewModel.swift","line":74},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias RewardAddOnSelectionContinueCTAViewData = (","violation":{"location":{"character":60,"file":"Library\/Sources\/Library\/Library\/ViewModels\/RewardAddOnSelectionContinueCTAViewModel.swift","line":6},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" rewardsData: ([Reward], Project, Reward, PledgeViewContext, ShippingRule?),","violation":{"location":{"character":16,"file":"Library\/Sources\/Library\/Library\/ViewModels\/RewardAddOnSelectionViewModel.swift","line":437},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":") -> ([Reward], Project, Reward, PledgeViewContext, ShippingRule?, SelectedRewardQuantities) {","violation":{"location":{"character":6,"file":"Library\/Sources\/Library\/Library\/ViewModels\/RewardAddOnSelectionViewModel.swift","line":439},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":"private func rewardsData(","violation":{"location":{"character":9,"file":"Library\/Sources\/Library\/Library\/ViewModels\/RewardAddOnSelectionViewModel.swift","line":443},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"warning","reason":"Function should have 5 parameters or less: it currently has 6"}},{"text":"public typealias RewardCardViewData = (","violation":{"location":{"character":39,"file":"Library\/Sources\/Library\/Library\/ViewModels\/RewardCardViewModel.swift","line":18},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" private let configDataProperty = MutableProperty<(","violation":{"location":{"character":52,"file":"Library\/Sources\/Library\/Library\/ViewModels\/RewardsCollectionViewModel.swift","line":376},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" static func withQuery(","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/ViewModels\/SearchViewModel+GraphQL.swift","line":152},"ruleIdentifier":"function_parameter_count","ruleName":"Function Parameter Count","ruleDescription":"Number of function parameters should be low.","severity":"error","reason":"Function should have 5 parameters or less: it currently has 9"}},{"text":" public static func notificationFor(","violation":{"location":{"character":10,"file":"Library\/Sources\/Library\/Library\/ViewModels\/SettingsNotificationCellViewModel.swift","line":196},"ruleIdentifier":"cyclomatic_complexity","ruleName":"Cyclomatic Complexity","ruleDescription":"Complexity of function bodies should be limited.","severity":"warning","reason":"Function should have complexity 10 or less; currently complexity is 11"}},{"text":"private typealias ShippingRulesInputData = (","violation":{"location":{"character":44,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ShippingRulesViewModel.swift","line":11},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" _ data: (project: Project, shippingRules: [ShippingRule], selectedShippingRule: ShippingRule),","violation":{"location":{"character":11,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ShippingRulesViewModel.swift","line":183},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (categoryId: Int?, sorts: [DiscoveryParams.Sort], animated: Bool),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/SortPagerViewModel.swift","line":49},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" (categoryId: Int?, sorts: [DiscoveryParams.Sort], animated: Bool),","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/Library\/ViewModels\/SortPagerViewModel.swift","line":176},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":"public typealias ThanksPageData = (","violation":{"location":{"character":35,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ThanksViewModel.swift","line":7},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"error","reason":"Tuples should have at most 2 members"}},{"text":" var goToProject: Signal<(Project, [Project], RefTag), Never> { get }","violation":{"location":{"character":27,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ThanksViewModel.swift","line":48},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" public let goToProject: Signal<(Project, [Project], RefTag), Never>","violation":{"location":{"character":34,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ThanksViewModel.swift","line":314},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" let j = Int(arc4random_uniform(UInt32(length - 1)))","violation":{"location":{"character":19,"file":"Library\/Sources\/Library\/Library\/ViewModels\/ThanksViewModel.swift","line":386},"ruleIdentifier":"legacy_random","ruleName":"Legacy Random","ruleDescription":"Prefer using `type.random(in:)` over legacy functions","severity":"warning","reason":"Prefer using `type.random(in:)` over legacy functions"}},{"text":"public typealias WatchProjectValue = (","violation":{"location":{"character":38,"file":"Library\/Sources\/Library\/Library\/ViewModels\/WatchProjectViewModel.swift","line":6},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" set(key) {","violation":{"location":{"character":5,"file":"Library\/Sources\/Library\/UINavigationItem+Localized.swift","line":6},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" set(key) {","violation":{"location":{"character":7,"file":"Library\/Sources\/Library\/UINavigationItem+Localized.swift","line":17},"ruleIdentifier":"computed_accessors_order","ruleName":"Computed Accessors Order","ruleDescription":"Getter and setters in computed properties and subscripts should be in a consistent order.","severity":"warning","reason":"Computed properties should first declare the getter and then the setter"}},{"text":" p == 2 ? .init(error: NSError()) : .init(value: [p])","violation":{"location":{"character":29,"file":"LibraryTests\/Library\/PaginateTests.swift","line":242},"ruleIdentifier":"discouraged_direct_init","ruleName":"Discouraged Direct Initialization","ruleDescription":"Discouraged direct initialization of types that can be harmful","severity":"warning","reason":"Discouraged direct initialization of types that can be harmful"}},{"text":" XCTFail()","violation":{"location":{"character":11,"file":"LibraryTests\/Library\/PaginatorTests.swift","line":107},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":11,"file":"LibraryTests\/Library\/PaginatorTests.swift","line":152},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":11,"file":"LibraryTests\/Library\/PaginatorTests.swift","line":198},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" withEnvironment(isVoiceOverRunning: { true }) {","violation":{"location":{"character":51,"file":"LibraryTests\/Library\/Tracking\/KSRAnalyticsTests.swift","line":80},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" withEnvironment(isVoiceOverRunning: { false }) {","violation":{"location":{"character":52,"file":"LibraryTests\/Library\/Tracking\/KSRAnalyticsTests.swift","line":88},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" isBacker ? XCTAssertEqual(true, props?[\"project_user_is_backer\"] as? Bool) :","violation":{"location":{"character":14,"file":"LibraryTests\/Library\/Tracking\/KSRAnalyticsTests.swift","line":2029},"ruleIdentifier":"void_function_in_ternary","ruleName":"Void Function in Ternary","ruleDescription":"Using ternary to call Void functions should be avoided","severity":"warning","reason":"Using ternary to call Void functions should be avoided"}},{"text":" loggedInUser ? XCTAssertEqual(false, props?[\"project_user_is_project_creator\"] as? Bool) :","violation":{"location":{"character":18,"file":"LibraryTests\/Library\/Tracking\/KSRAnalyticsTests.swift","line":2032},"ruleIdentifier":"void_function_in_ternary","ruleName":"Void Function in Ternary","ruleDescription":"Using ternary to call Void functions should be avoided","severity":"warning","reason":"Using ternary to call Void functions should be avoided"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"LibraryTests\/Library\/UseCases\/SearchFilters\/SearchFiltersUseCaseTests.swift","line":425},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"LibraryTests\/Library\/UseCases\/SearchFilters\/SearchFiltersUseCaseTests.swift","line":435},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"LibraryTests\/Library\/UseCases\/SearchFilters\/SearchFiltersUseCaseTests.swift","line":445},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"LibraryTests\/Library\/UseCases\/SearchFilters\/SearchFiltersUseCaseTests.swift","line":455},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" return XCTFail()","violation":{"location":{"character":16,"file":"LibraryTests\/Library\/UseCases\/SimilarProjects\/SimilarProjectsUseCaseTests.swift","line":101},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" withEnvironment(isVoiceOverRunning: { true }) {","violation":{"location":{"character":51,"file":"LibraryTests\/Library\/ViewModels\/BackingCellViewModelTests.swift","line":57},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" withEnvironment(isVoiceOverRunning: { true }) {","violation":{"location":{"character":51,"file":"LibraryTests\/Library\/ViewModels\/ChangePasswordViewModelTests.swift","line":93},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" withEnvironment(isVoiceOverRunning: { false }) {","violation":{"location":{"character":52,"file":"LibraryTests\/Library\/ViewModels\/ChangePasswordViewModelTests.swift","line":201},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"LibraryTests\/Library\/ViewModels\/CommentCellViewModelTests.swift","line":171},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" withEnvironment(isVoiceOverRunning: { true }) {","violation":{"location":{"character":51,"file":"LibraryTests\/Library\/ViewModels\/CreatePasswordViewModelTests.swift","line":140},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" withEnvironment(isVoiceOverRunning: { false }) {","violation":{"location":{"character":52,"file":"LibraryTests\/Library\/ViewModels\/CreatePasswordViewModelTests.swift","line":247},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" withEnvironment(isVoiceOverRunning: { false }) {","violation":{"location":{"character":52,"file":"LibraryTests\/Library\/ViewModels\/MessageBannerViewModelTests.swift","line":89},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" withEnvironment(isVoiceOverRunning: { true }) {","violation":{"location":{"character":51,"file":"LibraryTests\/Library\/ViewModels\/MessageBannerViewModelTests.swift","line":104},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}},{"text":" private let backingAndProjectAndIsFromBacking = TestObserver<(Backing, Project, Bool), Never>()","violation":{"location":{"character":64,"file":"LibraryTests\/Library\/ViewModels\/MessagesViewModelTests.swift","line":13},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" surveyUnpreparedPostRequest.httpBody = \"data=data\".data(using: .utf8)","violation":{"location":{"character":44,"file":"LibraryTests\/Library\/ViewModels\/PledgeManagerWebViewModelTests.swift","line":77},"ruleIdentifier":"non_optional_string_data_conversion","ruleName":"Non-optional String -> Data Conversion","ruleDescription":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`","severity":"warning","reason":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`"}},{"text":" XCTAssertEqual(self.webViewLoadRequest.values.last?.httpBody, \"data=data\".data(using: .utf8))","violation":{"location":{"character":67,"file":"LibraryTests\/Library\/ViewModels\/PledgeManagerWebViewModelTests.swift","line":95},"ruleIdentifier":"non_optional_string_data_conversion","ruleName":"Non-optional String -> Data Conversion","ruleDescription":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`","severity":"warning","reason":"Prefer non-optional `Data(_:)` initializer when converting `String` to `Data`"}},{"text":" XCTFail()","violation":{"location":{"character":9,"file":"LibraryTests\/Library\/ViewModels\/PledgePaymentMethodsViewModelTests.swift","line":1734},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":9,"file":"LibraryTests\/Library\/ViewModels\/PledgePaymentMethodsViewModelTests.swift","line":1784},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" -> (PostCampaignRewardsSummaryViewData, Double, PledgeSummaryViewData) {","violation":{"location":{"character":8,"file":"LibraryTests\/Library\/ViewModels\/PostCampaignPledgeRewardsSummaryViewModelTests.swift","line":128},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" private let goToReportProject = TestObserver<(Bool, String, String), Never>()","violation":{"location":{"character":48,"file":"LibraryTests\/Library\/ViewModels\/ProjectPageViewModelTests.swift","line":47},"ruleIdentifier":"large_tuple","ruleName":"Large Tuple","ruleDescription":"Tuples shouldn't have too many members. Create a custom type instead.","severity":"warning","reason":"Tuples should have at most 2 members"}},{"text":" XCTFail()","violation":{"location":{"character":9,"file":"LibraryTests\/Library\/ViewModels\/ProjectPageViewModelTests.swift","line":1954},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":9,"file":"LibraryTests\/Library\/ViewModels\/ProjectPageViewModelTests.swift","line":2008},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":9,"file":"LibraryTests\/Library\/ViewModels\/ReportProjectFormViewModelTests.swift","line":50},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"LibraryTests\/Library\/ViewModels\/ReportProjectFormViewModelTests.swift","line":68},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"LibraryTests\/Library\/ViewModels\/ReportProjectFormViewModelTests.swift","line":76},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" XCTFail()","violation":{"location":{"character":7,"file":"LibraryTests\/Library\/ViewModels\/ReportProjectFormViewModelTests.swift","line":85},"ruleIdentifier":"xctfail_message","ruleName":"XCTFail Message","ruleDescription":"An XCTFail call should include a description of the assertion","severity":"warning","reason":"An XCTFail call should include a description of the assertion"}},{"text":" withEnvironment(isVoiceOverRunning: { true }) {","violation":{"location":{"character":51,"file":"LibraryTests\/Library\/ViewModels\/SettingsPrivacyViewModelTests.swift","line":30},"ruleIdentifier":"multiple_closures_with_trailing_closure","ruleName":"Multiple Closures with Trailing Closure","ruleDescription":"Trailing closure syntax should not be used when passing more than one closure argument","severity":"warning","reason":"Trailing closure syntax should not be used when passing more than one closure argument"}}]