我有一个非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
答案 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.
根据您的情况,您已将sourceDirectory
从src
更改为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插件中设置它们来简单地完成它,例如findbugs
,PMD
,cobertura
等
无论如何,Sonar还为每个项目提供配置。我们可以使用以下步骤进行设置: -
https://myhost/sonar
Configuration
菜单。点击它,然后选择Settings
。Settings
页面,选择Exclusions
菜单。Exclusions
,您只需设置能够使用通配符的排除模块即可。 (您可以在页面底部看到示例。)fr/**
。 (排除文件夹fr下的所有内容。)请参阅以下链接: -
我希望这可能有所帮助。