我是靠谱客的博主 伶俐月饼,最近开发中收集的这篇文章主要介绍Devops学习实践(三) jenkins集成findbugs一、目标 二、findbugs的安装 三、findbugs的规则 四、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的安装。


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

  

我们安装中间的Findbugs Plug-in

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

   

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

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

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

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

     

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

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.newland</groupId>
<artifactId>StudyKafkaMavenTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>kafka-demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.8.2.0</version>
</dependency>
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<findbugsXmlOutput>true</findbugsXmlOutput>
<findbugsXmlWithMessages>true</findbugsXmlWithMessages>
<xmlOutput>true</xmlOutput>
</configuration>
</plugin>
</plugins>
</build>
</project>

如果发现构建成功,但是findbugs 没有动作, 修改配置,在“构建”这里,选中“Publish  FindBugs analysis results”

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

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

        

   

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


 三、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, 具体内容如下

<FindBugsFilter>
<Match>
<!--
<Bug pattern="URF_UNREAD_FIELD,UUF_UNUSED_FIELD,DLS_DEAD_LOCAL_STORE,UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD,RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE,URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD,RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE"/>
-->
<Bug pattern="DM_DEFAULT_ENCODING"></Bug>
<Bug pattern="DLS_DEAD_LOCAL_STORE"/>
<!--
<Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
-->
</Match>
</FindBugsFilter>
就是要把你排除检查的规则,写进入,注意,如果/Match 节点里面内容不配置,那就是全部都不纳入检查。
同样,可以设置include文件

在pom.xml 中设置:
	
<configuration>
<excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>
<includeFilterFile>findbugs-include.xml</includeFilterFile>
</configuration>


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

五、自定义规则


最后简单介绍一下自定义规则的开发流程:

1、首先下载findbugs 源码包

2、开发自己的规则,编译

3、修改findbugs里面的规则文件findbugs-plugin.jar中message.xml,findbugs.xml,z加入二进制的class 文件

4、打包成功后,在可运行版本的findbugs中替换原来的/lib/findbugs.jar

最后

以上就是伶俐月饼为你收集整理的Devops学习实践(三) jenkins集成findbugs一、目标 二、findbugs的安装 三、findbugs的规则 四、findbugs的规则配置 五、自定义规则的全部内容,希望文章能够帮你解决Devops学习实践(三) jenkins集成findbugs一、目标 二、findbugs的安装 三、findbugs的规则 四、findbugs的规则配置 五、自定义规则所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部