SonarQube通过GitHub Actions分析master分支时Ts/tsx文件未被分析
PR分支正常分析TS/TSX,master分支却不识别的解决思路
环境信息
- SonarQube CE 8.9 LTS
- 项目使用TypeScript 4.8版本
- 通过GitHub Action的Sonar扫描器执行代码分析
问题现象
PR分支执行Sonar扫描时,TS/TSX文件能正常被检测分析;但master分支扫描时,这些文件直接显示未被分析。
已尝试操作
master分支的GitHub Action配置如下:
sonarqube: runs-on: ubuntu-latest needs: [lint, test] steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: SonarQube Scan uses: SonarSource/sonarqube-scan-action@v1.1.0 env: SONAR_TOKEN: XX SONAR_HOST_URL: XX with: args: > -Dsonar.verbose=true -Dsonar.sources=./src/ -Dsonar.tests=./test/ -Dsonar.projectKey=my_key -Dsonar.eslint.reportPaths=./reports/eslint.json -Dsonar.css.stylelint.reportPaths=/reports/stylelint.json -Dsonar.javascript.lcov.reportPaths=./reports/lcov.info
同时已配置tsconfig.json的包含规则:
"include": [ "**/*.ts", "**/*.tsx", "**/*.css", ],
可排查的解决方向
1. 显式指定tsconfig路径
虽然tsconfig在根目录,但全量扫描master分支时,Sonar扫描器可能无法自动识别。试试在扫描参数中添加:
-Dsonar.typescript.tsconfigPath=./tsconfig.json
同时去SonarQube后台检查master分支的项目设置,确认TypeScript语言支持处于开启状态。
2. 验证checkout后的文件完整性
有时候GitHub Action的checkout步骤可能出现异常,导致master分支的TS/TSX文件未正确拉取。在checkout步骤后添加验证:
- name: 检查TS文件是否存在 run: ls -la ./src/ | grep -E "\.(ts|tsx)$"
如果看不到目标文件,建议将actions/checkout@v2升级到v3版本,避免旧版本的缓存或拉取不兼容问题。
3. 从扫描日志找线索
已经开启了sonar.verbose=true,一定要查看master分支扫描的完整日志:
- 搜索「TypeScript files」「tsconfig」关键词,确认是否存在“找不到TS文件”“解析tsconfig失败”这类报错。
- 检查是否有文件被意外排除的记录,可尝试添加参数清空默认排除规则:
-Dsonar.exclusions=
4. 修正报告路径的错误
注意到sonar.css.stylelint.reportPaths使用了绝对路径/reports/stylelint.json,而其他报告均为相对路径,这可能导致扫描器流程异常。统一改为相对路径:
-Dsonar.css.stylelint.reportPaths=./reports/stylelint.json
5. 检查插件兼容性
SonarQube 8.9 LTS对TypeScript 4.8的支持可能存在适配问题,可尝试:
- 在SonarQube后台升级TypeScript插件至对应版本的最新兼容版;
- 在扫描参数中显式指定TypeScript版本:
-Dsonar.typescript.version=4.8
内容的提问来源于stack exchange,提问作者Abhijeet Vaikar
相关产品推荐
相关产品推荐

