Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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
Linux 声纳.使用Cobertura测量代码覆盖率_Linux_Continuous Integration_Code Coverage_Sonarqube - Fatal编程技术网

Linux 声纳.使用Cobertura测量代码覆盖率

Linux 声纳.使用Cobertura测量代码覆盖率,linux,continuous-integration,code-coverage,sonarqube,Linux,Continuous Integration,Code Coverage,Sonarqube,我用声纳测量代码质量。我不知道的一件事是使用Cobertura测量代码覆盖率的步骤 我遵循了中的步骤,并能够生成xml文件。如何将这些xml文件导入SONAR 在声纳中使用Cobertura有更简单的方法吗 我在与SONAR服务器不同的服务器上运行代码覆盖率(Cobertura)。这两台服务器都在LINUX下运行 谢谢你的帮助 您必须将这些属性添加到Sonar的pom.xml: 假的 生成源 目标/报告/测试/ ../project/target/reports/coverage/covera

我用声纳测量代码质量。我不知道的一件事是使用Cobertura测量代码覆盖率的步骤

我遵循了中的步骤,并能够生成xml文件。如何将这些xml文件导入SONAR

在声纳中使用Cobertura有更简单的方法吗

我在与SONAR服务器不同的服务器上运行代码覆盖率(Cobertura)。这两台服务器都在LINUX下运行


谢谢你的帮助

您必须将这些属性添加到Sonar的
pom.xml


假的
生成源
目标/报告/测试/
../project/target/reports/coverage/coverage.xml
(具有适合您的环境的路径)

并运行:

mvn声纳:声纳

查看查看以了解更多详细信息。

如果您使用的是Maven,那么您在POM文件中没有任何特殊的指定。只要运行“mvn clean sonar:sonar”,sonar就会自动编译代码,使用Cobertura(sonar中的默认覆盖引擎)运行测试,并将所有结果推送到DB中

如果您使用的是Ant[1]或简单java runner[2]而不是Maven,则相同

我坚持的事实是,在运行Sonar之前,您不必手动运行Cobertura(例如,使用Ant任务)

[1]

[2]

法布里斯,
SonarSource

您将Sonar任务配置为上载由构建逻辑的其他部分生成的单元测试和cobertura报告

这与Maven形成对比,Maven有一个标准的构建生命周期,Sonar可以利用这个生命周期

单元测试和代码覆盖率 以下逻辑使用cobertura指令化类运行单元测试。最后,cobertura生成了一份XML覆盖率报告:

<target name="instrument-classes" depends="compile-tests">
    <taskdef resource="tasks.properties" classpathref="test.path"/>
    <cobertura-instrument todir="${instrumented.classes.dir}" datafile="${build.dir}/cobertura.ser">
        <fileset dir="${classes.dir}"/>
    </cobertura-instrument>
</target>

<target name="junit" depends="instrument-classes">
    <junit printsummary="yes" haltonfailure="yes">
        <classpath>
            <path refid="test.path"/>
            <pathelement path="${instrumented.classes.dir}"/>
            <pathelement path="${test.classes.dir}"/>
        </classpath>

        <formatter type="xml"/>

        <batchtest fork="yes" todir="${test.reports.dir}">
            <fileset dir="${test.src.dir}">
                <include name="**/*Test*.java"/>
                <exclude name="**/AllTests.java"/>
            </fileset>
        </batchtest>
    </junit>
</target>

<target name="test" depends="junit">
    <cobertura-report format="xml" datafile="${build.dir}/cobertura.ser" destdir="${cobertura.reports.dir}"/> 
</target>
演示如何配置Sonar以获取junit创建的单元测试报告和cobertura生成的代码覆盖率报告


构建不必与Sonar在同一台服务器上运行。在这种情况下,必须提供远程Sonar URL和JDBC凭据。

如果我的项目不使用Maven怎么办?我还需要运行它吗?从Cobertura网站上看,我们似乎也可以使用ANT。我错了吗?现在,我对sonar-maven-Cobertura之间的关系感到困惑。假设我通过调用运行构建脚本的ant从hudson调用一个构建。我的构建脚本将进行构建并更新SONAR DB。此外,最初,我认为我只需要在构建脚本中添加一些将运行Coberture的命令。现在我不确定。在我的案例中,我应该如何使用maven调用Coberture?还欢迎其他解决方案?感谢您的帮助。Sonar直到最近才与Maven连接。自2011年3月2.6日起,
声纳也支持ANT。您可以将上述属性添加到ant脚本中,如图所示,例如:
。我没有运行过Sonar+Cobertura+Ant runner,但应该没有什么不同。或者,你可以单独检查声纳(没有蚂蚁,马文等),我试着按照你的指示;然而,我仍然有和以前一样的问题,我看不到声纳内的覆盖统计数据。生成的xml和ser文件与我之前的类似。您能帮我获取SONAR works中的统计数据吗?SONAR任务输出是否显示您正在加载正确的覆盖率文件?您是否配置了“SONAR.cobertura.reportsPath”属性以获取正确的文件?任务输出应显示完整的文件路径。如果Sonar试图加载一个不存在的文件,这可以解释您丢失的代码覆盖率度量是的,我有。我想我已经成功了。之前让我困惑的是,我在测试覆盖率上看到了0%,所以我认为我可能没有正确配置它。后来,我意识到如果声纳配置不当,它只会给我一个“-”。谢谢你的帮助。顺便说一句,我喜欢你组织声纳配置参数的方式。现在我需要弄清楚为什么它给了我0%的覆盖率。在以后的版本中,“sonar.cobertura.reportsPath”属性已更改为“sonar.cobertura.reportPath”>。关于此主题的更新:可以在我们的sonar示例库中找到示例=>
<target name="sonar" depends="test">
    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml" classpathref="sonar.path"/>

    <sonar:sonar key="${sonar.project.key}" version="${sonar.project.version}" xmlns:sonar="antlib:org.sonar.ant"/>
</target>
sonar.project.key=org.demo:demo
sonar.project.version=1.0-SNAPSHOT
sonar.projectName=Demo project

sonar.host.url=http://myserver:9000
sonar.jdbc.url=jdbc:mysql://myserver:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

sonar.sources=${src.dir}
sonar.tests=${test.src.dir}
sonar.binaries=${classes.dir}

sonar.dynamicAnalysis=reuseReports
sonar.surefire.reportsPath=${test.reports.dir}
sonar.java.coveragePlugin=cobertura
sonar.cobertura.reportsPath=${cobertura.reports.dir}/coverage.xml