日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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)載時請務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
http://www./tech/indent_tools.html

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

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

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

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

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

java ==> astyle Jalopy Jacobe ImportScrbber

php ==> phpCodeBeautifier

perl ==> perlTidy

python ==> Pydent

asp ==> VBSBeaut

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

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

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

幾種開放源代碼的代碼美化工具的介紹

工具名稱 適用語言 簡介 安裝/使用
indent c indent就是代碼美化工具的代名詞 indent是gcc附帶的一個標(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) 一個速度很快的C/C++/Java源代碼美化工具。
astyle比indent好在有很多成套的的風(fēng)格定義:ansi java linux...不必記住復(fù)雜的縮進(jìn)具體選項。
下載源代碼解包后,make, 生成astyle可執(zhí)行文件
astyle [options] < Original > Beautified
astyle [options] Foo.cpp Bar.cpp [...]
astyle --style=ansi *.cpp
我嘗試過用它來格式化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個工具:
pydent: 代碼縮進(jìn)工具
pystat: 代碼統(tǒng)計工具
下載源代碼解包后:
Run "python setup.py build"
Run "python setup.py install"
htmltidy html/xml HTML代碼的糾錯工具,可以幫助你的HTML代碼更好的符合W3C規(guī)范,現(xiàn)在被稱作tidy,因為它不僅只使用于HTML,也現(xiàn)在也適用于XHTML XML的格式化。

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

 

下載源代碼后 make 生成tidy可執(zhí)行文件:
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個空格縮進(jìn)
-m 覆蓋原文件
-u 強(qiáng)制所有HTML標(biāo)記大寫(這個可以不加)
-wrap 頁面代碼寬度大于132行強(qiáng)制換行
-f %f.err 將錯誤輸出到“相應(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的代碼美化工具
如果是專門針對JAVA代碼的格式化,Jacobe也是很好的選擇,它缺省包含了一個完全按照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/

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

Windows 2000下:用for命令實現(xiàn)目錄遍歷和文件過濾及命令執(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)面對上千個源文件時,能夠基于命令行的批量操作也是一個非常重要的功能。

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

越來越多的IDE開發(fā)環(huán)境都包含了代碼美化功能,但有些仍不如這些專門的工具強(qiáng)大,而且如果開發(fā)人員中有的用Eclipse,有的是JBuilder的忠實用戶,如何讓他們都能方便的遵守代碼規(guī)范呢?答案就是用全Jalopy針對這些主流IDE開發(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)出功能可以大大降低開發(fā)人員針對以上工具的學(xué)習(xí)時間,對于大部分開發(fā)者來說不需要詳細(xì)了解其中所有的選項配置,只要知道將標(biāo)準(zhǔn)配置導(dǎo)入就可以了。我常用的Jalopy配置文件

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

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


參考資料:

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嵌入式腳本語言

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

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

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

原因:

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

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

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

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

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

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

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

一個基于Java的HTML編輯器,內(nèi)嵌了C C++ Java JavaScript Perl等類C語言的代碼美化器: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>
<<返回

<<返回首頁

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多