自动检查Java文件是否符合编码标准

自动检查Java文件是否符合编码标准,java,eclipse,mercurial,coding-style,jenkins,Java,Eclipse,Mercurial,Coding Style,Jenkins,我从事Java开发。我最近遇到了一种情况,我必须遵守编码标准:成员和方法顺序、命名约定、修饰符序列。我正在考虑自动检查合规性的方法,或者生成某种机制来重新排序 我们正在使用Eclipse进行开发,但是技术是开放的。一种可行的方法是生成一个外部构建器工具并将其添加到项目中。缺点是它将自动应用于所有文件,这可能会在遗留代码中遇到问题,将错误计数放大到不再是一个合理的遵从性度量的程度。而且,它使代码审查变得更加困难,这是不需要的 另一种方法是某种只具有信息功能的解析器。我们可以在Jenkins内部运行

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

我们正在使用Eclipse进行开发,但是技术是开放的。一种可行的方法是生成一个外部构建器工具并将其添加到项目中。缺点是它将自动应用于所有文件,这可能会在遗留代码中遇到问题,将错误计数放大到不再是一个合理的遵从性度量的程度。而且,它使代码审查变得更加困难,这是不需要的

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

有没有建议甚至简单的方法将这些功能集成到IDE、源代码管理系统(Mercurial)甚至Jenkins中?这在其他地方是如何实施的?

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


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

我不建议自动进行此类更改。尽管大多数checkstyle/pmd都是有效的,但我碰巧需要忽略一些警告/错误。此外,这些容易的问题只有很小的一部分。大多数通知需要更复杂的操作,如果没有人工交互,可能无法完成

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


在开发人员环境中,我使用Eclipse与findbugs的集成。还有一些与sonar的集成点,但它需要要么将代码提交到服务器,要么在本地运行服务器,这是我个人不喜欢的。然而,在Sonar的代码审查之后,经过几个周期的代码润色,你会注意到你(和其他团队成员)遵守了大部分规则,每天检查报告就足够了。

关于@Jayan的回答,Jenkins有一个可以显示每个CheckStyle运行结果的程序,并允许您根据发现的冲突数量设置构建状态。因此,您的设置步骤是:

  • 设置您的代码以符合您的编码标准
  • 在Jenkins构建中添加一个运行CheckStyle的步骤
  • 添加生成后步骤以发布CheckStyle结果

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

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

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

    您可以使用CQLinq查询检查您的最佳实践,这很有用 轻松创建自定义规则


    JArchitect对开源贡献者是免费的:

    TeamCity已经进行了预测试提交,希望它也能做一些代码合规性检查。从和开始,然后转到其他“静态分析工具”。查看当前的CheckStyle,似乎无法自由定义规则本身,只能定义要检查的规则(我们必须遵守不同于Java编码标准的修饰符序列)。“是FindBugs的精神继承者”