我们正致力于作为一个团队开发web应用程序,并决定在提交代码之前遵守持续集成服务器中的声纳规则。经过思考,我们有了两个计划:
我可以知道每个计划的利弊吗?
计划2是努力少,经济,不需要运行声纳服务器在每个系统,但计划2可以执行与声纳一样多吗?
在对它们进行了一些研究之后,我发现单独的Check样式插件使用ANTLR,PMD使用JAVACC,Findbug在字节码上工作,而不是处理源代码--这意味着所有这三个插件都单独使用Java虚拟机来处理和生成结果,Sonar也是这样做的(运行在JVM上),我还发现,如果我们单独使用它们,规则可能会重叠。所以我的观点是,如果我们长期致力于重大的事情,那么使用Sonar会更好。
发布于 2014-10-17 20:32:27
问得好!答案取决于你愿意付出多少努力。让我来描述两种选择。这两台服务器都只包含一个中央SonarQube服务器,因为运行单个SonarQube服务器存在太多问题(一旦运行商业插件,就会增加许可证成本;管理开销太大;启动时间太长)。
规则重叠在所有情况下都会发生,因此无论发生什么情况,您都必须处理这些问题。
最简单的
最简单的设置是一个中央SonarQube服务器,每个人都通过SonarQube插件使用它。您不会在本地使用任何其他单独的分析工具。
金标
黄金标准是一个中央SonarQube服务器,仅用于连续集成系统。开发人员不会使用SonarQube,而是根据维护SonarQube质量概要的人员提供的中心配置来配置单个分析工具。缺点是,这需要做更多的工作,因为您必须维护四个配置,而不是一个配置(Checkstyle,PMD,FindBugs,SonarQube)。(没错,在这种情况下,PermaLinks是帮不上忙的。)开发人员必须不时地检查SonarQube Web,以确保没有任何东西逃脱他们的本地检查。
好的,更多的工作,但是是什么使它更好呢?
Member 'theField' must start with a lowercase 'm'而不是Identifier 'theField' did not match pattern '^m[a-zA-Z0-9]*$'的消息。特别是对于复杂的正则表达式,这对您的质量控制系统的接受产生了巨大的影响。发布于 2014-10-17 10:27:27
团队规模越大,本地配置就越有可能出现问题。我记得有一次我安装了一个新的软件,它只与JDK 32位一起工作,所以我将JDK 64位卸载为JDK 32位。在那之后,我进行了一些Sonar分析,因为JVM改变了内存空间问题。
与往常一样,性能是一个配置和收费的问题。您想要分析的应用程序/代码行数与服务器/数据库/.配置。
致以问候。
https://stackoverflow.com/questions/26403714
复制相似问题