Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在协同Java开发中实施代码格式化规则_Java_Eclipse_Mercurial_Code Formatting - Fatal编程技术网

在协同Java开发中实施代码格式化规则

在协同Java开发中实施代码格式化规则,java,eclipse,mercurial,code-formatting,Java,Eclipse,Mercurial,Code Formatting,我们是一个小型的开发团队,致力于一个通用的Java/Maven项目。我们正在使用不同版本的Eclipse、一个公共Mercurial存储库(在Bitbucket上)和三种不同的操作系统。由于每个开发人员都有他/她的个人偏好,我们都使用不同的编码样式和代码格式(“else”在同一行上/与前面的结束括号不同,或者每行最多使用80/100/120个字符,因为其中一些使用的屏幕比其他使用的屏幕大,等等)。因此,当代码提交到存储库时,有时会显示类发生了更改,即使只是更改了格式。这使得真正的变化难以追踪 因

我们是一个小型的开发团队,致力于一个通用的Java/Maven项目。我们正在使用不同版本的Eclipse、一个公共Mercurial存储库(在Bitbucket上)和三种不同的操作系统。由于每个开发人员都有他/她的个人偏好,我们都使用不同的编码样式和代码格式(“else”在同一行上/与前面的结束括号不同,或者每行最多使用80/100/120个字符,因为其中一些使用的屏幕比其他使用的屏幕大,等等)。因此,当代码提交到存储库时,有时会显示类发生了更改,即使只是更改了格式。这使得真正的变化难以追踪

因此,我们正在讨论解决方案,最好的解决方案可能是,如果我们能就项目标准达成一致,从现在起,回购协议中的每一项准则都必须符合这一标准。如果一个同事从回购协议中签出代码,工具会将其转换为他/她最喜欢的格式,并在提交之前将其转换回回购协议标准

我想知道是否有一个格式化代码的工具

  • 可以在任何操作系统上运行
  • 可以轻松且广泛地配置(例如Eclipse格式化程序)
  • 将允许共享配置
  • 并且可以在开发人员没有注意到它的情况下运行
  • 还可以选择从控制台或作为单独任务运行(例如从maven)
  • 这是免费的
关于自动化的一点非常重要:我应该很容易地集成,理想情况下,不要强迫开发人员运行一个特殊的脚本或在每次提交时按下一个额外的按钮来打扰开发人员

我到目前为止所做的事情

我在.hgrc中添加了以下行以创建一个钩子

[hooks]
precommit = python:.hg/perform_code_formatting.py:perform
并创建了一个名为performation\u code\u formatting.py的文件

import re,os,sys,mercurial

def perform(repo, **kwargs):
   from subprocess import call
   call(["ls", "-l"])
当然,
call
最终将被代码格式化工具所取代。但这种方法已经存在缺陷,因为我不确定有什么工具可以在任何操作系统上运行并满足上述所有要求

工具

  • beautyj:在java上运行,但没有足够的配置选项
  • indent/astyle:但是,强大的工具依赖于操作系统
  • 金登特:不是免费的
  • eclipse格式化程序:到目前为止是最好的选择。也可以从控制台运行。但是,由于每个人都有不同的安装目录,因此必须进行一些初始工作,并且必须在每个工作站上分别进行脚本/mercurial配置
我的问题

是否有一个工具可以满足我列出的所有要求?是否有人有过这种“不同格式问题”的经验,并提出了解决方案/工作流程/策略来处理它


先谢谢你;)

您可以使用Jalopy,一种用于代码格式化的开源工具。也许你的团队可以试试这个


我看过Jalopy,但最后一次提交是在9年前,现在所有的下载链接都没有了。我还看了fork,Jalopy2,但是文档实际上是不存在的,当您试图从github中查看它时,“mvn安装”会生成一个.jar,没有附加清单。看起来您需要根据自己的需要进行操作