5

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

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

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

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

4

5 回答 5

3

我不建议自动进行此类更改。尽管大多数 checkstyle/pmd 符合是有效的,但我碰巧需要忽略一些警告/错误。此外 - 只有很少的此类简单问题。大多数通知需要更复杂的操作,并且可能无法在没有人工交互的情况下完成。

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

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

于 2013-03-29T16:35:40.910 回答
1

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

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

于 2013-03-29T16:21:26.483 回答
1

除了@Jayan 的回答,Jenkins 有一个CheckStyle 插件,它将显示每次 CheckStyle 运行的结果,并让您根据发现的违规数量设置构建状态。所以你的设置步骤是:

  1. 设置您的CheckStyle 规则以符合您的编码标准
  2. 向运行 CheckStyle 的 Jenkins 构建添加一个步骤
  3. 添加后期构建步骤以发布 CheckStyle 结果。
于 2013-03-29T16:39:27.870 回答
0

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

我记得几年前使用Jalopy进行自动代码格式化,它也可能满足您的需求。

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

于 2013-03-29T16:41:40.957 回答
0

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

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

于 2013-04-01T15:41:30.693 回答