Codacy:一个新的容易使用的代码质量和审查自动化解决方案
Posted DevOps社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codacy:一个新的容易使用的代码质量和审查自动化解决方案相关的知识,希望对你有一定的参考价值。
| 翻译:沈维军
Codacy被超过一千家公司使用来进行代码审查和分析,不仅展示代码的质量,而且随着时间推移的进步。
不久前,我为公司组织了一次关于“代码质量和为什么开发人员应该关心它”的演讲。在这次演示中,我证明了一些工具的有效性,这些对于年轻开发者和久经沙场的IT开发人员来说都是不熟悉的。其中的一个工具,给我带来了很多的问题: codacy。我将展示其功能特性并且比较codacy和sonarqube。(更多信息:https://about.sonarcloud.io/)
应用的质量测量方法选择如何影响软件团队的工作方式?
免责声明:本文不代表codacy的观点。它反映了我的个人观点和经验。
根据一项codacy的研究,codacy的产品可以提高代码质量感知达到20%和优化代码审查过程达到30%。我们可以假设它反映了新的代码质量解决方案与传统代码相比带来的突破。代码分析的能力似乎是选择解决方案的次要标准。接受采访的用户利用这种能力缓解和优化软件开发过程,证明了这种解决方案的投资回收率。
Codacy是一个公司,一开始是由Seedcamp2012年资助的Qamine呈现。其客户包括Adobe、Deliveroo、英特尔和Paypal。超过30000的开发者每天使用他们的产品,超过1000多家企业使用他们的服务。每天超过十亿行代码被分析。
1特征
下面是codacy的主要特征:
代码审查自动化
代码质量分析
安全代码分析
集群安装/多个实例
我第一次尝试codacy,使用我的Github帐号登录,启动了对我的公共代码库的一些分析。
乍一看,我们可以观察到大多数我的存储库都是没有一行配置信息的。codacy检测自动化便捷最需要的。
我的一个项目没有被分析。这个项目是在Groovy上使用gradle包脚本开发。
Codacy官方支持的语言有
Scala
java
Python
Ruby
Apex
SP
XML
Velocity
visualforce
C #
根据Codacy,它的语言支持包括一些开箱即用的插件:
CoffeeScript
CSS
C/C++
Dockerfile
SASS
ShellScript
Swift
TypeScript
LESS
Go
对于我的每一个项目,Codacy提供了我的项目质量的度量。
一个Codacy最大的特色是“每次提交的策略”。每一次提交Codacy会触发分析。它甚至分析我过去的提交来绘制时间轴上的趋势。对于每个提交,我们可以看到质量和创建/删除问题数量的演变…
软件界面干净,非常容易使用。小部件提供了评估当前项目质量的必要信息。度量和违例统计被结合在了一起,建立了一个简单的质量计量学模型(复杂度、风格、兼容性、易出错、性能、安全、未使用的代码)。这个质量计量学模型是Codacy特定的,即使它是足够接近ISO 250001/9126规范。Codacy似乎并没有提供任何SQALE/ISO或安全标准模型。
Codacy的一个界面上允许开发人员评估他们项目的安全特性。
Codacy强力地映射到你的库和代码文件。大多数的度量和违规都与您的文件相关,如截图中所示。抽象的表示,如包、模块和命名空间并不表示出来,对大型项目的分析往往很复杂。
每条信息都会被清楚地汇报,每个文件都会获得从A到F的评分。
新的界面更好地展示您的代码质量数据,基本上回答了两个重要问题:
我现在的代码质量如何?
我的代码质量是如何随时间演变的?
要回答第一个问题,您有项目级别(A到F)和四个主要指标(静态分析问题、复杂性、重复性和覆盖率)。每个问题都属于六类之一(安全性、易错性、代码风格、兼容性、未使用的代码和性能)。总体技术性欠缺也会被估计。
Codacy的一个很好的功能就是重复的代码很容易跟踪和跟进,就像这张截图:
Codacy的一个重要特征是本地化处理分支、标签和你的SCM提供的重要东西的可能性。它不需要创建几个项目来处理分支,或者进行复杂的项目命名。
Codacy可以作为一个有效的质量控制关卡,来接受或拒绝你的团队的提交或其他外部的贡献。当代码提交时,控制代码质量的触发机制会使这一切变得非常方便。无论你是使用GitHub,Gitlab,Bitbucket,或你自己的知识库,Codacy提供一些集成方法去对你的提交和请求执行先验检查。
另一个有趣的特性是,可以对您的提交请求进行分析,并将质量报告插入到PR讨论中。
在Codacy中,我们也有一个接口来操作和配置用来分析你的源代码的规则。但是,功能缺乏灵活性(参数似乎在规则中丢失),并且规则文档还没有从第三个附件中导入。
SonarQube很大的可能已经删除评估代码质量的趋势(记得小箭头)和从默认界面读取度量的演变的默认图表。虽然你可以定制你的SonarQube界面,codacy提供有效的接口来跟踪您的项目质量演变和定位你每次提交的缺陷源头、标签等等。
行图显示了过去31天中每一个度量的演变,以及已作出的提交。除此之外,您还可以为每个度量定义一个标准值,它表示您预期的代码质量(例如不超过20%个问题,不少于70%的覆盖率等)。你可以认为它是为你的项目设置的质量阈值。
经过深入codacy,我认为他们的开发者建议那你把你的配置文件直接放在你的Git仓库。由于配置的版本化(以及作为一种奖励,与IDE共享),配置可以很容易地跟踪。
2sonarqube VS codacy:一个替代选择?
我是一个经常使用SonarQube的用户,因此,我想分享我个人对两者的比较,以帮助任何犹豫不决的人。
代码审查自动化
很长一段时间,sonarqube一直是最简单的代码质量分析方式。几年前,在这个领域长盛不衰的工具如squale,需要漫长而复杂的过程调试、配置,并最终获得代码度量。SonarQube带来了一个新的模式,“代码分析作为一种服务”。在这里,项目创建的所有细节可以从类似于Maven这样的构建脚本或修改后验来导入。这一特点是sonarqube强大的力量。
然而,这种方法也有一个主要的缺点。sonarqube缺乏质量阀值的适应性。举一个例子:每次提交使用Sonarqube来做分析的可能性。使用你们的CI建设工具比如Jenkins是聪明的。然而,SonarQube在每次提交后不持有任何度量,标签,或分支。在SonarQube中,分支是一个很新的特征,虽然其用法相当繁琐,甚至执行分支之间的比较(link1, Link2)。最后,Git或bitbucket技术创造了对工具的需求,此工具能为每一个分支、提交、pull-request建立度量以帮助产品所有者。
安全代码分析
安全和漏洞检测是静态分析工具难以解决的问题。这个利基市场已经充斥着成熟的领袖(Coverity,Fortify,Klocwork等)。这类工具很难实现:预测错误、缺乏信息、了解和解决问题的复杂性是常见的原因。
Codacy因此不是一个新的安全代码分析器。codacy集成了现有的许多工具,在一个接口集合所有的分析结果。诊断工具是用codacy里插件的数据和其他集成工具建立的。
语言覆盖和静态分析的力量
乍一看, Codacy覆盖面相当可观。Codacy由许多开源工具集成。SonarQube赢Codacy的地方在于给公司提供专有的语言支持,如COBOL和ABAP等专业语言。
那是这两个解决方案之间的重要差异。如果你在开发遗产软件或供应商锁定语言的软件,Codacy可能不是你要的解决方案。如果你想要一个应用组合分析,为您提供一个评分,无论你的代码是啥语言,SonarQube将是这个任务最好的解决方案。
然而,如果你是用时尚的语言开发新的软件(TypeScript, Scala),codacy是更好的选择。即使SonarQube正在开发自己的代码分析器,通常比开源软件更强大,结果是sonarqube对新的语言和框架反应更迟钝。几个开源插件就可以完成Sonarqube的可能性,前提是你的管理员允许它。这是一些sonarqube用户无法分析他们的新项目的主要限制。
用户友好性
在sonarqube发布时,用户体验大大进步,从一个简单但有效的GUI进化到可高度定制的产品,允许软件质量管理人员建立自己的界面。
在近期的发布版本中,Sonarqube的使用更加复杂;获取违例行为的完整列表和浏览被违反的规则的列表很复杂。不使用REST API很难再现这些使用案例。Sonarqube处在全面转变中,此变化已经轻微地恶化了它的用户体验。
相反,Codacy被设计成一个简单而有效的用户界面,可以很简单地查看你的数据、指标。开发团队很容易使用,在敏捷开发中我可不想花几个小时来调整两个小部件。
3结论
SonarQube 还是 Codacy?我认为它们是响应不同使用需求和期望的解决方案。
SonarQube(至少等到其基于云的服务变得成熟)是一个内部部署解决方案,给公司以能力来分析他们的项目,无论其组织方案是什么。SonarSource已经开发了专有的代码分析器来拓展他们的平台的可能性来更好地满足客户的需求:安全、供应商语言,质量计量学模型…
SonarQube的优势是专有的语言支持,市场的领导地位,以及开源/专利许可模式。弱点是一种昂贵的/稍复杂的授权模型,一个复杂的用户界面,一个内部部署解决方案,并可能缺乏市场需求响应。
Codacy,相比较而言,被设计为一个基于云的解决方案,被认为适应远程软件开发者的需求。主要使用GitHub,bitbucket SaaS服务,工作,建设,通信,并部署到云。他们的解决方案是深深地映射到你的代码库的组织中。
Codacy的优势是很容易使用,有一个友好的用户界面,及时分析每个贡献的可能性和最便宜的价格。该解决方案还提供了可用的开放源代码分析器的良好集成。
Codacy的弱点是缺乏其他SaaS服务整合(如Blackduck,Sonatype,UI/E2E测试SaaS服务或来自AWS API的网关APIQoS指标),有助于生态系统的复杂性,相对较小的社区,以及不可能加密项目信息或限制在UI层对源代码进行访问。
我希望这篇文章对你有帮助。如果是这样的话,请写一篇小评论或请分享给你的同事们哦。
点击”阅读原文“ 可访问英文原文:
《Codacy:A New Easy-to-Use Code Quality and Review Automation Solution》
这是DevOps实践社区
以上是关于Codacy:一个新的容易使用的代码质量和审查自动化解决方案的主要内容,如果未能解决你的问题,请参考以下文章
gitlab ci 集成 eslint/prettier/tsc 做代码审查,并使用 eslint 输出作为显示代码质量