Jenkins集成源码静态分析工具

1、static code analysis插件说明

Jenkins提供了插件”static code analysis“,该插件搜集不同的分析结果,并集合显示出来。

实际上,我们可以认为static code analysi和FindBugs等插件组成了一个静态分析代码的套件。仅仅安装static code analysis是不够的,还需要安装其他插件(如FindBugs),才能正确工作。

2、static code analysis支持哪些插件?

官方文档:https://wiki.jenkins-ci.org/display/JENKINS/Static+Code+Analysis+Plug-ins#StaticCodeAnalysisPlug-ins-summary

Jenkins理解好几种"代码静态分析工具"的结果文件(?什么格式的?),并以可视化的形势显示出来。

Jenkins支持对下面列出的静态分析工具插件的”可视化“:

另外,插件 Static Analysis Collector可用于整合所有这些插件的结果到一个单独的趋势图中。

上述插件的共同特点(可能会有个别遗漏):

  • View column that shows the total number of warnings in a job
  • Build summary showing the new and fixed warnings of a build
  • Several trend reports showing the number of warnings per build
  • Several portlets for the Jenkins dashboard view
  • Overview of the found warnings per module, package, category, or type
  • Detail reports of the found warnings optionally filtered by severity (or new and fixed)
  • Colored HTML display of the corresponding source file and warning lines
  • Several failure thresholds to mark a build as unstable or failed
  • Configurable project health support
  • Highscore computation for builds without warnings and successful builds
  • Works with the freestyle and native m2 build option of Jenkins
  • Email Support to show aggregated results of the warnings in a project
  • Remote API to export the build quality and found warnings
  • Several tokens to simplify post processing of the analysis results

3、static code analysis依赖哪些插件?

从官方文档了解到,static code analysis依赖:

Token Macro Plugin

This plugin adds reusable macro expansion capability for other plugins to use

Maven Integration plugin

Jenkins plugin for building Maven 2/3 jobs via a special project type.

Dashboard View

This plugin contributes a new view implementation that provides a dashboard / portal-like view for your Jenkins instance.

Ant Plugin

This plugin adds Apache Ant support to Jenkins.

其中,Maven和Ant一般在Jenkins安装完后,就跟着安装上的,作用是作为Jenkins的构建工具。

本例先把Dashboard View和Token Macro安装了,后续再体验两者的作用。

4、如何使用static code analysis进行代码分析?

1)安装static code analysis插件

以管理员登录到Jenkins。在”系统管理“/”管理插件“,选择”可安装插件“,在”过滤“栏输入”static code analysis“,选择”Static Code Analysis Plug-ins“插件。勾选直接安装。

2)安装其他插件

包括FindBugs、PMD、checkstyle等工具。具体也是通过搜索,在可选里面找到该插件,然后进行安装。

3)在Jenkins里面配置job使用maven

示例1:使用maven进行构建,maven内部调用ant。

cpds项目已经有了一个ant脚本,能够实现系统测试。因此使用maven的话,需要支持调用ant。不过也幸好maven支持调用ant。

所以maven构建包括两部分:一是调用ant,ant完成编译等工作;二是maven调用FindBugs等插件完成静态代码分析工作。

示例2:先执行maven,再执行ant。

类似示例1,不过maven和ant是平等关系,没有包含调用的情况。

5、示例

5.1for java

5.1.1非maven工程

对于非maven的java工程,例如普通的Eclipse工程,建议使用ant进行编译,然后使用maven进行代码分析(?)

当然也可以将普通工程转化为maven工程,但是可能比较麻烦。

方法:ant+findbugs分析代码。

代码清单:

5.1.2 maven工程

1)jenkins中使用static code analysis + findbugs进行代码分析

前提:按照前几章的说明,需要在jenkins安装static code analysis,findbugs插件。

一、编辑pom

首先,添加工程依赖和构建需要的插件,包括工程本身的依赖和构建需要的工具。

由于准备执行“mvn compile findbugs:findbugs site”命令,所以必须包含resources、compiler等maven插件。而如果需要打包(jar)、单元测试,则需要添加对jar、surefire、assembly等插件的依赖。

代码清单1:pom.xml的部分内容

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-resources-plugin</artifactId>
  6. <version>2.6</version>
  7. </plugin>
  8. <plugin>
  9. <groupId>org.apache.maven.plugins</groupId>
  10. <artifactId>maven-compiler-plugin</artifactId>
  11. <configuration>
  12. <source>1.5</source>
  13. <target>1.5</target>
  14. </configuration>
  15. </plugin>
  16. <plugin>
  17. <groupId>org.apache.maven.plugins</groupId>
  18. <artifactId>maven-jar-plugin</artifactId>
  19. <configuration>
  20. <archive>
  21. <manifest>
  22. <mainClass>org.sonatype.mavenbook.weather.Main</mainClass>
  23. <addClasspath>true</addClasspath>
  24. </manifest>
  25. </archive>
  26. </configuration>
  27. </plugin>
  28. <plugin>
  29. <groupId>org.apache.maven.plugins</groupId>
  30. <artifactId>maven-surefire-plugin</artifactId>
  31. <configuration>
  32. <testFailureIgnore>true</testFailureIgnore>
  33. </configuration>
  34. </plugin>
  35. <plugin>
  36. <artifactId>maven-assembly-plugin</artifactId>
  37. <configuration>
  38. <archive>
  39. <manifest>
  40. <mainClass>org.sonatype.mavenbook.weather.Main</mainClass>
  41. </manifest>
  42. </archive>
  43. <descriptorRefs>
  44. <descriptorRef>jar-with-dependencies</descriptorRef>
  45. </descriptorRefs>
  46. </configuration>
  47. </plugin>
  48. </plugins>
  49. </build>

