Devops学习实践(三) jenkins集成findbugs

随着工作的要求,devops作为今年工作的一个重点,由此也引发了自己对于devops相关的工具和技术的学习和实践。基于上述背景,这个系列将逐步的介绍SVN的安装和配置、jenkins安装和配置、reviewboard、findbugs、checkstyle、sonar、testng、mockito等。【每个合格的程序员都是耐操的】

上一节说了如何通过jenkins进行构建任务集成,现在说一下如何集成findbugs,对java class类进行静态检查。

一、目标

findbugs是对代码进行静态检查,发现代码中的可能存在的缺陷和不规范的地方,减少隐患,当然findbugs是无法检查代码逻辑的,代码逻辑的检查,应该属于测试范畴。

下面说一下本次实践的目标:

1、在jenkins里面集成 findbugs

        2、通过findbugs检查示例代码

        3、了解规则含义

        4、查找规则是否启用的方法

5、自定义规则的编码方法(简单了解)

 二、findbugs的安装

在安装之前,简单说明一下环境,和上一节一样,在linux的jenkins上进行findbugs的安装。

Devops学习实践(三) jenkins集成findbugs_第1张图片


          首先从jenkins,系统管理进入管理插件界面

  Devops学习实践(三) jenkins集成findbugs_第2张图片

我们安装中间的Findbugs Plug-in

Devops学习实践(三) jenkins集成findbugs_第3张图片

     安装好了后,在“构建”这里,Goals 项目 填入:   findbugs:findbugs  这里填入后,maven在构件项目的时候,会带入这个参数

   Devops学习实践(三) jenkins集成findbugs_第4张图片

     如果构建的时候,会报出如下问题,说明可能安装没有完全:

Devops学习实践(三) jenkins集成findbugs_第5张图片

 回到jenkins系统首页,会发现,如果安装不完整,会有提示

Devops学习实践(三) jenkins集成findbugs_第6张图片

      这里的提示是说,少装了一个包,重新进入到插件安装界面,搜索Static Analysis,安装这个插件,就解决analysis-core V1.86 包没有安装的问题。

Devops学习实践(三) jenkins集成findbugs_第7张图片

需要说明的是,如果网络安装失败,确定是网络原因的话,可以从插件的高级功能里面,选取本地安装包,上载到jenkins里。在上述处理后,jenkins进行任务集成,发现构件失败

     Devops学习实践(三) jenkins集成findbugs_第8张图片

 这里主要是pom.xml还没有修改,可以按下面内容修改

 


  4.0.0
  com.newland
  StudyKafkaMavenTest
  0.0.1-SNAPSHOT
  
  kafka-demo
  http://maven.apache.org
  
     UTF-8
  
  
  
      
        org.apache.kafka  
        kafka_2.10  
        0.8.2.0 
     
  
  
  
    compile
     
	
        org.codehaus.mojo        
        findbugs-maven-plugin        
        3.0.1
                
     
           true        
           true        
           true        
                
       
   
 

  

如果发现构建成功,但是findbugs 没有动作, 修改配置,在“构建”这里,选中“Publish  FindBugs analysis results”Devops学习实践(三) jenkins集成findbugs_第9张图片

这里results 可以为空,default的会生成如  findbugsXml.xml 和 findBugs.xml 。  这个时候,我们可以继续看一下任务的面板

Devops学习实践(三) jenkins集成findbugs_第10张图片

上图中, 出现FindBugs  Warnings  了,可以点开查看里面的内容,下面列出案例中的具体情况

Devops学习实践(三) jenkins集成findbugs_第11张图片

        Devops学习实践(三) jenkins集成findbugs_第12张图片

   Devops学习实践(三) jenkins集成findbugs_第13张图片

Devops学习实践(三) jenkins集成findbugs_第14张图片

  修改文件后,我们重新构建,现在可以看到,解决了问题后,findbugs 不在显示bug列表

Devops学习实践(三) jenkins集成findbugs_第15张图片


 三、findbugs的规则

findbugs定义了很多规则,下面具一些具体了例子, 如下面这些

    Security 关于代码安全性防护
1.Dm: Hardcoded constant database password (DMI_CONSTANT_DB_PASSWORD)
代码中创建DB的密码时采用了写死的密码。
2.Dm: Empty database password (DMI_EMPTY_DB_PASSWORD)
创建数据库连接时没有为数据库设置密码,这会使数据库没有必要的保护。
3.HRS: HTTP cookie formed from untrusted input (HRS_REQUEST_PARAMETER_TO_COOKIE)
此代码使用不受信任的HTTP参数构造一个HTTP Cookie。
4.HRS: HTTP Response splitting vulnerability (HRS_REQUEST_PARAMETER_TO_HTTP_HEADER)
在代码中直接把一个HTTP的参数写入一个HTTP头文件中,它为HTTP的响应暴露了漏洞。
5.SQL: Nonconstant string passed to execute method on an SQL statement (SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE)
该方法以字符串的形式来调用SQLstatement的execute方法,它似乎是动态生成SQL语句的方法。这会更容易受到SQL注入攻击。
6.XSS: JSP reflected cross site scripting vulnerability (XSS_REQUEST_PARAMETER_TO_JSP_WRITER)
在代码中在JSP输出中直接写入一个HTTP参数,这会造成一个跨站点的脚本漏洞。
    在上面的例子中,可以看到 每个规则,都用DMI_CONSTANT_DB_PASSWORD 这样的方式来表示。由于规则众多,实际使用时,需要根据自己的要求进行裁剪

四、findbugs的规则配置

	findbugs的规则比较多,可以进行裁剪配置,这是通过配置 exclude xml 来实现的,在pom.xml 下,增加 exlcude.xml 配置	
     
     在pom.xml 平级的目录,建立一个规则例外文件  findbugs-exclude.xml, 具体内容如下
     

  
      
      
      
      
      
      

  
就是要把你排除检查的规则,写进入,注意,如果/Match 节点里面内容不配置,那就是全部都不纳入检查。
同样,可以设置include文件
    在pom.xml 中设置:
	
  
  findbugs-exclude.xml  
  findbugs-include.xml  
  

     在上面的案例里面, DM_DEFAULT_ENCODING,就是扫出来的内容,可以配置后,进行规则排除,下面图中,bugs趋势图中的回落就是做实验的效果
     

五、自定义规则

      最后简单介绍一下自定义规则的开发流程:
       1、首先下载findbugs 源码包
       2、开发自己的规则,编译
       3、修改findbugs里面的规则文件findbugs-plugin.jar中message.xml,findbugs.xml,z加入二进制的class 文件
       4、打包成功后,在可运行版本的findbugs中替换原来的/lib/findbugs.jar

你可能感兴趣的:(Jenkins,Devops,Findbugs)