使用Ant将JaCoCo集成到声纳中

 林大雨00 发布于 2023-02-12 19:39

我无法使用Ant将JaCoCo与声纳集成.这项任务非常新,并且是第一次集成.我经历过许多链接

https://github.com/SonarSource/sonar-examples/blob/master/projects/code-coverage/ut/ant/ut-ant-jacoco-runTests/build.xml

http://docs.sonarqube.org/display/SONAR/Code+Coverage+by+Unit+Tests+for+Java+Project

还有很多.

我试图在另一个VM上显示结果,代码在我的VM中.获取与JDK6,VM相关的各种错误,并且无法分析我的包结构我需要在以上链接中为VM等定义任何特定的项目属性.我还想包括我的checkstyle,和findbugs一样工作就像魅力.只需要整合JaCoCo.任何信息都会有很大帮助.

如果发现我的描述不符合我的标记,请问

感谢帮助

1 个回答
  • 以下是ANT构建,配置为运行junit单元测试并使用jacoco进行代码覆盖率报告.结果上传到Sonar,最后ivy用于下载第三方jar并管理类路径.

    ??? build.properties
    ??? build.xml
    ??? ivy.xml
    ??? src
        ??? main
        ?   ??? java
        ?       ??? org
        ?           ??? demo
        ?               ??? App.java
        ??? test
            ??? java
                ??? org
                    ??? demo
                        ??? AppTest.java
    

    build.properties

    # Build properties
    build.dir=build
    
    src.dir=src/main/java
    test.src.dir=src/test/java
    
    classes.dir=${build.dir}/classes
    test.classes.dir=${build.dir}/test-classes
    
    reports.dir=${build.dir}/reports
    
    # Sonar properties
    sonar.projectKey=org.demo:demo
    sonar.projectName=Demo project
    sonar.projectVersion=1.0
    sonar.projectDescription=This is my demo Sonar project
    
    sonar.host.url=http://localhost:9000
    
    sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar
    sonar.jdbc.driverClassName=org.h2.Driver
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
    
    sonar.working.directory=${build.dir}/sonar
    
    sonar.language=java
    sonar.sources=${src.dir}
    sonar.binaries=${classes.dir}
    sonar.tests=${test.src.dir}
    
    sonar.dynamicAnalysis=reuseReports
    sonar.surefire.reportsPath=${reports.dir}/junit
    sonar.java.coveragePlugin=jacoco
    sonar.jacoco.reportPath=${build.dir}/jacoco.exec
    

    build.xml文件

    <project name="demo" default="test" xmlns:ivy="antlib:org.apache.ivy.ant">
    
        <property file="build.properties"/>
    
        <target name="bootstrap" description="Install ivy">
            <mkdir dir="${user.home}/.ant/lib"/>
            <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar"/>
        </target>
    
        <target name="resolve" description="Download dependencies and setup classpaths">
            <ivy:resolve/>
            <ivy:report todir='${reports.dir}/ivy' graph='false' xml='false'/>
    
            <ivy:cachepath pathid="compile.path" conf="compile"/>
            <ivy:cachepath pathid="test.path"    conf="test"/>
            <ivy:cachepath pathid="build.path"   conf="build"/>
        </target>
    
        <target name="init" depends="resolve" description="Create build directories">
            <mkdir dir="${classes.dir}"/>
            <mkdir dir="${test.classes.dir}"/>
            <mkdir dir="${reports.dir}/junit"/>
        </target>
    
        <target name="compile" depends="init" description="Compile source code">
            <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" debug="true" classpathref="compile.path"/>
        </target>
    
        <target name="compile-tests" depends="compile" description="Compile test source code">
            <javac srcdir="${test.src.dir}" destdir="${test.classes.dir}" includeantruntime="false" debug="true">
                <classpath>
                    <path refid="test.path"/>
                    <pathelement path="${classes.dir}"/>
                </classpath>
            </javac>
        </target>
    
        <target name="test" depends="compile-tests" description="Run unit tests and code coverage reporting">
            <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml" classpathref="build.path"/>
    
            <jacoco:coverage destfile="${build.dir}/jacoco.exec" xmlns:jacoco="antlib:org.jacoco.ant">
                <junit haltonfailure="yes" fork="true">
                    <classpath>
                        <path refid="test.path"/>
                        <pathelement path="${classes.dir}"/>
                        <pathelement path="${test.classes.dir}"/>
                    </classpath>
                    <formatter type="plain" usefile="false" />
                    <formatter type="xml"/>
                    <batchtest fork="yes" todir="${reports.dir}/junit">
                        <fileset dir="${test.src.dir}">
                            <include name="**/*Test*.java"/>
                            <exclude name="**/AllTests.java"/>
                        </fileset>
                    </batchtest>
                </junit>
            </jacoco:coverage>
        </target>
    
        <target name="sonar" depends="test" description="Upload metrics to Sonar">
            <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml" classpathref="build.path"/>
    
            <ivy:cachepath pathid="sonar.libraries" conf="compile"/> 
    
            <sonar:sonar xmlns:sonar="antlib:org.sonar.ant"/>
        </target>
    
        <target name="clean" description="Cleanup build files">
            <delete dir="${build.dir}"/>
        </target>
    
        <target name="clean-all" depends="clean" description="Additionally purge ivy cache">
            <ivy:cleancache/>
        </target>
    
    </project>
    

    的ivy.xml

    <ivy-module version="2.0">
        <info organisation="com.myspotontheweb" module="demo"/>
    
        <configurations defaultconfmapping="compile->default">
            <conf name="compile" description="Required to compile application"/>
            <conf name="test"    description="Required for test only" extends="compile"/>
            <conf name="build"   description="Build dependencies"/>
        </configurations>
    
        <dependencies>
            <!-- compile dependencies -->
    
            <!-- test dependencies -->
            <dependency org="junit" name="junit" rev="4.10" conf="test->default"/>
    
            <!-- build dependencies -->
            <dependency org="org.codehaus.sonar-plugins" name="sonar-ant-task" rev="2.1" conf="build->default"/>
            <dependency org="org.jacoco" name="org.jacoco.ant" rev="0.6.3.201306030806" conf="build->default"/>
    
            <!-- Global exclusions -->
            <exclude org="org.apache.ant"/>
        </dependencies>
    
    </ivy-module>
    

    2023-02-12 19:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有