我对了解Java的高质量独立源代码格式器的可用选择感兴趣。
该格式必须是独立的,也就是说,它必须支持“批量”模式是从任何特定的开发环境脱钩。理想情况下,它也应独立于任何特定的操作系统。因此,这里对IDE du jour的内置格式化程序没有什么兴趣(除非IDE支持批处理模式格式化程序调用,也许是从命令行启动)。用封闭源C / C ++编写的仅在Windows上运行的格式化程序不是理想的,但有些有趣。
明确地说,“格式器”(或“美化器”)与“样式检查器”不同。格式化程序接受源代码作为输入,应用样式规则,并生成在样式上与原始源代码等效的样式化源代码。语法修改仅限于诸如在更改空格中修改代码布局或组织import语句之类的事情。很少(如果有)执行其他重构。样式检查器还应用样式规则,但是它只是报告违反规则的情况,而不会产生修改后的源代码作为输出。所以图片看起来像这样:
import
格式化程序(产生符合样式规则的修改后的源代码)
阅读源代码→应用样式规则→编写样式源代码
样式检查器(不产生修改的源代码)
阅读源代码→应用样式规则→违反规则
进一步说明
解决方案必须是高度可配置的。我希望能够指定自己的样式,而不仅仅是从预设列表中进行选择。
另外,我并不是在寻找用Java编写的可以漂亮打印许多东西的通用漂亮打印机。我想样式化Java代码。
我也不一定对多种语言的统一格式格式化感兴趣。我认为对于解决方案来说,它支持Java以外的其他语言可能会很好,但这不是必需的。
此外,仅执行代码突出显示的工具就可以 了。
我对Web服务也不感兴趣。我想要一个可以在本地运行的工具。
最后,解决方案不必局限于开源,公共领域,共享软件,免费软件,商业软件或其他任何软件。所有形式的许可都是可以接受的。
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