Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Maven提供的sonarQube在提交之前收集增量分析_Java_Maven_Sonarqube_Sonar Runner_Pre Commit - Fatal编程技术网

Java 如何使用Maven提供的sonarQube在提交之前收集增量分析

Java 如何使用Maven提供的sonarQube在提交之前收集增量分析,java,maven,sonarqube,sonar-runner,pre-commit,Java,Maven,Sonarqube,Sonar Runner,Pre Commit,问题:如何使用Maven提供的sonarQube在提交之前收集增量分析 背景: 我们正在使用SonarQube 4.1.2对使用Maven构建的java项目进行分析。我们已经在服务器上安装了问题报告插件1.1 我已经在构建控制台中启用了增量报告,并且可以看到使用maven命令从持续集成服务器中正确提供增量数据:mvn org.codehaus.mojo:sonar-maven插件:2.3.1:sonar-p sonar-Dsonar.java.target=1.7-Dsonar.java.sou

问题:如何使用Maven提供的sonarQube在提交之前收集增量分析

背景: 我们正在使用SonarQube 4.1.2对使用Maven构建的java项目进行分析。我们已经在服务器上安装了问题报告插件1.1

我已经在构建控制台中启用了增量报告,并且可以看到使用maven命令从持续集成服务器中正确提供增量数据:
mvn org.codehaus.mojo:sonar-maven插件:2.3.1:sonar-p sonar-Dsonar.java.target=1.7-Dsonar.java.source=1.7-Dsonar.profile=MyProfileName-Dsonar.branch=branchID

有一个相关的Maven配置文件:

<profile>
    <id>sonar</id>
    <activation>
            <activeByDefault>false</activeByDefault>
    </activation>     
    <properties>
        <sonar.hostname>mySonarHostName</sonar.hostname>
        <sonar.host.url>http://${sonar.hostname}:9000</sonar.host.url>
        <sonar.jdbc.url>jdbc:oracle:thin:@${sonar.hostname}:1521/sabrixdb</sonar.jdbc.url>
        <sonar.jdbc.username>dbusername</sonar.jdbc.username>
        <sonar.jdbc.password>dbpassword</sonar.jdbc.password>
        <sonar.jdbc.driver>oracle.jdbc.driver.OracleDriver</sonar.jdbc.driver>

        <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
        <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    </properties>
</profile>
当使用命令从开发机器调用它进行增量分析时:
mvn org.codehaus.mojo:sonar maven插件:2.3.1:sonar-Dsonar.profile=MyProfileName-Dsonar.branch=branchID-Dsonar.analysis.mode=incremental-Dsonar.host.url=http://mySonarHostName:9000 -Dsonar.issuesReport.html.enable=true-Dsonar.issuesReport.console.enable=true-Dsonar.dynamicAnalysis=reusereport

我得到了一个增量报告,其中包含了修改后的代码所预期的更多问题。奇怪的是,这里的数字也大于sonarQube服务器上测量的项目问题总数:

-------------  Issues Report  -------------

    +65058 issues

    +42709 major
     +2287 minor
    +20062 info

-------------------------------------------
参考链接 作为调查的一部分,我一直在咨询以下链接:

提交前分析的三个选项

SonarQube中的分析与预览与增量预览

问题报告插件

CodeHaus声纳Maven插件

更新(2014/07/16) 注意到这个线程[。这说明增量正在处理文件的散列,以确定要分析的文件

我正在进行的项目生成了sonar没有被告知要忽略的代码。我假设这会导致额外的搅动(除了扫描机器生成的代码是个坏主意之外)。为了探索这一理论,我在命令中添加了
-Dsonar.exclusions=com/generatedpackage/***.java

更新(2014/07/17)

通过在sonar.Exclutions中指定生成的源,检测到的“增量”违规数量分析减少。一旦这些都被考虑在内,问题/违规的数量就与我为本地验证流程而引入的问题数量一致。为了简化维护,我使用以下模式简化所有生成文件的度量:
file:*/generated*/**

为了一致性,我能够在分析项目的根POM中指定这一点

<sonar.exclusions>file:**/generated*/**</sonar.exclusions>
文件:*/generated*/**

如上所述,sonar Qube论坛线程解释说,增量分析将只分析哈希与sonar Qube服务器上的哈希文件不匹配的文件。

成功使用此功能的关键有两个方面: 1) 确保sonarQube服务器上安装了问题报告插件 2) 指定sonar.exclusion以确保排除生成的源

有了这个和一个“sonar”配置文件,用户只需将这个“sonar”配置文件和sonar:sonar目标添加到maven命令中

这一变化:

mvn clean install -P myProfile
致:

maven概要文件可以将sonar目标绑定到验证阶段,这样就不需要在添加概要文件时指定目标。我选择不绑定插件,以提供更大的灵活性


这足以让用户验证增量代码。

您是否有机会遇到此问题?
mvn clean install -P myProfile
mvn clean install sonar:sonar -P myProfile,sonar