sonar-maven-plugin:如何在包含模式中使用项目相对路径?

Posted

技术标签:

【中文标题】sonar-maven-plugin:如何在包含模式中使用项目相对路径?【英文标题】:sonar-maven-plugin: How to use project-relative paths in inclusion patterns? 【发布时间】:2020-10-15 21:51:48 【问题描述】:

我有一个相当大的多模块多语言 maven 项目(总共约 100 个模块),我想使用 SonarQube 进行分析,因为扫描仪不会自动发现所有语言的所有文件(即不适用于 Groovy和 Kotlin),我必须告诉它在哪里查找文件。

大多数模块包含src/main/src/test/ 目录的典型组合,但不一定两者都包含,这使得不可能简单地将<sonar.sources>pom.xml,src/main/</sonar.sources><sonar.tests>src/test/</sonar.tests> 声明为***pom 中的属性,因为缺少目录导致 maven 中止并出现错误。

根据https://***.com/a/37545474,解决此问题的一种可能方法是 设置...

sonar.sources 成为. sonar.inclusions 成为src/main/** => 这将包括 SQ 在 src/main 文件夹中的模块中找到的所有已知文件(如果存在)

只使用

<sonar.sources>.</sonar.sources>
<sonar.tests>.</sonar.tests>
<sonar.inclusions>pom.xml,src/main/**</sonar.inclusions>
<sonar.test.inclusions>src/test/**</sonar.test.inclusions>

在*** pom 中确实按预期工作(所有应该分析的文件都被发现,并且由于缺少目录而没有报告错误),但它也会导致以下警告,该警告也显示在 SonarQube 中:

[WARNING] Specifying module-relative paths at project level in the property 'sonar.inclusions' is deprecated. To continue matching files like 'frontend/pom.xml', update this property so that patterns refer to project-relative paths.

到目前为止,我尝试的所有路径要么导致总分析的文件较少,要么导致错误,因为单个文件将被多次索引,这是由于包含模式产生的非不相交集。因此问题...

如何使用*.inclusions 属性来消除警告,同时仍分析所有子模块中的所有文件?

【问题讨论】:

【参考方案1】:

绿色,

我在使用 Jenkins 管道时遇到了同样的问题。我解决了包括“projectBaseDir”参数,如下所示:

<properties>
    <sonar.projectBaseDir>.</sonar.projectBaseDir>
</properties>

参考:https://community.sonarsource.com/t/relationship-between-projectbasedir-sources-and-exclusions/12785

【讨论】:

以上是关于sonar-maven-plugin:如何在包含模式中使用项目相对路径?的主要内容,如果未能解决你的问题,请参考以下文章

sonar-maven-plugin问题

sonar-maven-plugin:3.1.1:sonar 升级到 SonarQube 6.0 后分析错误

在 openjdk11 下执行 sonar-maven-plugin 时不支持的类文件主版本 55

无法在项目 jraft 上执行目标 org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar (default-cli):没有治

执行 org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.0.2155:sonar 时遇到 API 不兼容

sonar Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar