声纳:非maven项目 - >排除src中的目录

时间:2013-03-23 18:37:19

标签: maven sonarqube pom.xml

我有一个非maven项目,但我必须使用Sonar进行一次代码分析。所以我创建了一个很有效的pom.xml。我看到使用这个pom文件分析我的src directoy下面的所有文件和文件夹:

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.group.id</groupId>
    <artifactId>arifactId</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <name>MyApplication</name>
    <build>
        <sourceDirectory>src</sourceDirectory>
    </build>

    <properties>
        <sonar.dynamicAnalysis>false</sonar.dynamicAnalysis>
    </properties>
</project>

但我想排除一个目录及其所有子目录。我有两个目录src/fr/src/com/。我只想src/fr/并排除src/com/。 改变

<sourceDirectory>src</sourceDirectory>

<sourceDirectory>src/fr</sourceDirectory>

我收到此错误:

Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar 
(default-cli) on project arifactId: Can not execute Sonar: Sonar is 
unable to analyze file : '/Users/tim/workspace/src/fr/xxx/dao/TestClass.java': 
The source directory does not correspond to the package declaration fr.xxx.dao

1 个答案:

答案 0 :(得分:2)

正常情况下,The source directory does not correspond to the package declaration,正如它告诉我们的那样,当在java文件中声明的package与目录结构不对应时,这是一个错误,例如。

package my.test.java;
public class MyTest {}

The directory should be my/test/java/MyTest.java, 
please note the src is treated as a sourceDirectory.

根据您的情况,您已将sourceDirectorysrc更改为src/fr,这意味着

package fr.xxx.dao;
public class TestClass{}

The directory is xxx/dao/TestClass.java, 
please note the src/fr is treated as a sourceDirectory. Then the fr is ignored.

通常,当我们想要从声纳分析中排除某些包时,可以通过在每个质量maven插件中设置它们来简单地完成它,例如findbugsPMDcobertura

无论如何,Sonar还为每个项目提供配置。我们可以使用以下步骤进行设置: -

请注意:我使用的是Sonar 3.5版,如果您使用的是不同的版本,菜单可能会有所不同。

  1. 访问我们的声纳网站,例如https://myhost/sonar
  2. 从仪表板中选择它来转到我们的项目。
  3. 在右上角,您会看到Configuration菜单。点击它,然后选择Settings
  4. Settings页面,选择Exclusions菜单。
  5. Exclusions,您只需设置能够使用通配符的排除模块即可。 (您可以在页面底部看到示例。)
  6. 您案例中的示例,排除应为fr/**。 (排除文件夹fr下的所有内容。)
  7. 请参阅以下链接: -

    1. Project Administration
    2. Excluding Files
    3. Analysis Parameters
    4. 我希望这可能有所帮助。