我们是一个致力于常见Java / Maven项目的开发团队。我们使用不同版本的Eclipse,一个常见的Mercurial存储库(在Bitbucket上)和三个不同的操作系统。由于每个开发人员都有他/她的个人偏好,我们都使用不同的编码样式和代码格式(在同一行上的“else”/与前一个结束括号不同,或者每行使用最多80/100/120个字符,因为一些使用比其他人有更大的屏幕,等等。因此,当代码提交到存储库时,有时会出现类的更改,即使只更改了格式。这使得真正的变化难以追踪。
因此,我们正在讨论解决方案,如果我们同意项目标准,那么可能最好的解决方案,从现在开始,回购中的每个代码都必须符合此标准。如果一个同事从repo中检出代码,工具会将其转换为他/她喜欢的格式,并在提交之前将其转换回repo标准。
我想知道是否有用于格式化代码的工具,
关于自动化的要点非常重要:我应该通过强制他/她运行特殊脚本或在每次提交时按下额外按钮来轻松集成并且理想情况下不会打扰开发人员。
到目前为止我做了什么:
我在.hgrc中添加了以下行来创建一个钩子。
[hooks]
precommit = python:.hg/perform_code_formatting.py:perform
并创建了一个名为perform_code_formatting.py
的文件import re,os,sys,mercurial
def perform(repo, **kwargs):
from subprocess import call
call(["ls", "-l"])
当然,call
最终会被代码格式化工具取代。但是这种方法已经存在缺陷,因为我不确定它会在任何操作系统上运行并满足上述所有要求。
工具
我的问题
是否有符合我列出的所有要求的工具?有没有人对这种“不同的格式问题”有任何经验,并提出解决方案/工作流程/政策来处理它?
提前谢谢你;)