一、前言

  火线(Fireline)的Jenkins官方插件已经上线,目前火线不仅能检查出安卓代码中的安全类问题和内存泄露问题,还兼容了阿里开源的Java开发规约(P3C项目),本文将以教程的形式帮助大家了解如何在Jenkins中使用火线插件做静态代码扫描。

  提示:如果您是第一次使用Jenkins,请先前往文章【[新手教程] Jenkins 下载安装配置教程】,本篇博客转载:http://www.sohu.com/a/208421161_741445?qq-pf-to=pcqq.c2c

二、安装步骤

Jenkins安装火线(Fireline)插件

  1. 点击左上角的Jenkinslogo,依次点击系统管理->管理插件,

    在插件页面点击可选插件按钮,

  2. 在过滤栏输入fireline,勾选查询出来的Fireline Plugin插件,点击直接安装。

  3. 等待安装成功后,点击返回首页,开始配置。

Jenkins配置火线

  1. 点击创建一个新任务,输入任务名称,选择构建一个自由风格的软件项目,点击确定。

  2. 在配置页面的General栏输入项目名称,我这里输入的CodeScan。

  3. 在“源码管理”栏配置你想扫描的代码,我这里输入的是火线专属测试项目的git地址:https://github.com/ariesliu/TestCasesProject

  4. 跳过构建触发器和构建环境配置栏,在构建栏点击增加构建步骤,在下拉列表中选择Execute FireLine选项。

  5. “构建”栏会出现火线相关的配置,报告路径会有一个默认的地址,不需要输入,默认报告会放在你的个人用户的report目录下,如图所示。配置完成,点击保存按钮。

  6. 保存成功后,在调转后的页面点击立即构建。

  7. 此时页面会看到有一个任务正在执行,点击任务编号,此处为#1。

  8. 在此次任务的详情列表点击Console Output栏,可以看到任务的执行过程。等待任务执行完成后,可以看到火线报告的路径,如下图所示。

  9. 打开该目录的testReport.html,可以看到本次的代码扫描结果。

在Jenkins中直接查看火线扫描结果

  1. 在以上所述的配置完成后,我们查看扫描结果报告需要每次自己手动打开文件夹,比较麻烦。我们可以通过一个配置,实现在Jenkins中直接查看火线的扫描结果。

    首先我们要安装一个新的插件HTML Publisher plugin,再次去往系统管理-> 管理插件 ->可选插件,搜索HTML Publisher plugin,点击直接安装,安装成功后返回。

  2. 回到我们的项目CodeScan进行配置,这次只需要配置构建后操作栏,点击增加构建后操作步骤下拉框,选择Publish HTML reports选项。

  3. 点击增加按钮。在HTML directory to archive栏输入火线报告的生成路径,即在构建栏中火线默认的结果报告路径,复制过来即可。在Index page[s]栏输入testReport.html,这是火线默认生成的HTML报告的名称。这两项配置完成后点击保存。

  4. 此时还没有完成,因为火线的HTML报告用了JS进行更好的效果展示,我们需要在Jenkins中配置运行执行JS脚本,否则火线报告在Jenkins中的展示会错乱。

    前往系统管理->脚本命令行,在文本框中输入System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")运行按钮。

  5. 此时回到我们的项目CodeScan,点击立即构建,构建完成后就可以点击HTML Report栏直接查看火线报告了。

  6. Jenkins中的火线结果报告。火线将比较严重的问题,例如安全类问题列为最高级别Block级别 ,内存泄露问题列为风险级别,代码规范类问题(阿里Java规约)列为警告和优化级别。更多级别详情可参考火线官网的规则文档。

  7. 点击问题详情列表栏,可以看到问题的详情。点击每一行最右侧的加号图标,可以看到错误的代码片段。

  8. 在Search栏输入p3c关键字,可以过滤出所有阿里巴巴开发手册(P3C)的规则发现的问题。

写在最后:

非常感谢阿里开源的Java开发规约(P3C项目),在静态代码扫描的代码规范方向,一直以来都没有一个统一的标准,开发人员们对于代码规范的理解和掌握能力参差不齐。在大厂的带头作用下统一化标准化之后,开发人员们更容易去认可静态代码扫描在代码规范方向的检测结果。

同时,火线(Fireline)也一直致力于静态代码扫描方向的研究,我们的主攻点是安卓代码中的安全类问题和内存泄露问题,也是因为这两类问题从开发人员角度来看,是更受关注和重视的。

