zoukankan      html  css  js  c++  java
  • 分享一个自研开发的QA自动化审计工具Sonar检查

    评价一个系统或软件的质量高低,我始终认为除了需求和设计外,代码质量很重要,一个高质量的系统或软件,并不是被测试出来的,更多的是要靠设计和开发出来的。目前也有很多自动化的测试工具,更多的是从功能和性能角度进行测试验证,对于代码质量,尤其对静态代码质量,业内实际也有成熟的检查工具:SonarQube,特别是互联网和大型企业都很关注代码本身的质量。我在之前汽车行业工作的时候,公司也特别关注静态代码质量并使用了SonarQube进行代码的检查,要求代码无致命和严重的BUG才能算代码检查过关

    那什么是SonarQube呢?SonarQube是开源的代码质量管理平台,用于管理代码的质量,通过插件形式可以支持包括Java、C#、JavaScript、TypeScript、CloudFormation、Terraform、Kotlin、Ruby、Go、Scala、Flex、Python、PHP、HTML、CSS、XML 、VB.NET等等二十几种编程语言的代码质量管理与检测的代码质量检测,通过多个维度的检查了快速定位代码中潜在的或者明显的错误。SonarQube是sonar的服务端,相当于一个web服务器中的tomcat,sonarqube提供能力不仅显示应用健康而且突出问题新推出的。有了质量门,您就可以修复漏洞,从而系统地提高代码质量。它的主要功能如下:

    1.不遵循代码标准。sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。

    2.潜在的缺陷。sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。

    3.糟糕的复杂度分布。文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。

    4.重复。显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。

    5.注释不足或者过多。没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅度下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。

    6.缺乏单元测试。sonar可以很方便地统计并展示单元测试覆盖率。

    7.糟糕的设计。通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则。通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况,检测耦合。

    8、提高代码质量。了解自己在编码过程中犯过的错误,让自己的代码更具有可读性和维护性。

    具体就不在这里介绍了,SonarQube最新版本是9.2.4,社区版是免费的,下载地址:https://www.sonarqube.org/downloads/,如下图

    SonarQube 社区版免费下载
    SonarQube 质量阀

    虽然可以通过登录SonarQube,在线进行分析浏览代码静态质量,但当有很多项目的时候查看效率就很低,且静态代码质量随时都会发生变化,前提是只要修改了源代码。因此,自行研究开发了一个SonarQube的静态代码质量审计工具,这个工具是一年多前开发的,如下图:

    SonarQub静态代码质量审计工具

    具体实现方式:后台存储采用了自定义的Sharepoint列表,此工具采用C#开发,与SonarQub的交互采用SonarQub的Web API。本工具与Sonar前台权限一致,如果在Sonar前台看不到任何一个项目,则本工具也无法正常使用。Sonar项目名称,需要注意一点:实际一个项目可能会对应多个不同Sonar项目名称,如下图:

    一个项目实际有多个Sonar项目
    选择要检查的Sonar项目
    Sonar项目检查结果
    Sonar项目清单

    最后简单介绍一下Sonarqube的Web API,具体如下:

    1.所有Sonar项目:http://{ip}/api/projects/index

    2.所有issues:http://{ip}/web_api/api/issues

    3.度量的结果:https://{ip}/api/measures/component?component={sonar项目}&metricKeys=duplicated_lines_density,new_uncovered_conditions,new_uncovered_lines,new_duplicated_blocks,new_lines_to_cover,bugs,files,new_bugs,new_vulnerabilities,new_code_smells,new_duplicated_lines,new_violations,uncovered_conditions,new_branch_coverage,new_coverage,new_lines,new_sqale_debt_ratio,new_maintainability_rating&additionalFields=metrics,periods

     

    更多技术沟通交流,可关注我的微信号:odoodev

     长按图片扫描二维码

     

    也可以关注我的今日头条号:

     

      长按图片扫描二维码

     

     

  • 相关阅读:
    js变量类型
    js词法分析
    ORACLE 查找字段在哪些表里存在
    主外键约束的关闭和启用
    pl/sql developer 编码格式设置(转)
    WIN7 Net Configuration Assistant打不开
    Kettle 连接失败 Oracle 数据库报 ora-12505 的解决方法(转)
    正则表达式30分钟入门教程(转)
    设置程序的多个入口,进行动态的显示
    应用多入口配置
  • 原文地址:https://www.cnblogs.com/nbpowerboy/p/15769625.html
Copyright © 2011-2022 走看看