小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C Java PHP Perl Python的程序代碼美化工具使用

 ekylin 2006-05-06

C Java PHP Perl Python 的程序代碼美化工具
(Pretty Print Program/Source Code Beautifier)使用

作者: 車東 Email: chedongATbigfoot.com/chedongAT

寫于:2002/04 最后更新: 02/22/2006 14:42:55
Feed Back >> (Read this before you ask question)
Creative Commons License

版權(quán)聲明:可以任意轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
http://www./tech/indent_tools.html

關(guān)鍵詞:pretty print indent perltidy pydent astyle htmltidy source code beautifier

內(nèi)容摘要:
寫本文的目的無(wú)非是2個(gè):

  1. 如果前任程序員縮進(jìn)非常不整齊的代碼非常影響現(xiàn)任維護(hù)者的代碼閱讀速度。
  2. 新的項(xiàng)目代碼(無(wú)論在什么編輯環(huán)境下編寫)都能夠非常好的適應(yīng)公司的縮進(jìn)規(guī)范,可以便于開(kāi)發(fā)者之間的交流。

如果馬上能從以下列表中找到你需要的就完全不必耐心的看到最后:相應(yīng)工具包中的文檔會(huì)有更詳細(xì)的使用說(shuō)明

c, c++ c# ==>   indent   Astyle

java ==> astyle Jalopy Jacobe ImportScrbber

php ==> phpCodeBeautifier

perl ==> perlTidy

python ==> Pydent

asp ==> VBSBeaut

程序員應(yīng)該是善于溝通的,代碼美化的意義在于體現(xiàn)了開(kāi)發(fā)者對(duì)他人的尊重,使用好的編碼約定可以使源代碼明白、易讀、準(zhǔn)確,更加直觀且與其他語(yǔ)言約定保持一致,從而讓程序員之間更好的溝通。

有統(tǒng)計(jì)表明縮進(jìn)良好的代碼可以提高代碼閱讀的效率40%以上,而另一個(gè)統(tǒng)計(jì)是軟件開(kāi)發(fā)工作的70%以上是維護(hù)前人的代碼,因此對(duì)以往代碼的格式美化往往也是系統(tǒng)重構(gòu)(refactoring)的第一步。代碼美化工具(pretty print program)的使用可以使基本的代碼縮進(jìn)規(guī)范成為一種更容易執(zhí)行的制度。

另外,如果作為部門代碼規(guī)范的制訂者也應(yīng)該了解程序員不是機(jī)器,寫代碼時(shí)完全不犯代碼縮進(jìn)錯(cuò)誤幾乎是不可能的?;诠ぞ叩呐扛袷交驼砉ぞ叻奖愕呐渲脤?dǎo)入/導(dǎo)出機(jī)制制定統(tǒng)一的縮進(jìn)規(guī)范才是一個(gè)真正有可操作性的制度。

幾種開(kāi)放源代碼的代碼美化工具的介紹

工具名稱 適用語(yǔ)言 簡(jiǎn)介 安裝/使用
indent c indent就是代碼美化工具的代名詞 indent是gcc附帶的一個(gè)標(biāo)準(zhǔn)工具,
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) 一個(gè)速度很快的C/C++/Java源代碼美化工具。
astyle比indent好在有很多成套的的風(fēng)格定義:ansi java linux...不必記住復(fù)雜的縮進(jìn)具體選項(xiàng)。
下載源代碼解包后,make, 生成astyle可執(zhí)行文件
astyle [options] < Original > Beautified
astyle [options] Foo.cpp Bar.cpp [...]
astyle --style=ansi *.cpp
我嘗試過(guò)用它來(lái)格式化PHP程序也很有效(當(dāng)然是不合HTML代碼混在一起的純PHP代碼)。
jalopy java 功能強(qiáng)大的JAVA代碼格式化工具,除了標(biāo)準(zhǔn)界面外,命令行工具,還可作為ANT JBUILDER ECLIPSE JDEVELOPER等工具的插件使用,并提供API http://prdownloads./jalopy/下載
并參考相應(yīng)安裝文檔
pydent python pythius包含了2個(gè)工具:
pydent: 代碼縮進(jìn)工具
pystat: 代碼統(tǒng)計(jì)工具
下載源代碼解包后:
Run "python setup.py build"
Run "python setup.py install"
htmltidy html/xml HTML代碼的糾錯(cuò)工具,可以幫助你的HTML代碼更好的符合W3C規(guī)范,現(xiàn)在被稱作tidy,因?yàn)樗粌H只使用于HTML,也現(xiàn)在也適用于XHTML XML的格式化。

但JSP不適合ASP PHP JSP等嵌入式腳本的代碼美化

 

