首页 > 技术文章 > Jenkins下配置findbugs、pmd及checkstyle实现代码自动检测及邮件通知

dreammer 2020-09-15 18:42 原文

一、插件介绍

   

工具

目的

检查项

FindBugs

检查.class

基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug

主要检查bytecode中的bug patterns,如NullPoint空指针检查、没有合理关闭资源、字符串相同判断错(==,而不是equals)等

PMD

检查源文件

检查Java源文件中的潜在问题

主要包括:

空try/catch/finally/switch语句块

未使用的局部变量、参数和private方法

空if/while语句

过于复杂的表达式,如不必要的if语句等

复杂类

CheckStyle

检查源文件

主要关注格式

检查Java源文件是否与代码规范相符

主要包括:

Javadoc注释

命名规范

多余没用的Imports

Size度量,如过长的方法

缺少必要的空格Whitespace

重复代码

 

二、Jenkins 集成 FindBugs、CheckStyle、PMD插件;

  1.安装插件

    系统管理 -> 管理插件 -> 可选插件-> 搜索  Findbugs,Checkstyle,PMD 并且选中进行安装,安装成功以后重新启动Jenkins;

  2.Jenkins任务中配置Findbugs插件;

    在构建的时候Goals and options添加参数 compile -D maven.test.skip=true clean compile findbugs:findbugs checkstyle:checkstyle pmd:pmd,使其在代码构建中执行代码检查

    构建设置中选择"Publish FindBugs analysis results","Publish Checkstyle analysis results","Publish PMD analysis results"选择以后会在构建完成生成分析报告;

 

   每个选项里面有一个高级的功能,这个功能主要是让我们来定义规则,意思在发现什么级别的问题,会使任务变成构建是成功还是失败;如果项目设置了构建成功失败会发送邮件给相关的人员,我建议这里需要设置,这样就可以很好的衡量出来这次构建到底有没有不符合代码检查规范的问题。

 

 

   构建结束以后可以再任务详情里面找到FindBugs Warnings,Checkstyle Warnings, PMD Warnings 查看运行的结果

 

 

 

  运行报告

 

 

 

 

 

 

 

  

   当我们多次运行任务我们可以看到每次运行结果的走势图,如果每次构建都不会修改上次问题,这个图会持续走高,我这里构建是为了演示,重复多次构建出现一个平滑的走势图。

 

3. jenkins集成findBugs并生成html报告

项目pom.xml配置

  首先在pom中添加插件配置

<build> 

   <plugins>

       <plugin>

                <groupId>org.codehaus.mojo</groupId>

                <artifactId>findbugs-maven-plugin</artifactId>

                <version>3.0.1</version>

                <configuration>

                     <threshold>High</threshold>

                     <effort>Default</effort>

                     <findbugsXmlOutput>true</findbugsXmlOutput>

                     <findbugsXmlWithMessages>true</findbugsXmlWithMessages>

                     <xmlOutput>true</xmlOutput>

                     <formats><format>html</format></formats>

                     <findbugsXmlOutputDirectory>target/site</findbugsXmlOutputDirectory>

                </configuration>

             </plugin>

   </plugins>

</build>

然后添加reporting配置

<build>

</build>

<reporting>

        <plugins>

               <plugin>

                      <groupId>org.codehaus.mojo</groupId>

                      <artifactId>findbugs-maven-plugin</artifactId>

                      <version>3.0.1</version>

                      <configuration>

                      <xmlOutput>true</xmlOutput>

                      <!-- Optional directoryto put findbugs xdoc xml report -->

                      <!--<xmlOutputDirectory>target/site</xmlOutputDirectory>-->

                      <findbugsXmlOutput>true</findbugsXmlOutput>

                      <findbugsXmlWithMessages>true</findbugsXmlWithMessages>

                      </configuration>

               </plugin>

        </plugins>

</reporting>

   如果不添加reporting配置则无法生成报告,只能在target/site中查看xml文件报告,在jenkins则无法看到。

三.邮件通知

1.首先需要安装Email Extension Template Plugin插件,安装后重启jenkins

2. 在【系统管理】中选择Editable Email Notification Templates

在【系统管理】中选择Editable Email Notification Templates

 

 

 

 

新建邮件模板

 

 

 

 

 

 

3.jenkins登录后-系统管理-系统设置打开后定位到下面的位置:系统管理员邮件地址一定要填写

 

 

 

4.下滑页面定位到extend E-mail Notification:这个是jenkins的一个插件,可以去https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/国内清华园的镜像下载

Tips:(1)插件的安装有依赖关系,安装失败时查看依赖的文件,也在https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/下载就好

    (2)以163邮箱为例,设置smtp server:smtp.163.com和ssl接口465---这个数据可以去自己邮箱查看;username 输入的邮箱地址要和第一步设置的系统用户邮箱地址一致不然会报错501,password是客户授权码不是邮箱的密码。163邮箱授权码获取:https://jingyan.baidu.com/article/adc815139f60c2f723bf7385.html这个文档有接收

  

 

 

default Recipients:默认收件人的邮箱地址

设置发送邮件的条件Default Triggers(我设置成了always,根据需要自己配置)

 

 

 

 

 

5.下滑页面定位到E-mail Notification,里面的设置要与第二步骤中的数据一致

 

 

 

6.测试配置是否成功,输入接收的邮件地址,点击test configuration按钮,配置成功显示successfully,点击保存,失败会显示具体的报错信息,

如果配置的password不是授权码 会提示535,与系统用户邮箱不一致会提示501 ,邮箱服务SMTP server 配置错误提示550

 

 

 

 

 

设置好邮件模板以及系统配置完成以后我们需要回到项目中,添加构建后动作,选择邮件通知模板

 

 

 

 

 

 

 

项目构建完成以后即可收到代码检测邮件:

 

 

推荐阅读