mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 10:29:58 +02:00
The typed-resource rules missed a bare string literal passed as the leading arg of
a view initializer (e.g. Label("send_stop_sharing", …)), which is an implicit
LocalizedStringKey. Add a rule covering Text/Label/Button/Section/Picker/etc.
(empty labels allowed). Fixes the two dynamic-content Text sites it surfaced by
switching them to Text(verbatim:).
35 lines
1.2 KiB
YAML
35 lines
1.2 KiB
YAML
# Focused lint for the native app: enforce the typed-resources convention only
|
|
# (no default style rules, so this stays signal, not noise).
|
|
only_rules:
|
|
- custom_rules
|
|
|
|
included:
|
|
- VniDrop
|
|
|
|
excluded:
|
|
- VniDrop/Generated
|
|
|
|
custom_rules:
|
|
raw_localized_string:
|
|
name: "Raw localized key"
|
|
regex: 'String\(localized:\s*"'
|
|
message: "Use a typed L10n.* accessor, not a raw key string."
|
|
severity: warning
|
|
raw_localized_string_key:
|
|
name: "Raw LocalizedStringKey"
|
|
regex: 'LocalizedStringKey\("'
|
|
message: "Use a typed L10n.* accessor instead of a raw key."
|
|
severity: warning
|
|
raw_sf_symbol:
|
|
name: "Raw SF Symbol"
|
|
regex: 'system(Name|Image):\s*"'
|
|
message: "Use SFSafeSymbols: Image(systemSymbol:) or systemSymbol:."
|
|
severity: warning
|
|
raw_swiftui_string_literal:
|
|
name: "Raw SwiftUI string"
|
|
# A non-empty string literal as the leading arg of a view initializer is an
|
|
# implicit LocalizedStringKey. Empty labels (e.g. Picker("", …)) are allowed.
|
|
regex: '\b(Text|Label|Button|Toggle|Link|NavigationLink|Section|Picker|Stepper|TextField|SecureField|DisclosureGroup|Menu|GroupBox)\("[^"]'
|
|
message: "Pass a typed L10n.* accessor (or Text(verbatim:)), not a raw string literal."
|
|
severity: warning
|