Java 配置Sonar以从Maven pom.xml中排除文件
我在maven中配置了一个项目,代码分析由SonarQube完成 我试图在pom.xml文件中配置SonarQube,以便从代码分析中排除一些文件。这些文件可以通过它们的类名来识别,它们在扩展名之前包含下划线字符(它们是元模型类)。下面是pom.xml文件中我试图排除它们的部分:Java 配置Sonar以从Maven pom.xml中排除文件,java,xml,maven,sonarqube,Java,Xml,Maven,Sonarqube,我在maven中配置了一个项目,代码分析由SonarQube完成 我试图在pom.xml文件中配置SonarQube,以便从代码分析中排除一些文件。这些文件可以通过它们的类名来识别,它们在扩展名之前包含下划线字符(它们是元模型类)。下面是pom.xml文件中我试图排除它们的部分: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>sonar-maven-plugin&
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<sonar.sources>src/main/java</sonar.sources>
<sonar.exclusions>file:**/src/main/java/**/*_.*</sonar.exclusions>
</configuration>
</plugin>
org.codehaus.mojo
声纳maven插件
2.2
src/main/java
文件:*/src/main/java/***\*
但是,上述代码不起作用。有没有办法从pom.xml文件中配置SonarQube,以便在分析源代码时忽略这些文件
提前感谢。POM文件的声纳排除(与其他声纳属性一样)。与此类似(从当前项目中排除jOOQ自动生成代码的示例):
UTF-8
http://www.example.com/
jdbc:postgresql://www.example.com/sonar
org.postgresql.Driver
声纳
声纳
org/binarytherapy/generated/***,***/GuiceBindComposer.java
再利用报告
在
中提到的类/包从声纳的所有静态分析中排除给定的类,但是
仅从覆盖范围中排除给定的类/包,并且仍然需要分析其他参数
<properties>
<sonar.coverage.exclusions>
**/domain/**/*,
**/pojos/*
</sonar.coverage.exclusions>
</properties>
**/域/***,
**/波乔/*
参考:
资料来源:
在按照公认答案进行声纳排除时,请确保遵循以下模式:
相对路径基于组件的完全限定名称(如下所示):
示例:
# Exclude all classes ending with "Bean"
# Matches org/sonar.api/MyBean.java, org/sonar/util/MyOtherBean.java, etc.
**/*Bean.java
# Exclude all classes in the "src/main/java/org/sonar" directory
# Matches src/main/java/org/sonar/MyClass.java, src/main/java/org/sonar/MyOtherClass.java
# But does not match src/main/java/org/sonar/util/MyClassUtil.java
src/main/java/org/sonar/*
# Exclude all files in the "bank" directory and its sub-directories
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl, bank/data/REM012345.cob
bank/**/*
# Exclude all COBOL programs in the "bank" directory and its sub-directories whose extension is .cbl
# Matches bank/ZTR00021.cbl, bank/data/CBR00354.cbl
bank/**/*.cbl
因此,如果要排除以“Bean”结尾的所有类以及“src/main/java/org/sonar”目录(但不在其子目录中)中的所有类,请将以下sonar.excludes
属性添加到pom的属性中:
<properties>
...
<sonar.exclusions>**/*Bean.java,src/main/java/org/sonar/*</sonar.exclusions>
</properties>
...
**/*java,src/main/java/org/sonar/*
我用声纳分析PHP代码库。
和
都没有奏效。
我的解决方案是-我没有指定排除项,而是指定了包含目录,如下所示:
<properties>
.........
<sonar.exclusions>./app/models,./app/controllers</sonar.exclusions>
.........
</properties>
.........
./app/型号,./app/控制器
.........
我们必须在maven settings.xml文件中添加以下代码
声纳
真的
http://localhost:9000
#排除同一包下的更多类
src/main/java/co/domain/*,
src/main/java/co/util/JsonMapper.java
#排除个别类别
src/main/java/co/util/ProviderCallBuilder.java
有三种方法。
1) You can add these files to the properties in your pom.xml: This one is to exclude from code duplication:
<properties>
<sonar.cpd.exclusions>
**/dto/**/*,
**/entity/**/*
</sonar.cpd.exclusions>
</properties>
2)Using pom.xml We can also define exclusion rules in the pom.xml file using analysis properties.
<properties>
<sonar.issue.ignore.multicriteria>e1</sonar.issue.ignore.multicriteria>
<sonar.issue.ignore.multicriteria.e1.ruleKey>
java:S4784
</sonar.issue.ignore.multicriteria.e1.ruleKey>
<sonar.issue.ignore.multicriteria.e1.resourceKey>
**/commons/**/*
</sonar.issue.ignore.multicriteria.e1.resourceKey>
</properties>
3) Using sonar-project.properties
We can also define exclusion rules in the sonar-project.properties file using analysis
properties.Let's define and add the sonar-project.properties file to our resource dir:
sonar.issue.ignore.multicriteria=e1
sonar.issue.ignore.multicriteria.e1.ruleKey=java:S106
sonar.issue.ignore.multicriteria.e1.resourceKey=**/SonarExclude.java
1)您可以将这些文件添加到pom.xml中的属性中:此文件用于排除代码重复:
**/dto/***,
**/实体/**/*
2) 使用pom.xml,我们还可以使用分析属性在pom.xml文件中定义排除规则。
e1
java:S4784
**/公地/**/*
3) 使用sonar-project.properties
我们还可以使用analysis在sonar-project.properties文件中定义排除规则
属性。让我们定义sonar-project.properties文件并将其添加到资源目录:
sonar.issue.ignore.multicriteria=e1
sonar.issue.ignore.multicriteria.e1.ruleKey=java:S106
sonar.issue.ignore.multicriteria.e1.resourceKey=**/SonarExclude.java
SonarQube配置参数被视为“系统属性”,如果我没记错的话。您是否尝试过在pom.xml中将它们设置为全局的?当字符串很快变长时,指定许多排除项的最佳选项是什么?您可以将其放在多行上;在每个逗号之后都有一个换行符。com/vedant/pt/request/*.java我将其添加到pom属性中,并且不排除该包下的类。如果您想排除包下的所有类,您可能应该像我的示例中那样执行/***
,我们将非常感谢您的帮助。您可以在此处阅读有关Ant样式路径匹配的更多信息:@MikkelLøkke-有没有任何方法可以禁用pom.xml
文件中的特定规则?我无法在sonar中禁用它,因为它在组织级别使用。在版本6.5中,如果在每个条目之间添加新行,则会出现错误。请注意,这将从所有静态分析和代码覆盖范围中排除匹配的文件。此外,多个匹配器之间需要逗号。您好,欢迎光临。请考虑增加更多信息。
<properties>
.........
<sonar.exclusions>./app/models,./app/controllers</sonar.exclusions>
.........
</properties>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://localhost:9000</sonar.host.url>
<sonar.exclusions>
# exclude more class under same package
src/main/java/co/domain/*,
src/main/java/co/util/JsonMapper.java
# exclude individual class
src/main/java/co/util/ProviderCallBuilder.java
</sonar.exclusions>
</properties>
</profile>
1) You can add these files to the properties in your pom.xml: This one is to exclude from code duplication:
<properties>
<sonar.cpd.exclusions>
**/dto/**/*,
**/entity/**/*
</sonar.cpd.exclusions>
</properties>
2)Using pom.xml We can also define exclusion rules in the pom.xml file using analysis properties.
<properties>
<sonar.issue.ignore.multicriteria>e1</sonar.issue.ignore.multicriteria>
<sonar.issue.ignore.multicriteria.e1.ruleKey>
java:S4784
</sonar.issue.ignore.multicriteria.e1.ruleKey>
<sonar.issue.ignore.multicriteria.e1.resourceKey>
**/commons/**/*
</sonar.issue.ignore.multicriteria.e1.resourceKey>
</properties>
3) Using sonar-project.properties
We can also define exclusion rules in the sonar-project.properties file using analysis
properties.Let's define and add the sonar-project.properties file to our resource dir:
sonar.issue.ignore.multicriteria=e1
sonar.issue.ignore.multicriteria.e1.ruleKey=java:S106
sonar.issue.ignore.multicriteria.e1.resourceKey=**/SonarExclude.java