C Java PHP Perl Python 的程序代碼美化工具
|
工具名稱 | 適用語言 | 簡介 | 安裝/使用 |
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
HTML XML XHTML CSS...
http://www.
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ī)范造成的。
比如
for (i = 1; i<a; i++)
需要改成
for (i = 1; i < a; i++)
^ ^ "<"前后需要加空格,否則HTMLTIDY會把<a當(dāng)成HTML標(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é)尾錯誤
原因:
為什么嵌入式代碼很難維護(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./
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>
<<返回
|