是否可以使用SonarQube实施类似CAST的分析?

时间:2014-10-21 21:04:36

标签: code-analysis sonarqube pmd static-code-analysis

在我(庞大的)公司中,我们主要使用两种工具进行代码分析:

  • Sonar(Qube) - 在开发中,与CI紧密集成,为我的开发人员所熟知和喜爱。
  • CAST - 流程要求。没有连续测量,一年只有几次,例如主要版本。 CAST分析完全与开发分离,由一个单独的团队完成(我们只是发送交付包进行分析)。

我在开发方面你可能猜到,我(有点)知道Sonar / PMD,但不是CAST。无论如何,我对CAST分析的频率不太满意,但可能不是我可以影响或改变的过程。

所以我在想是否可能在Sonar中实现与CAST类似的规则。肯定不是全部而不是一切,但至少在CAST分析版本中没有任何重大意外。

我搜索了所有内容,寻找类似于" Sonar / PMD的#PMD规则"但找不到任何东西。

我的问题是那些对Sonar和CAST都有经验的人:

是否可以在声纳中实施CAST分析规则(或其某些近似值)?

3 个答案:

答案 0 :(得分:2)

我相信SonarQube中的可用规则集应涵盖您使用CAST检查的99%的规则。如果您无法在SonarQube的设置中找到CAST中有价值的规则,请随时查询stackoverflow。

答案 1 :(得分:1)

我知道这两种工具,CAST和SonarQube。 您的问题的答案将取决于技术:您使用哪种语言进行开发?你在使用任何框架吗?

不要告诉我只是J2EE,因为它涵盖了很多不同的语言:Java,JavaScript,JSP,HTML,...而不是讨论框架(Spring,Hibernate,Struts,...)和每个解决方案将针对具有不同规则的这些语言使用不同的分析器

CAST和SonarQube之间的主要内容是,它们都使用词法分析来识别违反编程最佳实践的行为,但CAST也会识别组件之间的链接(原因是它的速度较慢)。因此,CAST将有一些指标,如扇入/扇出和一些额外的规则(它们命名为架构或结构),例如避免从表示层到数据层的直接访问。此外,它还附带了一些用于分析框架组件的xml文件。

这种规则可能代表额外的20%,但这又是非常依赖语言的。以及两种工具的版本,因为版本之间的规则数量可能不同。

不,我认为并非所有这些'建筑'可以使用SonarQube实施规则。然而,它们并非都非常关键,所以你不要错过这么多。

我想你公司使用CAST作为质量门? 在这种情况下,我建议与使用CAST的人一起工作,以确定哪些CAST规则对他们至关重要,并可能触发NoGo或KO。请在这里发布这些规则,我相信你会得到一些好评。

不要犹豫,要求进一步的精确度。 问候。

答案 2 :(得分:1)

我们在公司的开发环境中使用sonarqube,但在我的项目中,客户端使用CAST作为SQ工具。几乎所有的CAST规则都包含在声纳规则中,对于那些没有的规则,我们使用基于squid java插件的XPATH编写它(如果我记得很好的话,Sonar 3.8+)。

使用XPATH,我们覆盖了99%的CAST规则,我们或多或少地编写了30条规则。您可以在此链接中找到更多信息,还有一个基于类的AST表示的测试de XPATH规则的工具(链接在下面的链接中)。

http://docs.sonarqube.org/display/SONAR/Extending+Coding+Rules

顺便说一句,我们的项目基于Java,Oracle Web Center Sites,spring,cxf和JPA / hibernate

希望帮助,欢呼