其次,需要在maven工程的pom.xml要进行设置:在reporting节点中添加findbugs-maven-plugin的说明。

代码清单2:中findbugs-maven-plugin的说明

  1. <reporting>
  2. <plugins>
  3. <!--FindBugs插件。maven goal:findbugs:findbugs -->
  4. <plugin>
  5. <groupId>org.codehaus.mojo</groupId>
  6. <artifactId>findbugs-maven-plugin</artifactId>
  7. <version>2.5.1</version>
  8. <configuration>
  9. <threshold>High</threshold>
  10. <effort>Default</effort>
  11. <findbugsXmlOutput>true</findbugsXmlOutput>
  12. <findbugsXmlWithMessages>true</findbugsXmlWithMessages>
  13. <xmlOutput>true</xmlOutput>
  14. <formats><format>html</format></formats>
  15. </configuration>
  16. </plugin>
  17. </plugins>
  18. </reporting>

二、配置Jenkins job

根据经验,在jenkins中使用maven风格的job构建maven工程时,可能会出现问题。所以,建议创建freestyle风格的工程。

Maven的目标(goals)设置为:compile findbugs:findbugs site。

由于findbugs基于.class进行分析,所以先需要对代码进行编译,即执行compile。执行findbugs:findbugs表示使用findbugs对字节码文件进行代码分析。site则是生成相应的网页内容。

三、执行构建

构建完成后,jenkins显示结果如下:

相关问题参考:

Jenkins-FQA

Maven-FAQ

来自为知笔记(Wiz)

Jenkins集成源码静态分析工具

时间: 2024-12-27 20:15:20

Jenkins集成源码静态分析工具的相关文章

配置源码管理工具(2)

源码管理是开发中最重要的事情之一,在vs.net里我们通常采用vss进行版本控制,在Eclipse里看帖子说用svn的比例很大,和IDE的集成性也很好. 1:服务器部署 下载地址是:http://subversion.apache.org/packages.html 下载的是CollabNet那个,需要注册,注册很简单. http://www.collab.net/downloads/subversion 安装基本就是按照说明走,没有遇到啥问题,说明书上好像要求是windows 2003 ser

Linux 平台下阅读源码的工具链

原文:http://blog.jobbole.com/101322/ 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码. 在Windows下有sourceinsight这个源码阅读软件(虽然我没用过,但是网上评价还不错),由于我是个Linuxer,并不喜欢用Windows,所以自然是选择在Linux下阅读源码的工具了. 下面我将逐一介绍在Linux下阅读源码的工具. vim + ctags + cscope 源码阅读三剑客.v

Android 源码分析工具

标 题: [原创]Android源码分析工具及方法作 者: MindMac时 间: 2014-01-02,09:32:35链 接: http://bbs.pediy.com/showthread.php?t=183278 在对 Android 源码进行分析时,如果有得力的工具辅助,会达到事半功倍的效果.本文介绍了一些在分析 Android 源码时使用的一些工具和方法,希望能够帮助到有需要的同学. Eclipse 在 Android 应用程序开发过程中,一般会使用 Eclipse,当然 Googl

ubuntu下linux内核源码阅读工具和调试方法总结

http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是linux下就没有source insight这么优秀的工具了,但是也有不少的替代品,但觉绝对部分人会选择vim+ctags+cscope的组合,还有部分人或选择wine中的source insight或选择navigatror,当然对于代码阅读来说vim+ctags+cscope的组合还是比较好的一

Windows平台下源码分析工具

最近这段时间在阅读 RTKLIB的源代码,目前是将 pntpos.c文件的部分看完了,准备写一份文档记录下这些代码的用处.处理过程.理论公式来源.注意事项,自己还没有弄明白的地方.目前的想法是把每一个函数都做成一个名片,这个名片内则包含代码的功能说明.参数说明.函数调用关系图.整体处理过程.注意事项和自己的疑惑这几个部分.而在这个名片内出现的其他函数(包括在文字和调用关系图中出现的)则使用超链接链接到其他函数名片内.然而我并不想自己去手工绘制函数调用关系图,于是就百度了一下,这才发现关于接口文档

读zepto源码之工具函数

读zepto源码之工具函数 Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目标对象的属性.目标对象的同名属性会被源对象的属性覆盖. $.extend 其实调用的是内部方法 extend, 所以我们先看看内部方法 extend 的具体实现. function extend(target, source, deep) { for (key in source) // 遍历源对象的属性值 if

jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法

我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安装方式(在线安装需要连接VPN你懂的),如下图 重启后即可看到git按钮: 2.jenkins持续集成时,点击构建失败无法找到git.exe解决办法如下图: 控制台输出提示构建失败git.exe rev-parse --is-inside-work-tree # timeout=10:原因是没有找到

读 zepto 源码之工具函数

Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目标对象的属性.目标对象的同名属性会被源对象的属性覆盖. $.extend 其实调用的是内部方法 extend, 所以我们先看看内部方法 extend 的具体实现. function extend(target, source, deep) { for (key in source) // 遍历源对象的属性值 if (deep && (i

jenkins配置源码管理git

一.首先安装上来jenkins 二.下载安装jenkins的git插件:Git plugin 三.新建一个jenkins项目,选择构建一个自由风格的软件项目: 源码管理选择git,Repository URL填写git 仓库的地址: 我的地址为:[email protected]:/home/repo/test.git    格式为:[用户名]+[@]+[git服务器地址]+[:]+[git仓库地址] Credentials有两种方式,一种是配置以git用户名和密码,另外一种是使用密钥对的方式