[Jenkins 新插件] 兼容阿里开发手册 (P3C) 的火线插件安装使用教程
一、前言
火线(Fireline)的Jenkins官方插件已经上线,目前火线不仅能检查出安卓代码中的安全类问题和内存泄露问题,还兼容了阿里开源的Java开发规约(P3C项目),本文将以教程的形式帮助大家了解如何在Jenkins中使用火线插件做静态代码扫描。
提示:如果您是第一次使用Jenkins,请先前往文章【[新手教程] Jenkins 下载安装配置教程】,本篇博客转载:http://www.sohu.com/a/208421161_741445?qq-pf-to=pcqq.c2c
二、安装步骤
Jenkins安装火线(Fireline)插件
点击左上角的Jenkinslogo,依次点击系统管理->管理插件,
在插件页面点击可选插件按钮,

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

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

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

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

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

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

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

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

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

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

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

在Jenkins中直接查看火线扫描结果
在以上所述的配置完成后,我们查看扫描结果报告需要每次自己手动打开文件夹,比较麻烦。我们可以通过一个配置,实现在Jenkins中直接查看火线的扫描结果。
首先我们要安装一个新的插件HTML Publisher plugin,再次去往系统管理-> 管理插件 ->可选插件,搜索HTML Publisher plugin,点击直接安装,安装成功后返回。

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

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

此时还没有完成,因为火线的HTML报告用了JS进行更好的效果展示,我们需要在Jenkins中配置运行执行JS脚本,否则火线报告在Jenkins中的展示会错乱。
前往系统管理->脚本命令行,在文本框中输入System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")运行按钮。

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

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

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

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

写在最后:
非常感谢阿里开源的Java开发规约(P3C项目),在静态代码扫描的代码规范方向,一直以来都没有一个统一的标准,开发人员们对于代码规范的理解和掌握能力参差不齐。在大厂的带头作用下统一化标准化之后,开发人员们更容易去认可静态代码扫描在代码规范方向的检测结果。
同时,火线(Fireline)也一直致力于静态代码扫描方向的研究,我们的主攻点是安卓代码中的安全类问题和内存泄露问题,也是因为这两类问题从开发人员角度来看,是更受关注和重视的。
另外,目前火线除了新上线的Jenkins插件,还有嵌入在开发人员编码IDE中的Android Studio插件,欢迎各位推荐给开发人员使用,让我们可以在全流程中保障代码的质量:开发编写代码环节(Android Studio插件)-> 代码编译打包环节(Jenkins插件)。
[Jenkins 新插件] 兼容阿里开发手册 (P3C) 的火线插件安装使用教程的更多相关文章
- Sonar Java 规则插件开发 (基于阿里开发手册)
引言 最近在做Sonar静态代码扫描管理,以此顺手接了Sonar的插件开发,基于阿里开发手册进行开发,在整体开发过程中,其中还是遇到不少坑位,也以此给大家做相应借鉴官网Demo演示插件开发地址:htt ...
- (转)IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)
背景:idea安装插件,学习使用阿里巴巴开发插件. 在线和离线的安装方式. IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines) ...
- IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)
以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校就有机会看看的话,那么,在毕业之后,实际工作中就会少很多坑. ...
- idea使用阿里工具优化代码+阿里开发手册
idea安装工具 打开插件安装界面 File-Settings-Plugins-Browse repositories... 搜索Alibaba Java Coding Guidelines 进行安装 ...
- 阿里巴巴Java开发规约扫描插件-Alibaba Java Coding Guidelines 在idea上安装使用教程
经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件!该插件由阿里巴巴P3C项目组研发.P3C是世界知名的反潜机,专门对付 ...
- 为什么Arrays.asList() 不能使用其修改方法(阿里开发手册里明确说明)
Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException(),我们来 ...
- 点评阿里JAVA手册之编程规约(OOP 规约 、集合处理 、并发处理 、其他)
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文难度系数为三星(★★★) 本文为第二篇 第一篇 点评阿里JAVA手 ...
- 阿里巴巴 《Java 开发者手册》+ IDEA编码插件
4月22日,阿里巴巴发布了泰山版<Java 开发手册>,以前以为终极版就真的是终极版了,没想到还是想的太简单了,继终极版之后又发布了详尽版.华山版,这不,泰山版又来了.想想也对,行业一直在 ...
- 阿里巴巴Java开发手册(华山版)
插件下载地址: https://github.com/alibaba/p3c 2018年9月22日,在2018杭州云栖大会上,召开<码出高效:Java 开发手册>新书发布会,并宣布将图书所 ...
随机推荐
- 查找当前对象中的方法对象的属性叫做_event_name的方法
setattr( self, '_events', {e._event_name: e for _, e in getmembers(self, lambda x: ismethod(x) and h ...
- Hadoop学习(一):完全分布式集群环境搭建
1. 设置免密登录 (1) 新建普通用户hadoop:useradd hadoop(2) 在主节点master上生成密钥对,执行命令ssh-keygen -t rsa便会在home文件夹下生成 .ss ...
- 【转】jQuery的deferred对象详解
jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本. 每个版本都会引入一些新功能.今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象. ...
- Coins and Queries(map迭代器+贪心)
题意 n个硬币,q次询问.第二行给你n个硬币的面值(保证都是2的次幂!).每次询问组成b块钱,最少需要多少个硬币? Example Input 5 42 4 8 2 4851410 Output 1- ...
- Python练习——循环2
1.求1~100之间能被7整除,但不能同时被5整除的所有整数 . for i in range(1,101): if i%7 == 0 and i%5 !=0: print(i) 2.输出“水仙花数” ...
- "Hello world!"团队第一次会议
今天是我们"Hello world!"团队第一次召开会议,今天的会议可能没有那么正式,但是我们一起确立了选题——基于WEB的售票系统.博客内容是: 1.会议时间 2.会议成员 3. ...
- window对象与document对象的区别
[window对象] 它是一个顶层对象,而不是另一个对象的属性,即浏览器的窗口. 属性 defaultStatus 缺省的状态条消息 document 当前显示的文档(该属性本身也是一个对象) fra ...
- 机器学习——DBN深度信念网络详解(转)
深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功.本人在多年之前也曾接触过神经网络.本系列文章主要记录自己对深度神经网络的一些学习心得. 简要描述深度神经网络模型. 1. 自联想神经网络 ...
- 可用于jquery animate()方法的css属性
* backgroundPosition * borderWidth * borderBottomWidth * borderLeftWidth * borderRightWidth * border ...
- 几个关于控件的优先级: UseSystemPasswordChar > PasswordChar > 控件属性设置
using System; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms ...