一、前言

  火线(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. java学习过程小问题

    一:基本的需要注意点(基础语句); package my; public class hello { public static void main(String[] args) { // TODO ...

  2. ThinkPHP - 4 - 学习笔记(2015.4.12)

    ThinkPHP D方法 D方法用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下:D('[项目://][分组/]模型' ...

  3. JQuery常用函数方法全集

    Attribute: $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img").attr({src:"test ...

  4. BZOJ 4176 Lucas的数论 莫比乌斯反演+杜教筛

    题意概述:求,n<=10^9,其中d(n)表示n的约数个数. 分析: 首先想要快速计算上面的柿子就要先把d(ij)表示出来,有个神奇的结论: 证明:当且仅当a,b没有相同的质因数的时候我们统计其 ...

  5. Mr. Frog’s Game(模拟连连看)

    Description One day, Mr. Frog is playing Link Game (Lian Lian Kan in Chinese). In this game, if you ...

  6. File Searching

    Description Have you ever used file searching tools provided by an operating system? For example, in ...

  7. 2017秋软工1 - 本周PSP

    1.本周PSP 2. 本周PSP饼状图 3. 本周进度条 4. 累计进度图

  8. Notes of the scrum meeting(12.12)

    meeting time:19:30~20:30p.m.,December 12th,2013 meeting place:3号公寓一层 attendees: 顾育豪                  ...

  9. maven把项目打包成jar包后找不到velocity模板的bug

    使用springmvc 开发时候要实现发送velcotiy模板邮件,在配置正常后,在本地测试正常后,使用maven打包成jar包后,报以下错误, Caused by: org.apache.veloc ...

  10. 哈希表 STL map

    计数排序时我们使用一个数组来记录出现的数字的次数,而当数据范围太大时,无法建立一个那么大地数组(而且可能空间利用率很低,太浪费),此时可以改用hash table . binary search tr ...