荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Czz@feeling-NOsmthSPAM-org (认真干活), 信区: Linux
标  题: c java php perl python 的程序代码美化工具
发信站: 温馨小屋 (Sun Mar  9 21:00:25 2003)
转信站: SZU!news.tiaozhan.com!news.zixia.net!news.feeling.smth.org!Feeling

http://www.linuxforum.net/docnew/showflat.php?Board=new&Number=569

文章标题   c java php perl python 的程序代码美化工具
张贴者: chedong (journeyman)
张贴日期 12/26/02 01:41 PM

c java php perl python 的程序代码美化工具(pretty print program / source code
 beautifer)使用
http://www.chedong.com/tech/indent_tools.html
作者: 车东 chedong@bigfoot.com

最后更新:2002-12-21 23:40:30
版权声明:可以任意转载,转载时请务必标明原始出处和作者信息
关键词:pretty print indent perltidy pydent astyle htmltidy source code
beautifier


您完全不必耐心的看到最后,如果马上能从以下列表中找到你需要的:

c, c++ c# ==> indent astyle
java ==> astyle jalopy Jacobe ImportScrbber
php ==> phpCodeBeautifier
perl ==> perltidy
python ==> pydent

程序员应该是善于沟通的,代码美化的意义在于体现了开发者对他人的尊重,使用好
的编码约定可以使源代码明白、易读、准确,更加直观且与其他语言约定保持一致,
从而让程序员之间更好的沟通。

有统计表明缩进良好的代码可以提高代码阅读的效率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写的 下载后直接运行perltidy脚本
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://tools.phpedit.net/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/

使用命令行工具实现代码的批量修改

WIN2000下:用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

Linux:用find -exec 遍历执行,例如:
find ./ -name *.java -exec astyle --style=ansi {} \;

因此,是否有命令行工具也往往成为选择代码美化工具的指标之一,很多商业化的软
件只采用图形界面,反而不适合代码的批量修改。

为什么HTMLTIDY的不适合重新格式化JSP PHP ASP等HTML嵌入式脚本语言

而有些无法解析的错误其实是代码不规范造成的。

JAVASCRIPT中的"<"
比如
for (i = 1; i<a; i++)
需要改成
for (i = 1; i < a; i++)
^ ^ "<"前后需要加空格,否则HTMLTIDY会把<a当成HTML标记
HTML属性中包含JSP标记:
对于一般的JSP属性输出TIDY是可以认出来的

比如: <input type=text size="9" name="alias" maxlength=20 value=<%=infoForm
.getAlias()%> >
但像这样的代码:

<img border=0 src=/image/upload/content/<%=infoForm.getId()%><%=infoForm.
getPhoto()%> width=120>
由于属性的开头不是<%,因此会出现IMG没有结尾错误
HTMLTIDY缺省是将代码完全补齐的,而实际上很多HTML代码是在被包含文件中。而且
HTMLTIDY对中文编码得识别还有一定问题(目前只支持BIG5)
原因:

为什么嵌入式代码很难维护?毕竟针对不规范的HTML语法检查器要比一个语言的解析
器要复杂的多。举例来说,比如针对这样的代码:
<?php echo "<table>";?>
</table>

这样形式的代码,美化工具必须同时懂得HTML语法和PHP语法才行,所以大部分格式
工具都是针对一种语言,或者针对嵌入脚本的程序部分的格式化,或者只对针对纯HTML
格式化。只有少数Virsual Age, Forte等大型开发工具里包含了JSP的代码美化,另
外就是SLICKEDIT这种大型商业文本编辑器等。

解决:对于包含程序的JSP ASP等文件的HTML部分的格式美化最好还是使用专门的HTML
编辑工具Dreamwaver(≥4)和Frontpage(≥2000)中的格式化工具来实现。比如:对于
FRONTPAGE从菜单的工具==>网页选项==>HTML源代码选单里选择“使用下面的规则重
新格式化源代码”。

总之,使用HTML和程序在一起的嵌入式脚本语言本身就是一件非常不好的开发习惯。
从长远来开用XML/XSLT等技术实现数据/表现/逻辑的分离是一种更适合大规模开发的
模式。

以上工具只是代码格式缩进的美化,而遵守完整的代码规范可以参考以下文档:

GNU Coding Standards
http://www.gnu.org/prep/standards_toc.html

Code Conventions for the Java(TM) Programming Language
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

PHP Coding Standard
http://utvikler.start.no/code/php_coding_standard.html

perlstyle
http://www.perldoc.com/perl5.6/pod/perlstyle.html

HTML XML XHTML CSS...
http://www.w3c.org
--
     佛说:前世的五百次回眸,才换来今生的擦肩而过。
           如果真的是,我愿用一万次来换与你的相遇!
     人说:十年只修得同船渡,百年才修得共枕眠。
           如果真的是,我愿用一千年来换与你的相识!
     魔说:今生历尽一层磨难,来生便多一世的姻缘。
           如果真的是,我愿用十八层来换与你的相知!


※ 来源:·温馨小屋 bbs.feeling.smth.org·[FROM: localhost]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店