独立的Java代码格式化程序/美化器/漂亮的打印机?[已关闭]

2022-08-31 11:25:03

我有兴趣了解Java的高质量,独立源代码格式化程序的可用选择。

格式化程序必须是独立的,也就是说,它必须支持与任何特定开发环境分离的“批处理”模式。理想情况下,它还应该独立于任何特定的操作系统。因此,IDE du jour 的内置格式化程序在这里没什么意义(除非 IDE 支持批处理模式格式化程序调用,也许是从命令行)。用闭源C / C++编写的格式化程序,仅在Windows上运行,这并不理想,但有些有趣。

需要明确的是,“格式化程序”(或“美化器”)与“样式检查器”不同。格式化程序接受源代码作为输入,应用样式规则,并生成在语义上等效于原始源代码的样式化源代码。语法修改仅限于修改代码布局(如更改空格或组织语句) 。很少(如果有)执行其他重构。样式检查器还应用样式规则,但它只是报告规则冲突,而不会生成修改后的源代码作为输出。所以图片看起来像这样:import

格式化程序(生成符合样式规则的已修改源代码)

阅读源代码→应用样式规则→编写样式化源代码

样式检查器(不生成修改后的源代码)

阅读源代码→应用样式规则→写入规则冲突

进一步澄清

解决方案必须高度可配置。我希望能够指定自己的样式,而不仅仅是从预设列表中选择。

另外,我不是在寻找一个用Java编写的通用的漂亮打印机,它可以漂亮地打印很多东西。我想设置 Java 代码的样式。

也不一定对许多语言的大统一格式化程序感兴趣。我认为对于一个解决方案来说,支持Java以外的语言可能会很好,但这不是必需的。

此外,仅执行代码突出显示的工具也已推出

我对Web服务也不感兴趣。我想要一个可以在本地运行的工具。

最后,解决方案不必局限于开源,公共领域,共享软件,自由软件,商业或其他任何东西。所有形式的许可都是可以接受的


答案 1

JIndent(商业)执行所需的操作:

http://www.jindent.com/

我过去也使用Jalopy来做到这一点,它是开源的:

http://jalopy.sourceforge.net/

编辑:我会注意到Jalopy相当老,似乎没有任何最近的更新。我不太确定它是否适用于Java 5/6。你可能想看看Jacobe:

http://www.tiobe.com/index.php/content/products/jacobe/Jacobe.html

在Roedy Green的网站上还有一个更完整的格式化程序列表:

http://mindprod.com/jgloss/beautifier.html


答案 2

您也可以从命令行运行 Eclipse 重新格式化程序。

以下是该功能的 Eclipse 文档

首先,您必须创建特定于 Java 代码格式化程序设置的项目的配置文件。

然后保存到其他位置。{projectDirectory}/.settings/org.eclipse.jdt.core.prefs

现在,您将调用格式化程序。

"c:\path\to\eclipse\eclipse.exe" -vm "C:\path\to\jdk\bin\java.exe" -application org.eclipse.jdt.core.JavaCodeFormatter -config "c:\path\to\org.eclipse.jdt.core.prefs" "C:\path\to\your\src"

[警告]这在Eclipse 2018中似乎已经停止工作。使用Eclipse Oxygen。