自动检查Java文件以编码标准合规性

时间:2013-03-29 16:16:33

标签: java eclipse mercurial coding-style jenkins

我正在从事Java开发工作。我最近遇到了必须遵守编码标准的情况:成员和方法排序,命名约定,修饰符序列。我正在考虑自动检查合规性的方法,或者生成某种重新排序的机制。

我们正在使用Eclipse开发,但该技术将是开放的。它可能的一种工作方式是生成外部构建器工具并将其添加到项目中。缺点是它会自动应用于所有文件,这可能会遇到遗留代码的问题,将错误计数推高到不再是合理的合理度量标准的程度。此外,它使代码审查变得更加困难,这是不希望的。

另一种方式是某种具有信息功能的解析器。我们可以在Jenkins中运行一个进程,这肯定会起作用,但这也意味着代码已经通过了审核,这对于代码合规性检查来说通常有点晚。

是否有建议甚至简单的方法将这些功能集成到IDE,源控制系统(Mercurial)甚至Jenkins中?这是如何在其他地方强制执行的?

5 个答案:

答案 0 :(得分:3)

我不建议自动进行此类更改。尽管大多数checkstyle / pmd符合都是有效的,但在我看来我需要忽略一些警告/错误。而且 - 这些容易出现的问题非常少。大多数通知需要更复杂的操作,如果没有人工干预,可能无法完成。

我正在使用Sonar集成。它包含许多外部检查程序,例如PMD,CPD,CheckstyleFindbugs,并且可以与其他一些有用的工具集成,例如Cobertura(测试覆盖率统计信息)。将Sonar构建与Jenkins构建绑定并试图避免重大/关键问题几乎是微不足道的,这可能被认为是一种很好的方法。

在开发人员环境中,我使用Eclipse与findbugs集成。还有一些与声纳集成的点,但它需要将代码提交到服务器或在本地运行服务器,这是我个人不喜欢的。但是,在Sonar中进行代码审查后对代码进行了几次抛光后,您会发现您(和其他团队成员)坚持大多数规则并且每天检查报告就足够了。

答案 1 :(得分:1)

一种解决方案是使用JCSC / checkstyle或其他命令行友好的工具。将其与构建过程集成。个人开发人员在他的分支上运行它。

大多数工具与Jenkins(通过插件)很好地集成,可以用作仪表板

答案 2 :(得分:1)

继@ Jayan的回答,Jenkins有一个CheckStyle plugin,它将显示每个CheckStyle运行的结果,并允许您根据找到的违规次数设置构建状态。所以你的设置步骤是:

  1. 设置CheckStyle rules以符合您的编码标准
  2. 向运行CheckStyle
  3. 的Jenkins构建添加一个步骤
  4. 添加发布后步骤以发布CheckStyle结果。

答案 3 :(得分:0)

Jayan提到了checkstyle,这非常适合检查编码标准。

我记得使用Jalopy年前的自动代码格式化,它也可能适合您的需求。

但是,老实说,我不会自动重新格式化代码。使用checkstyle等工具来提出警告是一回事。控制开发人员的源代码是另一回事,并且大多数人发现它非常具有侵入性和不愉快性。 此外,代码检查器中的错误最坏的情况会产生错误的警告。代码美化中的错误可能会破坏并破坏数小时的工作。

答案 4 :(得分:0)

您可以使用JArchitect使用有用的CQLinq查询来检查您的最佳做法 轻松创建自定义规则

JArchitect对开源贡献者免费:http://www.jarchitect.com/JArchitectForOSS.aspx