分享
 
 
 

C Java PHP Perl Python 的程序代码美化工具

王朝perl·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

C Java PHP Perl Python的程序代码美化工具(pretty print program / source

code beautifer)使用: pretty print indent perltidy pydent astyle htmltidy

source code beautifier

C Java PHP Perl Python 的程序代码美化工具

(Pretty Print Program/Source Code Beautifer)使用

作者: 车东 chedong@bigfoot.com

最后更新:

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

http://www.chedong.com/tech/indent_tools.html

关键词:pretty print indent perltidy pydent astyle htmltidy source code

beautifier

内容摘要:

写本文的目的无非是2个:

如果前任程序员缩进非常不整齐的代码非常影响现任维护者的代码阅读速度。

新的项目代码(无论在什么编辑环境下编写)都能够非常好的适应公司的缩进规范,可以便于开发者之间的交流。

如果马上能从以下列表中找到你需要的就完全不必耐心的看到最后:相应工具包中的文档会有更详细的使用说明

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写的

下载后: 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://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/

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

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

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: 在代码编辑界面点右键的选单中除了原有的Format选项外,还多出了Format with

Jalopy选项,而Eclipse自身带有的Source=>Orgenize Imports也是能够达到Imports

Srubber同样的功效。

CheckStyle是一个非常复杂的代码风格检查过程:包括缩进,命名规范等,因此缺省是Disable的,启动针对一个项目的CheckStyle需要在点:项目的properties==>CheckStyle==>Enable。

而且以上这些工具都包含了针对ant的扩展,可以方便的加入到ant脚本中进行自动的代码整理/统计。

参考资料:

GNU Coding Standards

http://www.gnu.org/prep/standards_toc.html

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

PHP Coding Standard

http://utvikler.start.no/code/php_coding_standard.html

Perl Style

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

HTML XML XHTML CSS...

http://www.w3c.org

C-C++ Beautifier HOW-TO: Beautifiers for other Languages

http://www.tldp.org/HOWTO/C-C++Beautifier-HOWTO-3.html

代码统计工具

http://sourceforge.net/projects/statcvs

组件包之间的依赖性分析

http://www.clarkware.com/software/JDepend.html

代码检查

http://www.thecortex.net/clover/index.html

更多XP工具

http://directory.google.com/Top/Computers/Programming/Languages/Java/Coding_Standards/

http://www.xprogramming.com/software.htmhttp://www.qsm.com/CodeCounters.html

附:为什么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等技术实现数据/表现/逻辑的分离是一种更适合大规模开发的模式。

原文出处:<a

href="http://www.chedong.com/tech/indent_tools.html">http://www.chedong.com/tech/indent_tools.html</a>

<<返回

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有