在我(庞大的)公司中,我们主要使用两种工具进行代码分析:
我在开发方面你可能猜到,我(有点)知道Sonar / PMD,但不是CAST。无论如何,我对CAST分析的频率不太满意,但可能不是我可以影响或改变的过程。
所以我在想是否可能在Sonar中实现与CAST类似的规则。肯定不是全部而不是一切,但至少在CAST分析版本中没有任何重大意外。
我搜索了所有内容,寻找类似于" Sonar / PMD的#PMD规则"但找不到任何东西。
我的问题是那些对Sonar和CAST都有经验的人:
是否可以在声纳中实施CAST分析规则(或其某些近似值)?
答案 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
希望帮助,欢呼