前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins代码检查

Jenkins代码检查

原创
作者头像
陈不成i
修改2021-06-04 18:05:28
1.1K0
修改2021-06-04 18:05:28
举报
文章被收录于专栏:ops技术分享

一.静态代码分析

静态代码分析是指在不允许程序的前提下,对源代码进行分析或检查,范围包括代码风格、可能出现的空指针、代码块大小、重复的代码等。

没有通过编译,静态代码分析就没有意义。所以在整个pipeline中,静态代码分析通常被安排在编译阶段之后。非编译型语言就另当别论了。

写代码时大括号该不该换行?对于这样的问题很容易引起争议,如果公司对代码定标准,那符合与否不可能找一个人总盯着,开发组着虽然管理代码合并,也不可能逐行去看检查是否符合标准。

代码检查规范的方案是使用构建工具或者代码分析器进行代码检查,不通过,pipeline就中止。

二.规范检查

PMD进行检查

PMD(https://pmd.github.io)是一款可扩展的静态代码分析器,它不仅可以对代码风格进行检查,还可以检查设计、对线程、性能等方面的问题。 Maven的PMD插件,是我们能在Maven上使用PMD

1.在Maven项目的pom.xml中加入PMD插件

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-pmd-plugin</artifactId>
  4. <version>3.8</version>
  5. <configuration>
  6. <rulesets>
  7. <ruleset>rulesets/java/ali-comment.xml</ruleset>
  8. <ruleset>rulesets/java/ali-concurrent.xml</ruleset>
  9. <ruleset>rulesets/java/ali-exception.xml</ruleset>
  10. <ruleset>rulesets/java/ali-flowcontrol.xml</ruleset>
  11. <ruleset>rulesets/java/ali-naming.xml</ruleset>
  12. <ruleset>rulesets/java/ali-oop.xml</ruleset>
  13. <ruleset>rulesets/java/ali-orm.xml</ruleset>
  14. <ruleset>rulesets/java/ali-other.xml</ruleset>
  15. <ruleset>rulesets/java/ali-set.xml</ruleset>
  16. </rulesets>
  17. <printFailingErrors>true</printFailingErrors>
  18. </configuration>
  19. <executions>
  20. <execution>
  21. <goals>
  22. <goal>check</goal>
  23. </goals>
  24. </execution>
  25. </executions>
  26. <dependencies>
  27. <dependency>
  28. <groupId>com.alibaba.p3c</groupId>
  29. <artifactId>p3c-pmd</artifactId>
  30. <version>1.3.5</version>
  31. </dependency>
  32. </dependencies>
  33. </plugin>

maven-pmd-plugin插件并不会自动使用p3c-pmd,需要在引入dependencies部分手动加入p3c-pmd依赖,然后在rulesets属性中引入p3c的规则。

2.安装Jenkins PMD插件,作用是将PMD报告呈现在任务详情页中。

3.在Jenkkinsfile中加入pmd步骤

  1. pipeline {
  2. agent any
  3. tools {
  4. maven 'mvn-3.5.4'
  5. }
  6. stages {
  7. stage('pmd') {
  8. steps {
  9. sh "mvn pmd:pmd"
  10. }
  11. }
  12. }
  13. post {
  14. always {
  15. pmd(canRunOnFailed: true, pattern: '**/target/pmd.xml')
  16. }
  17. }
  18. }

执行完成后,可以在任务详情页看到PMD报告的链接

单机链接进入报告页面,可以看到更详细的信息

分析器区别

目前每种语言基本都有自己的静态代码分析器,比如JAVA语言,除了PMD外,还有Check-style、FindBugs等。但是没有一款能“大统一”,实现对所有语言和场景的支持。

另外,同一种语言下的不同分析器,他们在功能上既有区别,又有重叠,读者需要根据自己团队的情况进行选择。但是不论选择哪款分析器,所有进行静态代码分析的地方都必须统一分析规则。比如我们决定使用阿里巴巴的开发规范,那Maven插件、IDE插件以及SonarQube都必须使用;否则,分析结果可能会不一致,进而影响分析结果的可信度。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.静态代码分析
  • 二.规范检查
    • PMD进行检查
      • 分析器区别
      相关产品与服务
      腾讯云代码分析
      腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,助力维护团队卓越代码文化。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档