Add Danger check for @UserDefaultsWrapper additions#18
Merged
Conversation
samsymons
approved these changes
May 20, 2025
| for (const file of changedFiles) { | ||
| let diff = await danger.git.diffForFile(file); | ||
| let addedLines = diff?.added.split(/\n/); | ||
| const foundOccurrence = addedLines?.find(value => /^\+(?!\s*\/\/)\s*@UserDefaultsWrapper(?:\((?:.*\))?)?$/.test(value)); |
There was a problem hiding this comment.
Regex misses single-line property wrapper declarations
Medium Severity
The regex /^\+(?!\s*\/\/)\s*@UserDefaultsWrapper(?:\((?:.*\))?)?$/ requires @UserDefaultsWrapper to be at the end of the line due to the $ anchor. This means valid Swift declarations where the wrapper and property are on the same line (e.g., @UserDefaultsWrapper var myProperty: Bool or @UserDefaultsWrapper(key: .foo) var myProperty: Bool) won't be detected. Developers could bypass the check by using single-line syntax instead of placing the attribute on its own line.
Please tell me if this was useful or not with a 👍 or 👎.
Contributor
Author
There was a problem hiding this comment.
This is enough for now, we only use UserDefaultsWrapper on a separate line.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task URL: https://app.asana.com/1/137249556945/project/1201037661562251/task/1210321655252710?focus=true
Note
Introduces a CI check to prevent new
@UserDefaultsWrapperdefinitions in Swift diffs.userDefaultsWrapperrule scans added lines in.swiftfiles and fails on@UserDefaultsWrapperannotations (handles parameterized, multiline, and no-parameter forms; ignores comments and non-definition usage)allPRs.tssingletons()Written by Cursor Bugbot for commit fd7fdc7. This will update automatically on new commits. Configure here.