Jenkins集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果

为了规范代码,我们一般会集成静态代码检测工具,比如PMD、FindBugs、Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢?

今天做了调研和实现,过程如下

首先看,最终效果:

构建结果邮件

1.pom.xml

build。plugins 增加:


                maven-assembly-plugin
                
                    
                        package
                        
                            single
                        
                        
                            ${project.artifactId}-${project.version}
                            false
                            
                                src/assembly/assembly-descriptor.xml
                            
                        
                    
                
            

            
                org.codehaus.mojo
                findbugs-maven-plugin
                3.0.5
                
                    High
                    Default
                    true
                    true
                    true
                    html
                
            

            
                org.apache.maven.plugins
                maven-pmd-plugin
                3.8
            

reporting 增加:

    
        

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

            
            
                org.apache.maven.plugins
                maven-pmd-plugin
                
                    true
                    utf-8
                    100
                    1.8
                    
                        **/*Bean.java
                        **/generated/*.java
                    
                    
                        target/generated-sources/stubs
                    
                
                3.8
            

            
                org.apache.maven.plugins
                maven-jxr-plugin
                2.5
            
            
                org.apache.maven.plugins
                maven-surefire-report-plugin
                2.14.1
            
            
                org.codehaus.mojo
                cobertura-maven-plugin
            

        
    

2 jenkins设置

2.1 安装相关插件

直接搜索安装:

  • Checkstyle Plug-in
  • PMD Plug-in
  • FindBugs Plug-in
  • Static Analysis Collector Plug-in

邮件插件安装:

  • Email Extension Plugin
  • Email Extension Template Plugin

2.2 项目配置

maven构建Goals设置为:
pmd:pmd checkstyle:checkstyle findbugs:findbugs package -DskipTests

在构建设置里,勾上

  • Publish Checkstyle analysis results
  • Publish FindBugs analysis results
  • Publish PMD analysis results

构建后操作,添加Publish combined static analysis results,默认设置即可。

2.3 邮件配置

首先在系统设置里,配置Extended E-mail Notification部分

设置:

  • Default Subject : 自动构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
  • Default Content: ${JELLY_SCRIPT, template="analysis.jelly"}

剩下的自己配置下SMTP和收件人。

这里邮件内容使用analysis.jelly,使用jelly script,系统没有这个模板,我们需要配置一下:

打开系统管理-Managed files,增加一个Extended Email Publisher Jelly Template

模板文件如下,该模板修改自官方的模板,做了一定的本地化和样式调整:



  
    
      ${project.name}
      
    
    
      

${project.name}构建成功失败

基本信息

构建地址 ${rooturl}${build.url}
项目: ${project.name}
构建时间: ${it.timestampString}
构建耗时: ${build.durationString}
构建原因: ${cause.shortDescription}
构建描述: ${build.description}
构建服务器: ${build.builtOnStr} master

构建健康报告

W Description Score
${healthReport.description} ${healthReport.score}

代码变更记录

${cs.msgAnnotated}

by ${cs.author}

${spc}${p.editType.name} ${p.path}

无变更


构建产物

MAVEN 构建产物

${m.key.displayName}


JUnit Tests

Package Failed Passed Skipped Total
${packageResult.getName()} ${packageResult.getFailCount()} ${packageResult.getPassCount()} ${packageResult.getSkipCount()} ${packageResult.getPassCount()+packageResult.getFailCount()+packageResult.getSkipCount()}
${failed_test.getFullName()}

代码静态检查结果

名称 检查结果 总数 High Normal Low
${action.displayName} ${action.result.numberOfAnnotations} ${action.result.getNumberOfAnnotations('HIGH')} ${action.result.getNumberOfAnnotations('NORMAL')} ${action.result.getNumberOfAnnotations('LOW')}

保存。

然后配置系统管理——Editable Email Notification Templates,增加一个默认模板,名称为默认,直接保存。

回到项目配置, 在构建环境里,
勾上Provide Configuration files
选择File为刚新增的jelly文件,target填写/var/jenkins_home/email-templates
Variable填写analysis.jelly

然后,在构建后操作里增加Editable Email Notification Templates,选择默认模板。

这样就完成了配置。


作者:Jadepeng
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

你可能感兴趣的:(Jenkins集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果)