如何自动格式化Java代码

4

注意: 在投票关闭这个问题之前,请注意我并没有询问任何编码规范方面的意见;我只是想要帮助自动化一项任务。


我有一个新同事,喜欢使用非常奇特的代码规范,例如随处添加空格:

obj.method( a, b );

或者

@JoinColumn( name = "LANGUAGE_ID", referencedColumnName = "ID" )
@ManyToOne( optional = false, fetch = EAGER )

到处都是空格!

当你有连锁代码时,这会变得非常难以阅读。

adapters.stream().filter( adapter -> isValidCRM( adapter.getId(), crmIds ) )
            .forEach( crmAdapter -> futures.add( CompletableFuture
                    .supplyAsync( () -> crmAdapter.getPerson( id ), ec ).exceptionally( throwable -> {
                        LOGGER.error( throwable.getMessage() );
                        return Response.builder().error( throwable ).build();
                    } ) ) );

我很疲倦地与他争论,并且不想那样编码,所以我在Google上搜索了一下 pre-commit git hooks 和 Jalopy,但没有找到任何有用的信息。Jalopy看起来非常老(Java 1.5)。
基本上,我需要根据他奇特的指南(他配置了tt_checkstyle.xml)在推送时自动格式化代码。在拉取时,我不介意手动按照Java编码规范重新格式化代码。
我们使用Java 1.8和NetBeans。我们使用git。
有什么帮助(或任何其他解决方案)吗?谢谢。
1个回答

2
您可以在服务器和本地使用git挂钩或设置本地过滤器(smudge/clean)。

Git挂钩

阅读官方文档以获取完整的参考信息。


涂抹/清洁

在此处阅读有关其设置的详细信息:
https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes

事实证明,您可以编写自己的过滤器以在提交/检出时对文件进行替换。

这些称为cleansmudge过滤器。

.gitattributes文件中,您可以为特定路径设置过滤器,然后设置脚本,以便在检出(“smudge”,请参见图8-2)和暂存之前(“clean”,请参见图8-3)处理文件。

这些过滤器可以设置为执行各种有趣的操作。

enter image description here


太好了。但我需要在钩子上运行一个命令,按照Java的规则进行缩进...有什么工具可以做到这一点吗? - Luís Soares
你有很多格式化工具可供选择,只需选择一个好的可以从命令行使用的工具即可。 - CodeWizard
这里有一个带有工具列表的答案:https://dev59.com/1XNA5IYBdhLWcg3wWsYA - CodeWizard
嗯...问题更多的是:有没有工具可以根据checkstyle.xml文件中的一定规则进行格式化?这些工具似乎都不行。但还是谢谢。 - Luís Soares
抱歉,我可以帮您解决Git相关的问题,但不涉及Java工具。如果您有任何相关的GIT问题,请随时提出。 - CodeWizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接