发布于 2009-12-23 21:55:23
Maven构建应该只使用Checkstyle之类的内容报告格式化错误,而不是自动格式化代码。这就是你的描述所暗示的。这样,错误就会在构建时报告给开发人员/Hudson,并且可以根据需要进行解决。
我还建议使用像Sonar这样的工具来保存一段时间内格式错误的历史记录(请参阅它们的时光机功能)。
发布于 2010-01-29 19:54:37
为了使您的项目具有一致的格式,您需要将工具配置为自动执行。我会提出以下建议:
Eclipse格式化程序
对于Eclipse,在Preferences (Java->Code Style->Formatter)中有一个选项,您可以在其中配置项目的格式化方式。创建一个新的配置文件,并将您的配置放入其中。
完成后,有一个导出功能(它很隐蔽,单击Edit,然后单击Export)。将配置传递给团队的其他成员,以便可以导入。
Eclipse保存操作
尽管如此,配置了格式化程序并不能保证开发人员会在提交之前格式化代码,因此您需要配置自动格式化。
再次转到Preferences (Java->Editor->Save Actions)并选择Format Source Code。这样,在保存文件时会格式化代码。
Eclipse Checkstyle插件
一些开发人员可能会忘记正确执行这些步骤,因此您需要一种方法来定位这些步骤。
为Eclipse安装Checkstyle插件:
checkstyle转到帮助->Install Software...
一旦你安装了插件,你可以为它创建一个配置。然后,可以为团队的其余成员导出配置,或者更好地将配置上载到服务器并远程引用配置。
拥有远程配置的好处是,您还可以通过maven-checkstyle-plugin引用它,并且它可以通过在CI服务器上启动它来为您提供报告。
如果您想成为核心,您可以将基本配置(由格式化程序自动完成的配置)设置为错误,而不是警告,这样配置错误的eclipse的开发人员就可以在提交之前看到错误。
预配置的Eclipse
如果您想要进入下一阶段,您可以创建一个预配置的eclipse,并将该版本分发给您的开发人员,这样他们就不需要做任何事情了。
副作用奖励:您可以在开发平台上避免版本不一致。配置管理不仅涉及源代码,还涉及开发工具。让事情变得更可预测。
发布于 2009-12-23 22:32:54
处理这种情况的一种方法是在预提交钩子中使用Jalopy或JIndent,甚至Eclipse内置代码格式化程序(可以invoke from the command line)格式化代码。如果你不能强制人们在提交之前运行自动构建,这是确保版本代码总是正确格式化的唯一方法。但我不知道Perforce是否支持预提交钩子。
如果没有,另一种选择是在构建时使用Jalopy Maven Plugin或Maven Checkstyle Plugin,并在违反规则时使构建失败(并让CI引擎报告)。不过,美观的东西的构建失败可能是相当恼人的。
因此,实际上,每晚运行一个进程来格式化代码可能是另一种选择。在这种情况下,Jalopy Maven Plugin或其他提到的工具可能会对您有所帮助,这实际上取决于您是否要使用Maven来完成这项工作。
https://stackoverflow.com/questions/1955514
复制