为啥 SonarQube 排除不适用于 sonar.javascript.file.suffixes 中指定的其他扩展?

Posted

技术标签:

【中文标题】为啥 SonarQube 排除不适用于 sonar.javascript.file.suffixes 中指定的其他扩展?【英文标题】:Why SonarQube exclusions are not applied to additional extensions specified in sonar.javascript.file.suffixes?为什么 SonarQube 排除不适用于 sonar.javascript.file.suffixes 中指定的其他扩展? 【发布时间】:2019-09-05 17:19:36 【问题描述】:

在我的 sonar-project.properties 文件中,我有以下设置:

...
sonar.sources=src
sonar.exclusions=src/**/*.test.js
sonar.javascript.file.suffixes=js,jsx

但是我的构建失败并出现以下错误:

ERROR: Caused by: Line 346 of report refers to a file which is not configured as a test file: /tmp/app/src/components/__tests__/filters.test.jsx

我的 jenkins 日志准确报告了 58 files ignored because of inclusion/exclusion patterns,并使用 find . -name "*.test.js" | wc -l = 58 进行了验证

与 jsx 相同的命令给了我 10 个结果 find . -name "*.test.jsx" | wc -l,这意味着 sonar.javascript.file.suffixes=js,jsx 不适用于排除属性。

如何排除源文件中同时具有 .js 和 .jsx 扩展名的文件?

【问题讨论】:

【参考方案1】:

你做的部分正确。要排除文件,您必须设置sonar.exclusions。您做到了,但仅适用于 js 文件,因此您的问题的答案是:

...
sonar.sources=src
sonar.exclusions=src/**/*.test.js,src/**/*.test.jsx
sonar.javascript.file.suffixes=js,jsx

sonar.javascript.file.suffixes 通知 JavaScript 分析器哪些文件包含 JavaScript 代码。不影响sonar.exclusions,所以你必须自己定义所有模式。

【讨论】:

以上是关于为啥 SonarQube 排除不适用于 sonar.javascript.file.suffixes 中指定的其他扩展?的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube 排除目录

SonarQube MSBuild 无法排除文件

SonarQube 代码覆盖率 - 排除某些类

配置 Sonar 以从 Maven pom.xml 中排除文件

SonarQube 正在使用 pom.xml 并忽略 sonar-project.properties 文件

jenkins+sonarQube代码质量扫描 并排除指定的目录