代码质量审核和管理工具分析比较

摘要:
也可以集成到Maven和Gradle构建周期中检查几乎所有内容,如代码质量,格式,变量声明,异常处理等。实施代码质量阈值,只有通过了这个质量阈值检测才能进入下一个流程。代码质量低于阈值的项目要及时调整对应的代码。此外,它也可以集成到CI/CD管道中,以确保交付前的代码质量。

代码质量审核和管理工具分析比较

1、SonarQube

SonarQube是市场上最受欢迎的代码质量和安全性分析工具。它在开源社区的支持下,目前可以分析和产生对超过25种编程语言的输出,这比市场上大多数工具都要高。它具有免费的社区版本和其他付费版本。利用SonarQube的主要好处是:
代码质量审核和管理工具分析比较第1张

它集成了数千种自动的静态代码分析规则,旨在提高开发人员的代码质量和安全性,使得开发人员编写更加干净,更加安全的代码。主要提供了三个比较大的功能:

  • 代码可靠性支持:提前捕获和提示代码中的错误,从而避免未定义的行为影响到终端用户。
  • 应用安全支持:修复可能危害到应用程序的漏洞,并通过安全热点学习AppSec(简单理解就是会学习和识别新的漏洞)。
  • 技术债务支持:确保管理的代码库干净并且可维护,以便提高开发人员的开发效率。

这可以帮助你确保代码在合并之前达到预期的质量!

  • 只需一行命令即可轻松集成到CI/CD管道中。
  • 也可以集成到Maven和Gradle构建周期中
  • 检查几乎所有内容,如代码质量,格式,变量声明,异常处理等。

实际上,研发团队可以基于SonarQube做下面的事情:

  • CI/CD流程加入一个SonarQube扫描的环节。
  • 实施代码质量阈值,只有通过了这个质量阈值检测才能进入下一个流程。
  • 代码质量低于阈值的项目要及时调整对应的代码。

质量阈值可以进行自定义,SonarQube中针对每个项目会有详细的面板信息,里面会给出项目当前的健康状态,不同级别漏洞的分类和明细,漏洞对应提交者等多维度的统计信息,方便进行问题的追踪和修复。举个例子,笔者在上一家公司项目上线需要跑一个流水线,而SonarQube设定了不同等级的阈值,对于老项目,会使用最低等级的阈值:阻断性的错误数量要求为0,对于一些新的项目,则严格要求质量如严重性的错误要求为0等,只要无法通过质量阈值检查,那么项目是无法上线的。

1.1 SonarQube使用

SonarQube提供不同类型的SonarScanner用于代码扫描和结果提交,这里以Maven为例。Maven的settings.xml需要引入下面的配置(注意父标签已经存在,重复添加父标签会导致异常):

<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  <!-- 这个位置需要替换成SonarQube服务地址,例如http://192.168.56.200:9000 -->
                  http://myserver:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

需要被扫描的项目中,需要引入Maven插件sonar-maven-plugin,当前最新版本为:

<plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.7.0.1746</version>
</plugin>

完成配置后,只需要在项目中执行命令进行扫描即可,首次执行会比较缓慢,因为需要下载大量的规则库和插件:

# 不指定插件版本执行
mvn clean install
mvn sonar:sonar

# 或者指定插件版本执行
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:${插件的版本号}:sonar

此外,可以通过pom文件中的<properties>指定SonarQube的参数,如:

<properties>
   <sonar.host.url>[...]</sonar.host.url>
   <ssonar.projectKey>[...]</sonar.projectKey>
   <sonar.projectName>[...]</sonar.projectName>
   <sonar.projectVersion>[...]</sonar.projectVersion>
   <sonar.login>[...]</sonar.login>
   <sonar.password>[...]</sonar.password>
   <sonar.sourceEncoding>[...]</sonar.sourceEncoding>
   .......
</properties>
2、DeepScan

DeepScan擅长扫描Javascript代码存储库。它能够处理几乎所有javascript框架的动态代码质量检查。
代码质量审核和管理工具分析比较第2张

它为你提供了一个出色的仪表板,可以在一处管理和维护所有项目以及代码质量等级。使用Deepscan的主要好处包括:

  • 提供随时间扫描数据的图形视图
  • 有助于分析和跟踪代码管理过程的进展情况
  • 对于在单个平台上进行组织范围的代码质量审核很有用
  • 自动扫描存储库
  • 可在云和本地上运行
3、Klocwork

Klocwork可以对几乎任何大小的项目执行静态代码分析。使用Klocwork的主要好处是它可以轻松地与Visual Studio Code IDE,Eclipse,IntelliJ等集成。这使开发人员更容易使用Klocwork。此外,它也可以集成到CI/CD管道中,以确保交付前的代码质量。它支持C,C#,C ++和Java。

