WIP: Feat/exclude values#1663
Conversation
656e5c1 to
621cadb
Compare
…ing logic, ensure k-v is always provided
… TODO except-rules
efef057 to
39c5837
Compare
e8ccb74 to
bc9372b
Compare
…onfigured and in the issue
7927a9b to
c8a4d2d
Compare
|
Thanks for this contribution. This seems AI generated. Why was required to rename the methods/functions? Can you reduce the size of the changes only to the hardcode credentials? |
This was not AI generated. I did not even use AI for autocomplete. I renamed some symbols because they mentioned "Path Exclusion", but I was adding functionality not related to paths. To avoid the misleading implication that PathExclusion symbols dealt only with paths, I removed "Path" from the names. This is still WIP, and I'm looking into whether I should push the config deeper to be more tightly coupled to G101. I also want to write tests. |
|
Please do first the minimum change required to incorporate the functionality you mentioned without refactoring. You can follow up with refactoring if it is needed afterwards. This will make reviewing the change much easier. Thanks |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1663 +/- ##
==========================================
- Coverage 80.57% 80.25% -0.32%
==========================================
Files 109 109
Lines 10181 10260 +79
==========================================
+ Hits 8203 8234 +31
- Misses 1495 1541 +46
- Partials 483 485 +2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
ccojocar
left a comment
There was a problem hiding this comment.
Can you please add some info in the README regarding the usage of this exclusion filter?
Is this introducing any breaking changes for the existing filter format?
| // In other words, this method will further limit the exlude rule's scope, | ||
| // if the issue has addenda matching either keys or values | ||
| // which were specified in the rule. | ||
| func (r *compiledExcludeRule) ExcludesAddenda(addenda any) bool { |
There was a problem hiding this comment.
I would use a type for addenda instead of any. It can be a join between Keyer and Valuer.
There was a problem hiding this comment.
The idea (which I'm reconsidering) was to allow the different rules to provide different types of addenda. I imagined that some rules might only provide a key, for example, and not a value. And some rules might provide addenda with completely different methods, or none at all.
This would go away if I tightly couple the new configs to G101.
|
|
||
| // ShouldExclude returns true if the given issue should be excluded based on | ||
| // its file path, rule ID, and addenda. | ||
| func (f *ExclusionFilter) ShouldExclude(filePath, ruleID string, addenda any) bool { |
| } | ||
|
|
||
| pathPattern := strings.TrimSpace(part[:colonIdx]) | ||
| rulesPart := strings.TrimSpace(part[colonIdx+1:]) |
There was a problem hiding this comment.
Does the part can be only of len == 1? This indexing will generate a crash in that case.
There was a problem hiding this comment.
This is not my code. It was carried over from when file had a different name.
Adds
keysandvaluesfields to the (formerly Path-)ExcludeRule type. If provided with a slice of regex patterns, G101 "Possible hardcoded credentials" issues will also be excluded if the hardcoded-value matches any of thevaluespatterns, or if its key matches any of thekeyspatterns.For example, the following code, common in test files, used to trigger an error:
With this PR, a config can be set to exclude that issue when encountered in test files, based on the hardcoded value matching a pattern:
{ "exclude-rules": [{ "path": ".+_test\\.go$", "values": [ "(?i)^test", "(?i)^fake" ], "rules": [ "G101" ] }] }