持续集成三 maven配置jacoco、checkstyle、findbugs、pmd

目录

1.配置checkstyle

2. 配置findbugs

3. 配置pmd

4. 配置jacoco

5.执行指定版本


这几个工具的用途:

checkstyle:检测代码规范

findbugs:检测代码不明显的语法错误,比如使用“==”比较字符串

pmd:扫描潜在问题,如未用过的局部变量,未用过的导入声明,方法名问题等

jacoco:代码覆盖率检查

 

首先先说一些,在网上会看到有些会配置这个东西,是为了避免项目环境不一致问题。


    UTF-8
    1.8
    1.8

    true
    org.apache.maven.plugins
    maven-compiler-plugin
    3.1
    
        ${compiler.source}
        ${compiler.target}
        ${project.build.sourceEncoding}
    

1.配置checkstyle

在build中配置了checkstyle中配置了生效时期段后,会在相应的周期执行,执行失败,则编译失败

如果要跳过checkstyle:mvn clean package -Dcheckstyle.skip=true

checkstyle 内置了四种规范

1. sun_checks.xml  -> 默认规范

2.avalon_checks.xml

3.maven_checks.xml

4.turbine_cheks.xml


        
            

                org.apache.maven.plugins
                maven-checkstyle-plugin
                3.0.0

                
                    

                        validate

                        validate

                        
                            UTF-8
                            true
                            true
                        

                        
                            check
                        
                    
                
            
        
    

    
    
    

它有有4个命令:

  • checkstyle:checkstyle 执行checkstyle分析并生成违规报告

  • checkstyle:check  分析并向控制台输出不规范计数,可能会导致失败

  • checkstyle:checkstyle-aggregate  多模块分析汇总报告

详细可见官网: http://maven.apache.org/plugins/maven-checkstyle-plugin/usage.html

validate这个属性可以不用配置,那么不配置的话,就需要我们用上面的命令去执行,比如:mvn checkstyle:checkstyle;或是到idea右边的maven插件列表里执行。

2. 配置findbugs


    org.codehaus.mojo
    findbugs-maven-plugin
    3.0.4
    
        
        Low
        
        Medium
        true
        true
        
        
    
    
        
            run-findbugs
            package
            

                check
            
        
    

findbugs有以下几个命令:

  • check:检查代码,没通过,就失败

  • findbugs:检查代码,没通过,不会失败,会生成结果文件

  • gui:启动gui界面显示结果

同样可以手动触发

3. 配置pmd

这个pmd一开始我看不太懂的,很多配置文件,第一个反应就是,这配置文件哪里有、怎么配、要自己写吗?

好在官方都有默认的,具体见官网:http://maven.apache.org/plugins/maven-pmd-plugin/examples/usingRuleSets.html

 

官网提醒:pmd 3.0 到 5.0 绑定的规则路径由   /rulesets/xyz.xml  更改为  /rulesets/java/xyz.xml

pmd 3.9.0 后,规则按类别分类:如: /category/java/bestpractices.xml,具体的默认规则看官网


    org.apache.maven.plugins
    maven-pmd-plugin
    3.13.0
    
        
            /category/java/bestpractices.xml
        
        true
    
    
        
            pmd-check-verify
            package
            
                check
            
        
        
            pmd-pmd-site
            site
            
                cpd
            
        
    
    
    
        
            com.alibaba.p3c
            p3c-pmd
            2.0.1
        
    

pmd有以下几个命令:

  • check:代码检测,没通过,就编译失败

  • cpd:执行会创建一个详细报表

  • cpd-check:没通过,就编译失败

  • pmd:生成详细报表

4. 配置jacoco



    org.jacoco
    jacoco-maven-plugin
    0.7.8
    
        
            prepare-agent
            
                prepare-agent
            

            
                ${project.build.directory}/jacoco.exec
            
            surefireArgLine
        
        
        
            check
            
                check
            
        
        
            report
            prepare-package
            
                report
            
        
  
      
        default-report
        test
        
          report
        
        
            ${project.build.directory}/jacoco.exec
            ${project.reporting.outputDirectory}/jacoco
        
      
    


    
        
        
            
                BUNDLE
                
                    
                    
                        METHOD
                        COVEREDRATIO
                        0.80
                    
                    
                    
                        INSTRUCTION
                        COVEREDRATIO
                        0.80
                    
                    
                    
                        LINE
                        COVEREDRATIO
                        0.80
                    
                    
                    
                        CLASS
                        MISSEDCOUNT
                        0
                    
                
            
        
    



     
                org.apache.maven.plugins
                maven-surefire-plugin
                2.16
                

                    
                        Sample.java
                        %regex[.*[Cat|Dog].*Test.*]
                    

                    true
                    
                        ${surefireArgLine}
                    
                    true
                
            

maven-surefire-plugin是用来执行单元测试的,可以定义我们要执行的测试类,支持通配符,和正则,

默认规则:

**/Test*.java

**/*Test.java

**/*TestCase.java

具体详细的介绍可以看: https://www.cnblogs.com/pixy/p/4718176.html

覆盖率为0的情况: 自动化配置四 Jenkins配置sonar 配置多模块覆盖率为0问题

如果是多个模块,可以把这些依赖放到父pom里,然后在运行的使用使用命令来执行:

子模块虽然继承了插件但是在父目录打包的时候子模块不会执行绑定生命周期的命令

mvn clean package checkstyle:checkstyle findbugs:findbugs pmd:pmd org.jacoco:jacoco-maven-plugin:prepare-agent -Dmaven.test.failure.ignore=true

在使用这些命令的时候使用 -Dmaven.test.failure.ignore=true忽略单元测试失败问题

 

配置后的效果,可以在site下面,打开index.html查看报表显示。

如果需要配置sonar的:

持续集成三 maven配置jacoco、checkstyle、findbugs、pmd_第1张图片

持续集成三 maven配置jacoco、checkstyle、findbugs、pmd_第2张图片

5.执行指定版本

最近碰到一种情况,给一个不是自己搭的项目做代码质量扫描,jenkins 配置的maven 是3.1,自己本身用的是3.6 然后想findbugs使用3.0.1会报错:

findbugs for parameter pluginArtifacts: Cannot assign configuration entry ‘pluginArtifacts’ with value ‘${plugin.artifacts}’ of type java.util.Collections.UnmodifiableRandomAccessList to property of type java.util.ArrayList

这时版本和maven版本不匹配造成的,

因为是公司项目,只做本地测试,就只在本地升级了findbugs的版本为3.0.5,解决了这个问题。

 

那么还有一种情况:

父级pom配置的是findbugs:3.0.5,但是在执行的时候回出现某些模块是findbugs:3.0.1,全局搜索找不到哪里还有引用,头疼,碰到这种问题,就指定版本去执行,没有解决根源问题

mvn org.codehaus.mojo:findbugs-maven-plugin:3.0.5:findbugs

同样的其他插件也可以这样指定版本。

你可能感兴趣的:(学习笔记)