另外,目前火线除了新上线的Jenkins插件,还有嵌入在开发人员编码IDE中的Android Studio插件,欢迎各位推荐给开发人员使用,让我们可以在全流程中保障代码的质量:开发编写代码环节(Android Studio插件)-> 代码编译打包环节(Jenkins插件)。

[Jenkins 新插件] 兼容阿里开发手册 (P3C) 的火线插件安装使用教程的更多相关文章

  1. Sonar Java 规则插件开发 (基于阿里开发手册)

    引言 最近在做Sonar静态代码扫描管理,以此顺手接了Sonar的插件开发,基于阿里开发手册进行开发,在整体开发过程中,其中还是遇到不少坑位,也以此给大家做相应借鉴官网Demo演示插件开发地址:htt ...

  2. (转)IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)

    背景:idea安装插件,学习使用阿里巴巴开发插件. 在线和离线的安装方式. IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines) ...

  3. IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)

    以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校就有机会看看的话,那么,在毕业之后,实际工作中就会少很多坑. ...

  4. idea使用阿里工具优化代码+阿里开发手册

    idea安装工具 打开插件安装界面 File-Settings-Plugins-Browse repositories... 搜索Alibaba Java Coding Guidelines 进行安装 ...

  5. 阿里巴巴Java开发规约扫描插件-Alibaba Java Coding Guidelines 在idea上安装使用教程

    经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件!该插件由阿里巴巴P3C项目组研发.P3C是世界知名的反潜机,专门对付 ...

  6. 为什么Arrays.asList() 不能使用其修改方法(阿里开发手册里明确说明)

    Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException(),我们来 ...

  7. 点评阿里JAVA手册之编程规约(OOP 规约 、集合处理 、并发处理 、其他)

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文难度系数为三星(★★★) 本文为第二篇 第一篇 点评阿里JAVA手 ...

  8. 阿里巴巴 《Java 开发者手册》+ IDEA编码插件

    4月22日,阿里巴巴发布了泰山版<Java 开发手册>,以前以为终极版就真的是终极版了,没想到还是想的太简单了,继终极版之后又发布了详尽版.华山版,这不,泰山版又来了.想想也对,行业一直在 ...

  9. 阿里巴巴Java开发手册(华山版)

    插件下载地址: https://github.com/alibaba/p3c 2018年9月22日,在2018杭州云栖大会上,召开<码出高效:Java 开发手册>新书发布会,并宣布将图书所 ...

随机推荐

  1. 统计学习三:2.K近邻法代码实现(以最近邻法为例)

    通过上文可知k近邻算法的基本原理,以及算法的具体流程,kd树的生成和搜索算法原理.本文实现了kd树的生成和搜索算法,通过对算法的具体实现,我们可以对算法原理有进一步的了解.具体代码可以在我的githu ...

  2. HADOOP docker(十):hdfs 结构体系

    1.简介2.namenode和datanode3.The File System Namespace 文件系统命名空间4.Data Replication 数据复制5.Replica Placemen ...

  3. 《剑指Offer》题四十一~题五十

    四十一.数据流中的中位数 题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中 ...

  4. Cow Contest(最短路floyed传递闭包)

    Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...

  5. 一个例子说明mouseover事件与mouseenter事件的区别

    <html> <head> <meta charset="UTF-8"> <title>haha</title> < ...

  6. LintCode-73.前序遍历和中序遍历树构造二叉树

    前序遍历和中序遍历树构造二叉树 根据前序遍历和中序遍历树构造二叉树. 注意事项 你可以假设树中不存在相同数值的节点 样例 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树:    ...

  7. 把jar包加入本地maven库内

    1首先,在项目的pom.xml文件中加入 <dependency><groupId>taobao-alidayu</groupId>  //名字随便取不要跟已有的重 ...

  8. 第三部分shell编程3(shell脚本编写1)

    做监控和备份最多 1. shell脚本是什么它是一种脚本语言,并非编程语言可以使用一些逻辑判断.循环等语法可以自定义子函数是系统命令的集合shell脚本可以实现自动化运维,大大增加我们的工作效率 第一 ...

  9. (转)linux IO 内核参数调优 之 参数调节和场景分析

    1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...

  10. AppDomain.CurrentDomain.AssemblyResolve

    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); 参 ...