赵走x博客
网站访问量:151476
首页
书籍
软件
工具
古诗词
搜索
登录
34、触发pipeline执行:事件触发
33、触发pipeline执行:时间触发
32、当我们谈质量时,谈的是什么
31、Allure测试报告:更美观的测试报告
30、SonarQube:持续代码质量检查
29、性能测试
28、单元测试
27、静态代码分析
26、利用tools作用域实现多版本编译
25、利用环境变量支持更多的构建工具
24、构建工具
23、环境变量
22、小贴士
21、pipeline内置基础步骤:其他步骤
20、pipeline内置基础步骤:命令相关步骤
19、pipeline内置基础步骤:制品相关步骤
18、pipeline内置基础步骤:文件目录相关步骤
17、在声明式pipeline中使用脚本
16、配置pipeline本身
15、pipeline支持的指令
14、 post部分
13、pipeline的组成
12、必要的Groovy知识
11、使用Maven构建Java应用
10、从版本控制库拉取pipeline
9、创建第一个pipeline
8、pipeline语法的选择
7、Jenkinsfile又是什么
6、pipeline是什么
5、Jenkins与DevOps
4、Jenkins介绍
3、从另一个角度看“提高软件工程生产力”
2、前言
1、内容简介
27、静态代码分析
资源编号:76401
Jenkins 2.x 实战指南
微服务
热度:96
静态代码分析是指在不运行程序的前提下,对源代码进行分析或检查,范围包括代码风格、可能出现的空指针、代码块大小、重复的代码等。
静态代码分析是指在不运行程序的前提下,对源代码进行分析或检查,范围包括代码风格、可能出现的空指针、代码块大小、重复的代码等。 没有通过编译,静态代码分析就没有意义。所以在整个pipeline中,静态代码分析通常被安排在编译阶段之后。非编译型语言就另当别论了。 # 1、 代码规范检查 写代码时大括号该不该换行?对于这样的问题,很容易在团队里引发“战争”。在笔者看来,像该不该换行这类代码风格的优缺点问题,不是关键问题。关键问题在于整个团队甚至整个公司所有人是否采用同一套规范。 2017年阿里巴巴发布了《阿里巴巴Java开发手册》(https://github.com/alibaba/p3c ),在行业内引起了不小的轰动。《阿里巴巴Java开发手册》(下文以p3c简称)内容包括:命名风格、常量定义等。有了阿里巴巴的“光环”,公司内所有人就“代码规范”达成共识,变得更容易了。至于p3c里的规范是否真的是最好的,这是相对次要的一个问题。 但是新的问题来了,如何实施?安排一个人定期review团队成员的代码是否符合规范?这样做明显不够“DevOps”。 解决这个问题的正确思路是让机器来对规范的实施进行检查。我们的构建工具、专业的代码分析器不就是干这件事的吗? 所以,代码规范检查的方案是使用构建工具或代码分析器进行代码规范检查,如果不通过,pipeline就中止。 接下来,我们讨论具体的实施方法。 # 2、 使用PMD进行代码规范检查 PMD(https://pmd.github.io/ )是一款可扩展的静态代码分析器,它不仅可以对代码风格进行检查,还可以检查设计、多线程、性能等方面的问题。 Maven的PMD插件(https://pmd.github.io/ )使我们能在Maven上使用PMD。 使用步骤如下: (1)在Maven项目的pom.xml中加入PMD插件。  maven-pmd-plugin插件并不会自动使用p3c-pmd,需要在引入dependencies部分手动加入p3c-pmd依赖,然后在rulesets属性中引入p3c的规则。 (2)安装Jenkins PMD插件(https://pmd.github.io/ )。 Jenkins PMD插件的作用是将PMD报告呈现在任务详情页中。 (3)在Jenkinsfile中加入pmd步骤。  执行完成后,可以在任务详情页看到PMD报告的链接,如图5-1所示。  图5-1 PMD报告在构建任务页面中的链接 单击链接进入报告页面,可以看到更详细的信息,如图5-2所示。  图5-2 PMD报告详情 # 3、各静态代码分析器之间的区别 目前每种语言基本上都有自己的静态代码分析器,比如Java语言,除PMD外,还有Check-style、FindBugs等。但是没有一款能“大一统”,实现对所有语言、所有场景的支持。 另外,同一种语言下的不同分析器,它们在功能上既有区别,又有重叠,读者需要根据自己团队的情况进行选择。但是不论选择哪款分析器,所有进行静态代码分析的地方都必须统一分析规则。比如我们决定使用阿里巴巴的开发规范,那么Maven插件、IDE插件以及后面说到的SonarQube都必须使用;否则,分析结果可能会不一致,进而影响分析结果的可信度。