在我的(大)公司中,我们主要使用两种工具进行代码分析:
- Sonar(Qube) - 在开发过程中,与 CI 紧密集成,了解并喜爱我的开发人员。
- CAST - 流程所需。没有连续的测量,每年只有几次,例如在主要版本上。 CAST 分析与开发完全脱钩,由单独的团队完成(我们只是发送交付包进行分析)。
正如您可能猜到的那样,我是开发人员,我(在某种程度上)了解 Sonar/PMD,但不了解 CAST。无论如何,我对 CAST 分析的频率不太满意,但这可能不是我可以影响或改变的过程。
所以我在想是否有可能在 Sonar 中实现与 CAST 类似的规则。当然不是全部,也不是全部,但至少有一些内容不会对发布的 CAST 分析产生太大的意外。
我用谷歌搜索了一遍,寻找诸如“Sonar/PMD 的 PMD 规则”之类的内容,但找不到任何内容。
我的问题是针对那些有 Sonar 和 CAST 经验的人:
是否可以在 Sonar 中实现 CAST 分析规则(或其某种近似值)?
最佳答案
我知道 CAST 和 SonarQube 这两种工具。 您的问题的答案将取决于技术:您使用哪些语言进行开发?您使用任何框架吗?
不要只告诉我 J2EE,因为这涵盖了很多不同的语言:Java、JavaScript、JSP、HTML,...不谈论框架(Spring、Hibernate、Struts,...),并且每个解决方案都会这些语言有不同的分析器,具有不同的规则。
CAST 和 SonarQube 之间的主要问题是,两者都使用词法分析来识别对编程最佳实践的违反,但 CAST 还可以识别组件之间的链接(这就是它速度较慢的原因)。因此,CAST 将具有一些指标,例如扇入/扇出和一些附加规则(它们称为架构或结构),例如避免从表示层直接访问数据层。此外,它还附带一些 xml 文件来分析框架组件。
这种规则可以代表额外的 20%,但这又非常依赖于语言。而且这两个工具的版本也不同,因为版本之间的规则数量可能不同。
不,我认为并非所有这些“架构”规则都可以通过 SonarQube 实现。然而,它们并不都非常关键,所以您不会错过太多。
我想你们公司使用 CAST 作为质量门? 在这种情况下,我建议与使用 CAST 的人合作,以确定哪些 CAST 规则对他们至关重要并可能触发 NoGo 或 KO。只要在这里发布这些规则,我相信您会得到一些好的评论。
请毫不犹豫地要求进一步的精确度。 问候。
关于code-analysis - 是否可以使用 SonarQube 实现类似 CAST 的分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26496292/