Skip to content

Commit a22229a

Browse files
committed
fix(sonar): use sonar.issue.ignore.allfile for test files and fix code smells
- Use sonar.issue.ignore.allfile with fileRegexp to ignore all issues in test files and config.yaml (secrets false positives) - Mark test files as test sources using sonar.tests/sonar.test.inclusions - Fix code smell: remove unnecessary err variable in bcrypt check - Fix code smell: group consecutive []string parameters in getOrDefault
1 parent 7c0822f commit a22229a

File tree

2 files changed

+19
-42
lines changed

2 files changed

+19
-42
lines changed

internal/verifier/apiv1/client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ func (c *Client) authenticateClient(ctx context.Context, clientID, clientSecret
232232
}
233233
} else {
234234
// DB clients have bcrypt-hashed secrets
235-
if err := bcrypt.CompareHashAndPassword([]byte(client.ClientSecretHash), []byte(clientSecret)); err != nil {
235+
if bcrypt.CompareHashAndPassword([]byte(client.ClientSecretHash), []byte(clientSecret)) != nil {
236236
return nil, ErrInvalidClient
237237
}
238238
}
@@ -241,7 +241,7 @@ func (c *Client) authenticateClient(ctx context.Context, clientID, clientSecret
241241
}
242242

243243
// getOrDefault returns the slice if non-empty, otherwise returns the default value
244-
func getOrDefault(s []string, defaultVal []string) []string {
244+
func getOrDefault(s, defaultVal []string) []string {
245245
if len(s) > 0 {
246246
return s
247247
}

sonar-project.properties

Lines changed: 17 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@ sonar.organization=sunet
99
sonar.sources=.
1010
sonar.exclusions=vendor/**,**/testdata/**
1111

12+
# Mark test files as test sources (not main sources)
13+
sonar.tests=.
14+
sonar.test.inclusions=**/*_test.go
15+
16+
# Exclude test files and config from security hotspot detection
17+
sonar.security.hotspots.exclusions=**/*_test.go,**/config.yaml
18+
19+
# Ignore ALL issues in test files (test code contains expected test credentials)
20+
sonar.issue.ignore.allfile=f1,f2
21+
sonar.issue.ignore.allfile.f1.fileRegexp=.*_test\\.go$
22+
sonar.issue.ignore.allfile.f2.fileRegexp=config\\.yaml$
23+
1224
# Go-specific settings
1325
sonar.go.coverage.reportPaths=coverage.out,didcomm_coverage.out
1426

@@ -29,51 +41,16 @@ sonar.go.coverage.reportPaths=coverage.out,didcomm_coverage.out
2941
# - This is a key-wrapping primitive, not general-purpose encryption
3042
#
3143
# These patterns are required for standards compliance and interoperability.
32-
sonar.issue.ignore.multicriteria=e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12
44+
sonar.issue.ignore.multicriteria=e1,e2,e3
3345

3446
# Exclude S5542 from JWE crypto implementation (AES-CBC for content encryption, AES Key Wrap)
3547
sonar.issue.ignore.multicriteria.e1.ruleKey=go:S5542
3648
sonar.issue.ignore.multicriteria.e1.resourceKey=**/didcomm/crypto/jwe.go
3749

38-
# Exclude from test files (test code uses same crypto primitives)
39-
sonar.issue.ignore.multicriteria.e2.ruleKey=go:S5542
40-
sonar.issue.ignore.multicriteria.e2.resourceKey=**/*_test.go
41-
4250
# Exclude S5542 from PKI signers (RSA-PKCS1v15 SIGNATURE, not encryption)
4351
# SonarCloud incorrectly flags rsa.SignPKCS1v15 as encryption when it's a signature scheme
44-
sonar.issue.ignore.multicriteria.e3.ruleKey=go:S5542
45-
sonar.issue.ignore.multicriteria.e3.resourceKey=**/pki/keymaterial_signer.go
46-
47-
sonar.issue.ignore.multicriteria.e4.ruleKey=go:S5542
48-
sonar.issue.ignore.multicriteria.e4.resourceKey=**/pki/software.go
49-
50-
# S6418 (go:S6418) - "Credentials should not be hard-coded"
51-
# Exclude from test files - test code necessarily contains test credentials
52-
# for authentication testing. These are not production secrets.
53-
sonar.issue.ignore.multicriteria.e5.ruleKey=go:S6418
54-
sonar.issue.ignore.multicriteria.e5.resourceKey=**/*_test.go
55-
56-
# Exclude from example config - commented examples show format, not real credentials
57-
sonar.issue.ignore.multicriteria.e6.ruleKey=go:S6418
58-
sonar.issue.ignore.multicriteria.e6.resourceKey=**/config.yaml
59-
60-
# S2068 (go:S2068) - "Credentials should not be hard-coded"
61-
# Same rationale as S6418 above
62-
sonar.issue.ignore.multicriteria.e7.ruleKey=go:S2068
63-
sonar.issue.ignore.multicriteria.e7.resourceKey=**/*_test.go
64-
65-
sonar.issue.ignore.multicriteria.e8.ruleKey=go:S2068
66-
sonar.issue.ignore.multicriteria.e8.resourceKey=**/config.yaml
67-
68-
# Secrets analyzer rules (may use different prefix)
69-
sonar.issue.ignore.multicriteria.e9.ruleKey=secrets:S6418
70-
sonar.issue.ignore.multicriteria.e9.resourceKey=**/*_test.go
71-
72-
sonar.issue.ignore.multicriteria.e10.ruleKey=secrets:S6418
73-
sonar.issue.ignore.multicriteria.e10.resourceKey=**/config.yaml
74-
75-
sonar.issue.ignore.multicriteria.e11.ruleKey=secrets:S2068
76-
sonar.issue.ignore.multicriteria.e11.resourceKey=**/*_test.go
52+
sonar.issue.ignore.multicriteria.e2.ruleKey=go:S5542
53+
sonar.issue.ignore.multicriteria.e2.resourceKey=**/pki/keymaterial_signer.go
7754

78-
sonar.issue.ignore.multicriteria.e12.ruleKey=secrets:S2068
79-
sonar.issue.ignore.multicriteria.e12.resourceKey=**/config.yaml
55+
sonar.issue.ignore.multicriteria.e3.ruleKey=go:S5542
56+
sonar.issue.ignore.multicriteria.e3.resourceKey=**/pki/software.go

0 commit comments

Comments
 (0)