转载于 http://www.chedong.com/tech/indent_tools.html ,作者 车东
c, c++ c# ==> indent Astyle
java ==> astyle Jalopy Jacobe ImportScrbber
php ==> phpCodeBeautifier
perl ==> perlTidy
python ==> Pydent
asp ==> VBSBeaut
程序员应该是善于沟通的,代码美化的意义在于体现了开发者对他人的尊重,使用好的编码约定可以使源代码明白、易读、准确,更加直观且与其他语言约定 保持一致,从而让程序员之间更好的沟通。
有统计表明缩进良好的代码可以提高代码阅读的效率40%以上,而另一个统计是软件开发工作的70%以上是维护前人的代码,因此对以往代码的格式美化 往往也是系统重构(refactoring)的第一步。代码美化工具(pretty print program)的使用可以使基本的代码缩进规范成为一种更容易执行的制度。
另外,如果作为部门代码规范的制订者也应该了解程序员不是机器,写代码时完全不犯代码缩进错误几乎是不可能的。基于工具的批量格式化和整理工具方便 的配置导入/导出机制制定统一的缩进规范才是一个真正有可操作性的制度。
几种开放源代码的代码美化工具的介绍
工具名称 | 适用语言 | 简介 | 安装/使用 |
indent | c | indent就是代码美化工具的代名词 | indent是gcc附带的一个标准工具, indent [options] [input-files] indent [options] [single-input-file] [-o output-file] |
perltidy | perl | perltidy本身也是用perl写的 | 下载后: perl Makefile.PL;make;make install perltidy [ options ] file1 file2 file3 ... (output goes to file1.tdy, file2.tdy, file3.tdy, ...) perltidy [ options ] file1 -o outfile perltidy [ options ] file1 -st >outfile perltidy [ options ] <infile >outfile |
astyle | c c++ java (php) | 一个速度很快的C/C++/Java源代码美化工具。 astyle比indent好在有很多成套的的风格定义:ansi java linux...不必记住复杂的缩进具体选项。 | 下载源代码解包后,make, 生成astyle可执行文件 astyle [options] < Original > Beautified astyle [options] Foo.cpp Bar.cpp [...] astyle --style=ansi *.cpp 我尝试过用它来格式化PHP程序也很有效(当然是不合HTML代码混在一起的纯PHP代码)。 |
jalopy | java | 功能强大的JAVA代码格式化工具,除了标准界面外,命令行工具,还可作为ANT JBUILDER ECLIPSE JDEVELOPER等工具的插件使用,并提供API | 从http://prdownloads.sourceforge.net/jalopy/ 下 载 并参考相应安装文档 |
pydent | python | pythius 包 含了2个工具: pydent: 代码缩进工具 pystat: 代码统计工具 | 下载源代码解包后: Run "python setup.py build" Run "python setup.py install" |
htmltidy | html/xml | HTML代码的纠错工具,可以帮助你的HTML代码更好的符合W3C规范,现在被称作tidy,因为它不仅只使用于 HTML,也现在也适用于XHTML XML的格式化。 但JSP不适合ASP PHP JSP等嵌入式脚本的代码美化
| 下载源代码后 make 生成tidy可执行文件: tidy file1 file2 ... 注意:对于含有中文的页面要使用 -raw选项
tidy.exe -raw -imuq -wrap 132 -f %f.err %f
选项说明:
-raw: 不修改中文字符 (output values above 127 without conversion to entities) -i indend 缺省HTML按2个空格缩进 -m 覆盖原文件 -u 强制所有HTML标记大写(这个可以不加) -wrap 页面代码宽度大于132行强制换行 -f %f.err 将错误输出到“相应文件名.err”文件中 HTMLTIDY支持XML的格式美化: tidy -xml -imq web.xml tidy -xml -imq build.xml |
其他工具介绍:
php代码美化工具
phpCB: php code beautifier 有命令行版本,也有图形界面的代码查看器。
http://www.phpedit.net/products/phpCodeBeautifier/
Java的代码美化工具
如果是专门针对JAVA代码的格式化,Jacobe 也 是很好的选择,它缺省包含了一个完全按照SUN的代码规范的格式化配置文件。而且甚至有JIndent 这种商业化代码整 理工具以获得更好的效果。
ImportScrbber: java import声明的整理工具,能够将import java.util.*这样的引用变成单条的引用,并且帮助删除已经不再需要的引用。 http://importscrubber.sourceforge.net/
介绍这些工具的都可以在这里可以找到:Jacobe Jindent Jxbeautifier...
http://directory.google.com/Top/Computers/Programming/Languages/Java/Development_Tools/Code_Beautifiers/
使用命令行工具实现代码的批量修改
Windows 2000下:用for命令实现目录遍历和文件过滤及命令执行,例如:
for /R %f in (*.java) do astyle --style=java %f
for /R %f in (*.htm*) do tidy -raw -imq -wrap 132 -f %f.err %f
for /R %f in (*.asp) do vbsbeaut.exe -i -s4 %f
Linux:用find -exec 遍历执行,例如:
find ./ -name *.java -exec astyle --style=ansi {} /;
因此不要被很多商业化软件漂亮的图形界面所迷惑,当面对上千个源文件时,能够基于命令行的批量操作也是一个非常重要的功能。
针对Eclipse 等IDE开发环境 的工具插件使用
越来越多的IDE开发环境都包含了代码美化功能,但有些仍不如这些专门的工具强大,而且如果开发人员中有的用Eclipse,有的是 JBuilder的忠实用户,如何让他们都能方便的遵守代码规范呢?答案就是用全Jalopy针对这些主流IDE开发环境的插件。
Jalopy: Java代码美化工具: http://jalopy.sourceforge.net/
Eclipse plug-in: http://jalopy.sourceforge.net/plugin-eclipse.html
CheckStyple: Java代码代码规范(缩进,命名)检查工具 http://checkstyle.sourceforge.net
Eclipse plug-in: http://www.atlas-sw.com/downloads/downloads-index.html
安装:
作为Eclipse的插件安装都非常方便,下载后解包到Eclipse/plug-in/目录下重启Eclipse即可:
配置:
Jalopy: Windows ==> Jalopy Preference 配置的导入/导出在General选单中,
CheckStyle: Windows ==> perference ==> checkstyle 配置的导入/导出就在配置界面右侧
标准配置的导入/导出功能可以大大降低开发人员针对以上工具的学习时间,对于大部分开发者来说不需要详细了解其中所有的选项配置,只要知道将标准配置导入 就可以了。我 常用的Jalopy配置文件
使用:
Jalopy: 在代码编辑界面点右键的选单中除了原有的Format选项外,还多出了Format with Jalopy选项,而Eclipse自身带有的Source=>Orgenize Imports也是能够达到Imports Srubber同样的功效。
CheckStyle是一个非常复杂的代码风格检查过程:包括缩进,命名规范等,因此缺省是Disable的,启动针对一个项目的CheckStyle需 要在点:项目的properties==>CheckStyle==>Enable。
而且以上这些工具都包含了针对ant的扩展,可以方便的加入到ant脚本中进行自动的代码整理/统计。