下載源代碼后 make 生成tidy可執(zhí)行文件:
tidy file1 file2 ...
注意:對(duì)于含有中文的頁(yè)面要使用 -raw選項(xiàng)
tidy.exe -raw -imuq -wrap 132 -f %f.err %f
選項(xiàng)說(shuō)明:
-raw: 不修改中文字符 (output values above 127 without conversion to entities)
-i indend 缺省HTML按2個(gè)空格縮進(jìn)
-m 覆蓋原文件
-u 強(qiáng)制所有HTML標(biāo)記大寫(這個(gè)可以不加)
-wrap 頁(yè)面代碼寬度大于132行強(qiáng)制換行
-f %f.err 將錯(cuò)誤輸出到“相應(yīng)文件名.err”文件中
HTMLTIDY支持XML的格式美化:
tidy -xml -imq web.xml
tidy -xml -imq build.xml

其他工具介紹:

php代碼美化工具
phpCB: php code beautifier 有命令行版本,也有圖形界面的代碼查看器。
http://www./products/phpCodeBeautifier/

Java的代碼美化工具
如果是專門針對(duì)JAVA代碼的格式化,Jacobe也是很好的選擇,它缺省包含了一個(gè)完全按照SUN的代碼規(guī)范的格式化配置文件。而且甚至有JIndent這種商業(yè)化代碼整理工具以獲得更好的效果。

ImportScrbber: java import聲明的整理工具,能夠?qū)mport java.util.*這樣的引用變成單條的引用,并且?guī)椭鷦h除已經(jīng)不再需要的引用。 http://importscrubber./

介紹這些工具的都可以在這里可以找到:Jacobe Jindent Jxbeautifier...
http://directory.google.com/Top/Computers/Programming/Languages/Java/Development_Tools/Code_Beautifiers/

使用命令行工具實(shí)現(xiàn)代碼的批量修改

Windows 2000下:用for命令實(shí)現(xiàn)目錄遍歷和文件過(guò)濾及命令執(zhí)行,例如:
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 遍歷執(zhí)行,例如:
find ./ -name *.java -exec astyle --style=ansi {} \;

因此不要被很多商業(yè)化軟件漂亮的圖形界面所迷惑,當(dāng)面對(duì)上千個(gè)源文件時(shí),能夠基于命令行的批量操作也是一個(gè)非常重要的功能。

針對(duì)Eclipse等IDE開(kāi)發(fā)環(huán)境的工具插件使用

越來(lái)越多的IDE開(kāi)發(fā)環(huán)境都包含了代碼美化功能,但有些仍不如這些專門的工具強(qiáng)大,而且如果開(kāi)發(fā)人員中有的用Eclipse,有的是JBuilder的忠實(shí)用戶,如何讓他們都能方便的遵守代碼規(guī)范呢?答案就是用全Jalopy針對(duì)這些主流IDE開(kāi)發(fā)環(huán)境的插件。
Jalopy: Java代碼美化工具: http://jalopy./
Eclipse plug-in: http://jalopy./plugin-eclipse.html
CheckStyle: Java代碼代碼規(guī)范(縮進(jìn),命名)檢查工具 http://checkstyle.
Eclipse plug-in: Eclipse Checkstyle Plug-in

安裝:
作為Eclipse的插件安裝都非常方便,下載后解包到Eclipse/plug-in/目錄下重啟Eclipse即可:

配置:
Jalopy: Windows ==> Jalopy Preference 配置的導(dǎo)入/導(dǎo)出在General選單中,
CheckStyle: Windows ==> perference ==> checkstyle 配置的導(dǎo)入/導(dǎo)出就在配置界面右側(cè)
標(biāo)準(zhǔn)配置的導(dǎo)入/導(dǎo)出功能可以大大降低開(kāi)發(fā)人員針對(duì)以上工具的學(xué)習(xí)時(shí)間,對(duì)于大部分開(kāi)發(fā)者來(lái)說(shuō)不需要詳細(xì)了解其中所有的選項(xiàng)配置,只要知道將標(biāo)準(zhǔn)配置導(dǎo)入就可以了。我常用的Jalopy配置文件

使用:
Jalopy: 在代碼編輯界面點(diǎn)右鍵的選單中除了原有的Format選項(xiàng)外,還多出了Format with Jalopy選項(xiàng),而Eclipse自身帶有的Source=>Orgenize Imports也是能夠達(dá)到Imports Srubber同樣的功效。
CheckStyle是一個(gè)非常復(fù)雜的代碼風(fēng)格檢查過(guò)程:包括縮進(jìn),命名規(guī)范等,因此缺省是Disable的,啟動(dòng)針對(duì)一個(gè)項(xiàng)目的CheckStyle需要在點(diǎn):項(xiàng)目的properties==>CheckStyle==>Enable。

而且以上這些工具都包含了針對(duì)ant的擴(kuò)展,可以方便的加入到ant腳本中進(jìn)行自動(dòng)的代碼整理/統(tǒng)計(jì)。


參考資料:

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

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

PHP Coding Standard
http:///code/php_coding_standard.html

Perl Style
http://www./perl5.6.1/pod/perlstyle.html

