Skip to content

Commit e839c02

Browse files
committed
feat: add .sonarcloud.properties with explicit src-only inclusion
Create .sonarcloud.properties file which takes precedence over sonar-project.properties for SonarCloud scans. Use whitelist approach to ONLY scan src/ directory. **Key Strategy Change:** Instead of trying to exclude test files (blacklist), explicitly include ONLY src files (whitelist): ```properties sonar.sources=src sonar.inclusions=src/**/*.ts ``` This tells SonarCloud to ONLY scan TypeScript files in src/ directory, completely ignoring everything else including tests/. **Additional Safeguards:** 1. **Issue ignore rules (e1-e7)** - e1-e3: Ignore ALL rules in tests/**, *.test.ts, *.spec.ts - e4-e5: Specifically target typescript:S4036 and S* rules - e6-e7: Explicitly ignore problem files by name 2. **Multiple exclusion layers** - sonar.exclusions - sonar.coverage.exclusions - sonar.cpd.exclusions - sonar.security.exclusions - sonar.global.exclusions **Why .sonarcloud.properties:** - SonarCloud specifically looks for this file first - Takes precedence over sonar-project.properties - More reliable for cloud-specific configuration **Expected Result:** - SonarCloud should ONLY analyze src/**/*.ts files - All test files completely excluded from scanning - No more S4036 PATH security warnings from test files
1 parent dfa64b3 commit e839c02

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

.sonarcloud.properties

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# SonarCloud Configuration - Test Exclusion
2+
# This file takes precedence over sonar-project.properties for SonarCloud
3+
4+
# ONLY scan src directory
5+
sonar.sources=src
6+
7+
# Explicitly include ONLY TypeScript files in src
8+
sonar.inclusions=src/**/*.ts
9+
10+
# ABSOLUTELY EXCLUDE test files - multiple exclusion strategies
11+
sonar.exclusions=tests/**,tests/**/*,tests/**/*.ts,tests/**/**,**/*.test.ts,**/*.spec.ts,**/test-*.ts,**/helpers/test-utils.ts,dist/**,coverage/**,node_modules/**,examples/**,scripts/**,**/*.d.ts
12+
13+
# Exclude from coverage
14+
sonar.coverage.exclusions=tests/**,**/*.test.ts,**/*.spec.ts
15+
16+
# Exclude from duplication
17+
sonar.cpd.exclusions=tests/**,**/*.test.ts,**/*.spec.ts
18+
19+
# Exclude from security analysis
20+
sonar.security.exclusions=tests/**,**/*.test.ts,**/*.spec.ts
21+
22+
# Global exclusions
23+
sonar.global.exclusions=tests/**
24+
25+
# Issue ignore rules - suppress ALL issues in test files
26+
sonar.issue.ignore.multicriteria=e1,e2,e3,e4,e5,e6,e7
27+
28+
# Ignore ALL rules for tests/** directory
29+
sonar.issue.ignore.multicriteria.e1.ruleKey=*
30+
sonar.issue.ignore.multicriteria.e1.resourceKey=tests/**
31+
32+
# Ignore ALL rules for **/*.test.ts
33+
sonar.issue.ignore.multicriteria.e2.ruleKey=*
34+
sonar.issue.ignore.multicriteria.e2.resourceKey=**/*.test.ts
35+
36+
# Ignore ALL rules for **/*.spec.ts
37+
sonar.issue.ignore.multicriteria.e3.ruleKey=*
38+
sonar.issue.ignore.multicriteria.e3.resourceKey=**/*.spec.ts
39+
40+
# Ignore typescript:S4036 (PATH security) in tests
41+
sonar.issue.ignore.multicriteria.e4.ruleKey=typescript:S4036
42+
sonar.issue.ignore.multicriteria.e4.resourceKey=tests/**
43+
44+
# Ignore all TypeScript security rules in tests
45+
sonar.issue.ignore.multicriteria.e5.ruleKey=typescript:S*
46+
sonar.issue.ignore.multicriteria.e5.resourceKey=tests/**
47+
48+
# Ignore all rules in specific problem files
49+
sonar.issue.ignore.multicriteria.e6.ruleKey=*
50+
sonar.issue.ignore.multicriteria.e6.resourceKey=tests/production-validation.test.ts
51+
52+
sonar.issue.ignore.multicriteria.e7.ruleKey=*
53+
sonar.issue.ignore.multicriteria.e7.resourceKey=tests/cli-production-mode.test.ts

0 commit comments

Comments
 (0)