代码质量审核和管理工具分析比较第3张

4、CodeSonar

CodeSonar是一种统计代码分析工具,可以从计算角度分析代码。它能够从你的代码中开发模型,分析它们的潜在执行威胁,例如锁死,内存溢出,空指针,数据泄漏以及可能难以捕获的许多此类程序错误。

  • 它完成的代码扫描比其他代码更深入。
  • 能够检测到比其他工具多3-5倍的缺陷
  • 它可以构建自己的函数调用图,以分析完整的代码模型并提供有关质量的输出。
5、JArchitect

JArchitect主要致力于Java语言中的代码分析。JArchitect是用于分析的最详尽的Java代码分析工具。JArchitect被三星,英特尔,LG,IBM,谷歌等巨头使用,这也从侧面印证了该工具的出色程度。

代码质量审核和管理工具分析比较第4张

6、Fortify

Micro Focus的Fortify专注于扫描代码库中的安全漏洞。它着眼于已知的安全漏洞以及可能存在问题的任何恶意软件或损坏文件的存在。一些不错的功能包括:

  • 自动扫描代码
  • 涵盖几乎所有编程语言
  • 提供解决漏洞的建议
  • 提供丰富的代码分析,以帮助更快地解决问题
  • 与流行的CI/CD工具轻松集成
7、Codecov

Codecov是用于管理代码库以及使用单个实用程序进行构建的综合工具。它分析推送的代码,执行所需的检查,并在需要时自动合并它们。下面列出了一些其他功能:

  • 单行命令可以扫描,分析,生成报告并将其合并
  • 可与几乎所有流行的CI/CD工具集成
  • 支持30多种编程语言
  • 将报告集成到Github存储库中,以简化代码审查

免责声明:文章转载自《代码质量审核和管理工具分析比较》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js 元素对象位置初等数学问题解答-9:恒等变形(二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【持续集成】如何用sonar-pmd插件集成pmd-xml的规则

需求sonar-pmd插件只有添加了pmd的java规则,现在需要添加pmd的xml规则,更准确是添加自定义的xml规则. 步骤:为了更好集成和示范,选择前人已集成p3c的sonar-pmd插件.url: https://github.com/mrprince/sonar-p3c-pmdgit clone 到本地集成分为两个环节:1.规则配置2.源码修改...

MySQL连接控制插件介绍

1.连接控制(connection_control)插件介绍 MySQL 服务端包含一个插件库,可以自定义安装各类插件。connection_control 插件也是其中一种,主要用来控制客户端在登录操作连续失败一定次数后的响应的延迟。该插件可有效的防止客户端暴力登录的风险。该插件包含以下两个组件: CONNECTION_CONTROL:用来控制登录失败...

项目干系人分析的“四步法”

作者:卢毅 摘 要:通过结合具体实际案例分析,本文提出了一套项目干系人分析的思路、步骤和方法:首先要形成一切项目管理活动首先着眼于项目干系人的思维模式、无遗漏地识别出项目干系人,然后从干系人的重要性和支持度两个维度进行分析,最后提炼出了干系人分析坐标格这一分析工具,并得出干系人全景视图供所有项目管理活动应用。 关键词:项目干系人、干系人分析、干系人分析...

打造数字化软件工厂 —— 一站式 DevOps 平台全景解读

本文为 CODING 协同产品总监张路宇 在腾讯云 CIF 工程效能峰会上所做的分享。文末可前往峰会官网,观看回放并下载 PPT。 欢迎各位朋友,来到腾讯云 CIF 工程效能峰会的分论坛,我是 CODING 的产品经理路宇,很高兴能以这种方式与大家见面。在接下来的主题环节中,会由我先为大家带来 CODING DevOps 研发平台的产品理念和全景解读,我们...

Kubernetes 针对资源紧缺处理方式的配置

如何在资源紧缺的情况下,保证 Node 的稳定性,是 Kubelet 需要面对的一个重要的问题。尤其对于内存和磁盘这种不可压缩的资源,紧缺就相当于不稳定。 在kubelet启动作为参数或者在配置文件中配置 驱逐策略 Kubelet 能够监控资源消耗,来防止计算资源被耗尽。一旦出现资源紧缺的迹象,Kubelet 就会主动终止一或多个 Pod 的运行,以回收...

OA办公系统 Springboot vue.js 前后分离 跨域 Flowable 工作流

1.模型管理    :web在线流程设计器、预览流程xml、导出xml、部署流程 2.流程管理    :导入导出流程资源文件、查看流程图、根据流程实例反射出流程模型、激活挂起 、自由跳转 3.运行中流程:查看流程信息、当前任务节点、当前流程图、作废暂停流程、指派待办人 4.历史的流程:查看流程信息、流程用时、流程状态、查看任务发起人信息 5.待办任务   ...