pb: Perl/Javascript Beautifier
http://www./lutusp/ftp/cgi/pb.txt

HTML XML XHTML CSS...
http://www. 

C-C++ Beautifier HOW-TO:
http://www./HOWTO/C-C++Beautifier-HOWTO/

VBScript代碼規(guī)范
http://msdn.microsoft.com/library/en-us/script56/html/vbsCodingConventions.asp

VBSBeaut代碼整理工具
http://www./vbsbeaut/

Java組件之間的依賴度分析
http://www./software/JDepend.html

代碼檢查
http://www./clover/index.html

更多XP工具
http://directory.google.com/Top/Computers/Programming/Languages/Java/Coding_Standards/
http://www./software.htm
http://www./CodeCounters.html


附:為什么HTMLTIDY的不適合重新格式化JSP PHP ASP等HTML嵌入式腳本語(yǔ)言

而有些無(wú)法解析的錯(cuò)誤其實(shí)是代碼不規(guī)范造成的。

  1. JAVASCRIPT中的"<"
    比如
    for (i = 1; i<a; i++)
    需要改成
    for (i = 1; i < a; i++)
    ^ ^ "<"前后需要加空格,否則HTMLTIDY會(huì)把<a當(dāng)成HTML標(biāo)記
  2. HTML屬性中包含JSP標(biāo)記:
    對(duì)于一般的JSP屬性輸出TIDY是可以認(rèn)出來(lái)的

    比如: <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>
    由于屬性的開(kāi)頭不是<%,因此會(huì)出現(xiàn)IMG沒(méi)有結(jié)尾錯(cuò)誤
  3. HTMLTIDY缺省是將代碼完全補(bǔ)齊的,而實(shí)際上很多HTML代碼是在被包含文件中。而且HTMLTIDY對(duì)中文編碼得識(shí)別還有一定問(wèn)題(目前只支持BIG5)

原因:

為什么嵌入式代碼很難維護(hù)?畢竟針對(duì)不規(guī)范的HTML語(yǔ)法檢查器要比一個(gè)語(yǔ)言的解析器要復(fù)雜的多。舉例來(lái)說(shuō),比如針對(duì)這樣的代碼:
<?php echo "<table>";?>
</table>

這樣形式的代碼,美化工具必須同時(shí)懂得HTML語(yǔ)法和PHP語(yǔ)法才行,所以大部分格式工具都是針對(duì)一種語(yǔ)言,或者針對(duì)嵌入腳本的程序部分的格式化,或者只對(duì)針對(duì)純HTML格式化。只有少數(shù)Virsual Age, Forte等大型開(kāi)發(fā)工具里包含了JSP的代碼美化,另外就是SLICKEDIT這種大型商業(yè)文本編輯器等。

解決:對(duì)于包含程序的JSP ASP等文件的HTML部分的格式美化最好還是使用專門的HTML編輯工具Dreamweaver(≥4)和Frontpage(≥2000)中的格式化工具來(lái)實(shí)現(xiàn)。比如:對(duì)于FRONTPAGE從菜單的工具==>網(wǎng)頁(yè)選項(xiàng)==>HTML源代碼選單里選擇“使用下面的規(guī)則重新格式化源代碼”。

總之,使用HTML和程序在一起的嵌入式腳本語(yǔ)言本身就是一件非常不好的開(kāi)發(fā)習(xí)慣。從長(zhǎng)遠(yuǎn)來(lái)開(kāi)用XML/XSLT等技術(shù)實(shí)現(xiàn)數(shù)據(jù)/表現(xiàn)/邏輯的分離是一種更適合大規(guī)模開(kāi)發(fā)的模式。

為了目前大量的ASP PHP JSP應(yīng)用我還是通過(guò)Google上找到一些工具,相信HOMESITE等。其實(shí)前面提到的VBSBeautifier其實(shí)也是調(diào)用Perl 5.8在Windows上的

一個(gè)用于ASP的代碼美化工具:VbsBeaut
http://www./vbsbeaut/

一個(gè)用于ASP JSP PHP編輯并帶有代碼美化功能的工具:BPHTML
http://www./

一個(gè)基于Java的HTML編輯器,內(nèi)嵌了C C++ Java JavaScript Perl等類C語(yǔ)言的代碼美化器:http://www./arachnophilia/index.html

Beautifier highlights and indents source code using highlight configuration files (which are similar to Ultraedit highlighting files). As such, it supports C, C#, Java, Perl, PHP, Pascal, Lisp, Mumps, Eiffel, Euphoria, and x86 Assembler, amongst others.
http://www./

Trita is a source code beautifier which learns your personal formatting style by examining examples of your code.
http://www./
支持:Java, Javscript, CSS, JSP, HTML, ASP, Lisp, Delphi, C#, C++, PHP, Perl, Python, and SQL.

原文出處:<a href="http://www./tech/indent_tools.html">http://www./tech/indent_tools.html</a>
<<返回

<<返回首頁(yè)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多