realm / realm/SwiftLint

Custom Regex Rule Matching Too Aggressively

Open
#3,772 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

help
Dominant language
Swift
Stars
19.7k
Forks
2.3k
Avg merge
1d 1h
Merged PRs (30d)
11

Description

New Issue Checklist
Describe the bug

I am writing a custom regex rule that I want to match on lines where a property is not properly marked weak (similar to the weak_delegate rule but not with a delegate protocol. The rule I've got is as follows:

custom_rules:
  weak_clickstream_nodes:
    regex: "^((?<!weak).)*var.*Clickstream(AnalyticsNodeObject|Node)\?$"
    message: "Clickstream nodes must be marked as weak"

When I run the regex in Xcode it finds lines correctly, but SwiftLint is matching lines that have weak too. Here are some sample lines to test against:

// Should match
  public var next: ClickstreamNode?
  public var parent: ClickstreamAnalyticsNodeObject?

// Should not match
  public weak var next: ClickstreamNode?
  weak public var next: ClickstreamNode?
  public weak var next: ClickstreamAnalyticsNodeObject?
  weak public var next: ClickstreamAnalyticsNodeObject?
  public func send(from node: ClickstreamNode?, to dispatcher: ClickstreamDispatcher = .mapi) -> Impression {```

The regex in my custom rule does match the top 2, but SwiftLint matches the top 4 in the "Should not match" section as well.

##### Complete output when running SwiftLint, including the stack trace and command used

```bash
$ ./vendor/swiftlint lint --quiet --config ./tools/swiftlint.yml

/Users/q1214382/Developer/zulily_ios_main/Tests/ZulilyUnitTests/Sources/ZulilyKit/Wireframes/WireframeLoggingTests.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyFoundation/Sources/Models/Product/v5/ProductRequirements.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyFoundation/Sources/Models/Cart/Promotion.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyFoundation/Sources/Models/SimilarItem.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyFoundation/Sources/Models/IneligibleItem.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyFoundation/Sources/Logging/NavigationUserAction.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/zulily/Sources/Redesign/ClosingContainerWindow.swift:17:5: warning: Self in Property Initialization Violation: `self` refers to the unapplied `NSObject.self()` method, which is likely not expected. Make the variable `lazy` to be able to refer to the current instance or use `ClassName.self`. (self_in_property_initialization)
/Users/q1214382/Developer/zulily_ios_main/Modules/zulily/Sources/Redesign/ClosingContainerWindow.swift:29:5: warning: Self in Property Initialization Violation: `self` refers to the unapplied `NSObject.self()` method, which is likely not expected. Make the variable `lazy` to be able to refer to the current instance or use `ClassName.self`. (self_in_property_initialization)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/OrderMainPageFrameV1/OrderMainPageFrameV1.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/OrderDetailsFrameV1/OrderDetailsFrameV1.swift:14:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/ShippingAddressesFrameV1/ShippingAddressesFrameV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Cart Frame V1/CartFrameV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/PaymentEntryFormFrameV1/PaymentEntryFormFrameV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/ZuCard Frame V1/ZuCardFrameV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Product Details Frame V1/ProductDetailsFrameV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Product Details Frame V1/Injectors/ProductDashboard.ClickableCouponV2View.swift:38:17: warning: Self in Property Initialization Violation: `self` refers to the unapplied `NSObject.self()` method, which is likely not expected. Make the variable `lazy` to be able to refer to the current instance or use `ClassName.self`. (self_in_property_initialization)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/One Column Wireframe V1/OneColumnWireframeV1.swift:19:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Account Wireframe V1/AccountWireframeV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/ZuCard Quick App Frame V1/ZuCardQuickAppApplicationViewController.swift:51:17: warning: Self in Property Initialization Violation: `self` refers to the unapplied `NSObject.self()` method, which is likely not expected. Make the variable `lazy` to be able to refer to the current instance or use `ClassName.self`. (self_in_property_initialization)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Cookie Consent Banner Frame V1/CookieConsentBannerFrameV1.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/PaymentSelectionFrameV1/PaymentSelectionFrameV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/ZuCard Quick App Frame V1/ZuCardQuickAppFrameV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Search Frame V1/SearchFrameV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/ZuCardFrameV2/ZuCardFrameV2.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/GiftCardFrameV2/GiftCardFrameV2.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/OrderItemActionFrameV1/OrderItemActionFrameV1.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Address Form Frame V1/AddressFormFrameV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Checkout Frame v1/CheckoutFrameV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/Two Column Wireframe V1/TwoColumnWireframeV1.swift:26:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/OrderConfirmationFrameV1/OrderConfirmationFrameV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/CountryListFrameV1/CountryListFrameV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Wireframes/AddressVerification/AddressVerificationFrameV1.swift:19:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Love.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Geo v1/GeotargetV1SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Placeholder v1/PlaceholderV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Toggle V1/ToggleV1SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/CheckoutItemTileV1/CheckoutItemTileV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/DrillInV3/DrillInV3.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Autoscale Horizontal v1/AutoscaleHorizontalV1SectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Flash Finds V1/FlashFindsV1SectionStyle.swift:60:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Brands Horizontal V2/SharedHorizontalSection.swift:23:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/HeaderV8/HeaderV8.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Notify v1/CartNotifyV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/OrderFilterV1/OrderFilterV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Flag V1/FlagSectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Inject V2/InjectV2SectionStyle.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Horizontal Separator v2/HorizontalSeparatorV2.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Brand Header V1/BrandHeaderV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Gift Card V1/GiftCardV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Header V7/HeaderV7.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/GiftMessageV1/GiftMessageV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Filter V3/FilterV3.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Categories Horizontal V2/CategoriesHorizontalV2SectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Descriplet V1/DescripletV1SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/EVents Horizontal v2/EventsHorizontalV2SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Standard Product/StandardProductStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Item Summaries/CartItemSummaryV4.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Item Summaries/CartItemSummaries.swift:74:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Header No Padding/HeaderNoPadding.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Brand Favorite V1/BrandFavoriteV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Items Horizontal V1/ItemsHorizontalV1.swift:21:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Standard Event v1/StandardEventV1SectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/OrderConfirmationV1/OrderConfirmationV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Item Notice V2/CartItemNoticeV2.swift:13:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Billboard v1/BillboardSectionStyle.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Category Tree V1/models/CategoryTreeV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/HighlightSavingsV1/HighlightSavingsV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/EventTileV1/EventTileV1.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/ATB/ATB Swipe/ATB Swipe V2 Cell/ATBSwipeV2CellStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/ATB/ATB Standard Cell/ATBStandardCellStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/ATB/ATBModel.swift:22:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/DescripletV6/DescripletV6.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Item Actions V1/CartItemActionsV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Categories Inline/CategoriesInlineSectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Hero v2/HeroV2SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Hero Product/HeroProductSectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Group Header V1/GroupHeaderV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Shipping Options/ShippingOptionsV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/PaymentMethodV1/PaymentMethodV1.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/SearchSuggestionV1/SearchSuggestionV1.swift:19:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/CartNotificationHeaderV1/CartNotificationHeaderV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Section Protocols/LayoutSection.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/OrderItemSummaryV1/OrderItemSummaryV1.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/ShareBarV1/ShareBarV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Card V1/CardV1.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Filler Tile v1/FillerTileSectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/SearchDrillInV1/SearchDrillInV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Filler Tile v1/Event Storyboard/EventStoryboardSectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Button V1/ButtonV1SectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Smart Pay V1/SmartPayBase.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/OrderTotalV1/OrderTotalV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/SmartPayV2/SmartPayV2.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Item Top Bar V1/CartItemTopBarV1SectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Inject V1/InjectV1SectionStyle.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Item Gift Card Details V1/CartItemGiftCardDetailsV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Headers/HeaderV9/HeaderV9.swift:23:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Headers/Header V3/HeaderV3SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Headers/Header V6/HeaderV6SectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Drill In v2/DrillInV2.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/CarouselV1/CarouselV1.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/OrderItemGroupV1/OrderItemGroupV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Header V4/HeaderV4SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Descriplet V4/DescripletV4SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Descriplet V3/DescripletV3SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Ad Hole V1/AdHoleV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/SearchInstantResultHeaderV1/SearchInstantResultHeaderV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Header V5/HeaderV5SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/SearchInstantResultV1/SearchInstantResultV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/VideoPanelV1/VideoPanelV1SectionStyle.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Item Notice V1/CartItemNoticeV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Categories Horizontal/CategoriesHorizontalSectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/OrderStatusV1/OrderStatusV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/BannerV2/BannerV2.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Order Summary V1/OrderSummaryV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Full Widths Inline v1/FullWidthsInlineV1.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/ShopsHorizontalV1/ShopsHorizontalV1.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Segmented Control V1/CartSegmentedControl.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/DescripletV5/DescripletV5.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/ExpressCheckoutV1/ExpressCheckoutV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Products Horizontal v1/ProductsHorizontalV1SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Hybrid Event v1/HybridEventV1SectionStyle.swift:19:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/BannerV3/BannerV3.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/BrandsHorizontalV3/BrandsHorizontalV3.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Billboard v2/BillboardV2SectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Brand V1/BrandV1SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Messaging/CartMessaging.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/CategoryDrillInV1/CategoryDrillInV1.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Hero v1/HeroSectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/ShippingCostSummaryV1/ShippingCostSummaryV1.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Cart Notification Header V2/CartNotificationHeaderV2.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/BrandV3/BrandV3.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Banner/BannerSectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Small Products Horizontal V1/SmallProductsHorizontalV1SectionStyle.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/CartItemActionsV2/CartItemActionsV2.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/CartPersonalizationV2/CartPersonalizationV2.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/HeroesHorizontalV1/HeroesHorizontalV1PageViewController.swift:25:13: warning: Self in Property Initialization Violation: `self` refers to the unapplied `NSObject.self()` method, which is likely not expected. Make the variable `lazy` to be able to refer to the current instance or use `ClassName.self`. (self_in_property_initialization)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/HeroesHorizontalV1/HeroesHorizontalV1PageViewController.swift:36:13: warning: Self in Property Initialization Violation: `self` refers to the unapplied `NSObject.self()` method, which is likely not expected. Make the variable `lazy` to be able to refer to the current instance or use `ClassName.self`. (self_in_property_initialization)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/HeroesHorizontalV1/HeroesHorizontalV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Reviews/ReviewsFrameV1.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Collage/Collage.swift:21:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Event.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Events Horizontal/HorizontalEventV1Item.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Sections/Events Horizontal/EventSectionStyle.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/SectionTemplateButtonModel.swift:17:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Common/SectionHeader.swift:1:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/Common/EventCategory.swift:18:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Models/SectionImageButtonModel.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Search Landing Page/Models/SearchFrameV2.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Search Landing Page/Models/Tab.swift:16:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Views/Redeem Gift Code/RedeemCardView.swift:80:13: warning: Self in Property Initialization Violation: `self` refers to the unapplied `NSObject.self()` method, which is likely not expected. Make the variable `lazy` to be able to refer to the current instance or use `ClassName.self`. (self_in_property_initialization)
/Users/q1214382/Developer/zulily_ios_main/Modules/ZulilyKit/Sources/Logging/VideoButtonDataProvider.swift:15:1: warning: weak_clickstream_nodes Violation: Clickstream nodes must be marked as weak (weak_clickstream_nodes)
Environment
  • SwiftLint version (run swiftlint version to be sure)? 0.45.1
  • Installation method used (Homebrew, CocoaPods, building from source, etc)? Direct download of release version
  • Paste your configuration file:
disabled_rules: # rule identifiers to exclude from running

# TODO code correctness / quality
    - block_based_kvo
    - weak_delegate
    - private_over_fileprivate

# TODO code maintainability
    - unused_optional_binding
    - large_tuple
    - type_name                                 # handles 2 issues, starts uppercase, and name too long
    - shorthand_operator
    - implicit_getter
    - control_statement
    - empty_enum_arguments                      # TODO autocorrect
    - syntactic_sugar
    - function_parameter_count

# TODO code readability / formatting
    - mark                                      # TODO autocorrect
    - statement_position
    - trailing_whitespace
    - vertical_whitespace
    - trailing_semicolon                        # TODO autocorrect
    - return_arrow_whitespace                   # TODO autocorrect
    - leading_whitespace
    - comment_spacing
    - redundant_optional_initialization

    - opening_brace
    - colon
    - trailing_newline
    - inclusive_language
    - force_cast
    - identifier_name
    - cyclomatic_complexity
    - trailing_comma
    - unused_closure_parameter
    - comma
    - todo
    - function_body_length
    - type_body_length
    - file_length

# -----------------------------------------------------------------------------
# Explicitly make sure these are on
opt_in_rules:

# code correctness / quality
    - notification_center_detachment
    - discarded_notification_center_observer
    - class_delegate_protocol
    - legacy_constant
    - compiler_protocol_init
    - multiple_closures_with_trailing_closure
    - valid_ibinspectable
    - legacy_constructor                        # autocorrected

# code readability / formatting
    - operator_whitespace
    - closing_brace
    - vertical_parameter_alignment
    - switch_case_alignment

# code maintainability
    - redundant_set_access_control
    - unneeded_break_in_switch
    - void_return
    - redundant_void_return
    - empty_parentheses_with_trailing_closure
    - protocol_property_accessors_order

nesting:
    type_level: 2

line_length:
    warning: 400
    error: 400

custom_rules:
  weak_clickstream_nodes:
    regex: "^((?<!weak).)*var.*Clickstream(AnalyticsNodeObject|Node)\\?$"
    message: "Clickstream nodes must be marked as weak"

# All paths are relative to the swiftlint config file. Using ${PWD} will ensure that the path is relative to the working
# directory when swiftlint is run from the repo root.
excluded:
- ${PWD}/tools/MockingServer
- ${PWD}/DData
- ${PWD}/Tuist
- ${PWD}/Project.swift
- ${PWD}/.tuist-bin
- ${PWD}/.DerivedData
- ${PWD}/Derived
- ${PWD}/Modules/LindenDTOs
- ${PWD}/tools/*/.build
- ${PWD}/Modules/*/Sources/ResourceAccessors.swift
- ${PWD}/Modules/*/Tests/ResourceAccessors.swift
- ${PWD}/vendor/*
- ${PWD}/tools/zu_cli/.build
  • Which Xcode version are you using (check xcodebuild -version)? 13.0

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the custom_rules configuration with the provided sample Swift property and function lines, comparing SwiftLint's matches with the regex behavior reported in Xcode. Trace the custom regex rule matching entry point and add coverage for all listed weak and non-weak examples; done means only the two intended properties are reported.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.