字號: 小 中 大 |
推薦給好友
上一篇 |
下一篇
C C++ Java Perl Python PHP的代碼美化工具使用
發布: 2007-6-06 17:12 |
作者: 網絡轉載 |
來源:
網絡 |
查看: 334次 | 進入軟件測試論壇討論
領測軟件測試網
關鍵詞: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 asp ==> VBSBeaut
程序員應該是善于溝通的,代碼美化的意義在于體現了開發者對他人的尊重,使用好的編碼約定可以使源代碼明白、易讀、準確,更加直觀且與其他語言約定保持一致,從而讓程序員之間更好的溝通。
有統計表明縮進良好的代碼可以提高代碼閱讀的效率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://www.phpedit.net/products/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 for /R %f in (*.asp) do vbsbeaut.exe -i -s4 %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 CheckStyle: Java代碼代碼規范(縮進,命名)檢查工具 http://checkstyle.sourceforge.net Eclipse plug-in: Eclipse Checkstyle Plug-in
安裝: 作為Eclipse的插件安裝都非常方便,下載后解包到Eclipse/plug-in/目錄下重啟Eclipse即可:
配置: Jalopy: Windows ==> Jalopy Preference 配置的導入/導出在General選單中, CheckStyle: Windows ==> perference ==> checkstyle 配置的導入/導出就在配置界面右側 標準配置的導入/導出功能可以大大降低開發人員針對以上工具的學習時間,對于大部分開發者來說不需要詳細了解其中所有的選項配置,只要知道將標準配置導入就可以了。我常用的Jalopy配置文件
使用: 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 Language http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
PHP Coding Standard http://alltasks.net/code/php_coding_standard.html
Perl Style http://www.perldoc.com/perl5.6.1/pod/perlstyle.html
pb: Perl/Javascript Beautifier http://www.arachnoid.com/lutusp/ftp/cgi/pb.txt
HTML XML XHTML CSS... http://www.w3c.org
C-C++ Beautifier HOW-TO: http://www.tldp.org/HOWTO/C-C++Beautifier-HOWTO/ VBScript代碼規范 http://msdn.microsoft.com/library/en-us/script56/html/vbsCodingConventions.asp
VBSBeaut代碼整理工具 http://www.daansystems.com/vbsbeaut/
Java組件之間的依賴度分析 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.htm http://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編輯工具Dreamweaver(≥4)和Frontpage(≥2000)中的格式化工具來實現。比如:對于FRONTPAGE從菜單的工具==>網頁選項==>HTML源代碼選單里選擇“使用下面的規則重新格式化源代碼”。
總之,使用HTML和程序在一起的嵌入式腳本語言本身就是一件非常不好的開發習慣。從長遠來開用XML/XSLT等技術實現數據/表現/邏輯的分離是一種更適合大規模開發的模式。
為了目前大量的ASP PHP JSP應用我還是通過Google上找到一些工具,相信HOMESITE等。其實前面提到的VBSBeautifier其實也是調用Perl 5.8在Windows上的
一個用于ASP的代碼美化工具:VbsBeaut http://www.daansystems.com/vbsbeaut/
一個用于ASP JSP PHP編輯并帶有代碼美化功能的工具:BPHTML http://www.bphtml.com/
一個基于Java的HTML編輯器,內嵌了C C++ Java JavaScript Perl等類C語言的代碼美化器:http://www.arachnoid.com/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.beautifier.org/
Trita is a source code beautifier which learns your personal formatting style by examining examples of your code. http://www.trita.com/ 支持:Java, Javscript, CSS, JSP, HTML, ASP, Lisp, Delphi, C#, C++, PHP, Perl, Python, and SQL.
| |
文章來源于領測軟件測試網 http://www.kjueaiud.com/
TAG:
java
的
工具
使用
perl
python
php
代碼
美化