`

【转贴】C Java PHP Perl Python的程序代码美化工具使用

 
阅读更多
导读:

  程序员应该是善于沟通的,代码美化的意义在于体现了开发者对他人的尊重,使用好的编码约定可以使源代码明白、易读、准确,更加直观且与其他语言约定保持一致,从而让程序员之间更好的沟通。

  有统计表明缩进良好的代码可以提高代码阅读的效率40%以上,而另一个统计是软件开发工作的70%以上是维护前人的代码,因此对以往代码的格式美化往往也是系统重构(refactoring)的第一步。代码美化工具(pretty print program)的使用可以使基本的代码缩进规范成为一种更容易执行的制度。

  另外,如果作为部门代码规范的制订者也应该了解程序员不是机器,写代码时完全不犯代码缩进错误几乎是不可能的。基于工具的批量格式化和整理工具方便的配置导入/导出机制制定统一的缩进规范才是一个真正有可操作性的制度。

  几种开放源代码的代码美化工具的介绍

  工具名称 适用语言 简介 安装/使用

  c indent就是代码美化工具的代名词 indent是gcc附带的一个标准工具,

  indent [options] [input-files]

  indent [options] [single-input-file] [-o output-file]

  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 <br><br>  c c++ java (php) 一个速度很快的C/C++/Java源代码美化工具。 <br><br>  astyle比indent好在有很多成套的的风格定义:ansi java linux...不必记住复杂的缩进具体选项。 <br><br>  下载源代码解包后,make, 生成astyle可执行文件 <br><br>  astyle [options] <original>Beautified <br><br>  astyle [options] Foo.cpp Bar.cpp [...] <br><br>  astyle --style=ansi *.cpp <br><br>  我尝试过用它来格式化PHP程序也很有效(当然是不合HTML代码混在一起的纯PHP代码)。 <br><br>  java 功能强大的JAVA代码格式化工具,除了标准界面外,命令行工具,还可作为ANT JBUILDER ECLIPSE JDEVELOPER等工具的插件使用,并提供API 从http://prdownloads.sourceforge.net/jalopy/下载 <br><br>  并参考相应安装文档 <br><br>  python pythius包含了2个工具: <br><br>  pydent: 代码缩进工具 <br><br>  pystat: 代码统计工具 <br><br>  下载源代码解包后: <br><br>  Run "python setup.py build" <br><br>  Run "python setup.py install" <br><br>  html/xml HTML代码的纠错工具,可以帮助你的HTML代码更好的符合W3C规范,现在被称作tidy,因为它不仅只使用于HTML,也现在也适用于XHTML XML的格式化。 <br><br>  但JSP不适合ASP PHP JSP等嵌入式脚本的代码美化 <br><br>   <br><br>  下载源代码后 make 生成tidy可执行文件: <br><br>  tidy file1 file2 ... <br><br>  注意:对于含有中文的页面要使用 -raw选项 <br><br>  tidy.exe -raw -imuq -wrap 132 -f %f.err %f <br><br>  选项说明: <br><br>  -raw: 不修改中文字符 (output values above 127 without conversion to entities) <br><br>  -i indend 缺省HTML按2个空格缩进 <br><br>  -m 覆盖原文件 <br><br>  -u 强制所有HTML标记大写(这个可以不加) <br><br>  -wrap 页面代码宽度大于132行强制换行 <br><br>  -f %f.err 将错误输出到“相应文件名.err”文件中 <br><br>  HTMLTIDY支持XML的格式美化: <br><br>  tidy -xml -imq web.xml <br><br>  tidy -xml -imq build.xml <br><br>  其他工具介绍: <br><br>  <strong>php代码美化工具</strong> <br><br>  phpCB: php code beautifier 有命令行版本,也有图形界面的代码查看器。 <br><br>  http://www.phpedit.net/products/phpCodeBeautifier/ <br><br>  <strong>Java的代码美化工具</strong> <br><br>  如果是专门针对JAVA代码的格式化,Jacobe也是很好的选择,它缺省包含了一个完全按照SUN的代码规范的格式化配置文件。而且甚至有JIndent这种商业化代码整理工具以获得更好的效果。 <br><br>  ImportScrbber: java import声明的整理工具,能够将import java.util.*这样的引用变成单条的引用,并且帮助删除已经不再需要的引用。 http://importscrubber.sourceforge.net/ <br><br>  介绍这些工具的都可以在这里可以找到:Jacobe Jindent Jxbeautifier... <br><br>  http://directory.google.com/Top/Computers/Programming/Languages/Java/Development_Tools/Code_Beautifiers/ <br><br>  <strong>使用命令行工具实现代码的批量修改</strong> <br><br>  Windows 2000下:用for命令实现目录遍历和文件过滤及命令执行,例如: <br><br>  for /R %f in (*.java) do astyle --style=java %f <br><br>  for /R %f in (*.htm*) do tidy -raw -imq -wrap 132 -f %f.err %f <br><br>  for /R %f in (*.asp) do vbsbeaut.exe -i -s4 %f <br><br>  Linux:用find -exec 遍历执行,例如: <br><br>  find ./ -name *.java -exec astyle --style=ansi {} /; <br><br>  因此不要被很多商业化软件漂亮的图形界面所迷惑,当面对上千个源文件时,能够基于命令行的批量操作也是一个非常重要的功能。 <br><br>  <strong>针对</strong>Eclipse<strong>等IDE开发环境的工具插件使用</strong> <br><br>  越来越多的IDE开发环境都包含了代码美化功能,但有些仍不如这些专门的工具强大,而且如果开发人员中有的用Eclipse,有的是JBuilder的忠实用户,如何让他们都能方便的遵守代码规范呢?答案就是用全Jalopy针对这些主流IDE开发环境的插件。 <br><br>  Jalopy: Java代码美化工具: http://jalopy.sourceforge.net/ <br><br>  Eclipse plug-in: http://jalopy.sourceforge.net/plugin-eclipse.html <br><br>  CheckStyle: Java代码代码规范(缩进,命名)检查工具 http://checkstyle.sourceforge.net <br><br>  Eclipse plug-in: Eclipse Checkstyle Plug-in <br><br>  安装: <br><br>  作为Eclipse的插件安装都非常方便,下载后解包到Eclipse/plug-in/目录下重启Eclipse即可: <br><br>  配置: <br><br>  Jalopy: Windows ==&gt; Jalopy Preference 配置的导入/导出在General选单中, <br><br>  CheckStyle: Windows ==&gt; perference ==&gt; checkstyle 配置的导入/导出就在配置界面右侧 <br><br>  标准配置的导入/导出功能可以大大降低开发人员针对以上工具的学习时间,对于大部分开发者来说不需要详细了解其中所有的选项配置,只要知道将标准配置导入就可以了。我常用的Jalopy配置文件 <br><br>  使用: <br><br>  Jalopy: 在代码编辑界面点右键的选单中除了原有的Format选项外,还多出了Format with Jalopy选项,而Eclipse自身带有的Source=&gt;Orgenize Imports也是能够达到Imports Srubber同样的功效。 <br><br>  CheckStyle是一个非常复杂的代码风格检查过程:包括缩进,命名规范等,因此缺省是Disable的,启动针对一个项目的CheckStyle需要在点:项目的properties==&gt;CheckStyle==&gt;Enable。 <br><br>  而且以上这些工具都包含了针对ant的扩展,可以方便的加入到ant脚本中进行自动的代码整理/统计。 <br><br>  参考资料: <br><br>  GNU Coding Standards <br><br>  http://www.gnu.org/prep/standards_toc.html <br><br>  Code Conventions for the Java(TM) Programming Languagehttp://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html <br><br>  PHP Coding Standard <br><br>  http://alltasks.net/code/php_coding_standard.html <br><br>  pb: Perl/Javascript Beautifier <br><br>  http://www.arachnoid.com/lutusp/ftp/cgi/pb.txt <br><br>  HTML XML XHTML CSS... <br><br>  http://www.w3c.org  <br><br>  C-C++ Beautifier HOW-TO: <br><br>  http://www.tldp.org/HOWTO/C-C++Beautifier-HOWTO/ <br><br>  VBSBeaut代码整理工具 <br><br>  http://www.daansystems.com/vbsbeaut/ <br><br>  Java组件之间的依赖度分析 <br><br>  http://www.clarkware.com/software/JDepend.html <br><br>  <strong>附:为什么HTMLTIDY的不适合重新格式化JSP PHP ASP等HTML嵌入式脚本语言</strong> <br><br>  而有些无法解析的错误其实是代码不规范造成的。 <br><br>  JAVASCRIPT中的"<br>  for (i = 1; i<a i><br>  需要改成 <br><br>  for (i = 1; i </a><a i><br>  ^ ^ "<br>  HTML属性中包含JSP标记: 对于一般的JSP属性输出TIDY是可以认出来的 <br><br>  比如: <input size="9" name="alias" maxlength="20" value="&lt;%=infoForm.getAlias()%&gt;" type="text"><br><br>  但像这样的代码: <br><br>  <img border="0" src="/image/upload/content/&lt;%=infoForm.getId()%"> width=120&gt; <br><br>  由于属性的开头不是<br>  HTMLTIDY缺省是将代码完全补齐的,而实际上很多HTML代码是在被包含文件中。而且HTMLTIDY对中文编码得识别还有一定问题(目前只支持BIG5) <br><br>  原因: <br><br>  为什么嵌入式代码很难维护?毕竟针对不规范的HTML语法检查器要比一个语言的解析器要复杂的多。举例来说,比如针对这样的代码: <br><br>   <br><br>   <br><br>  这样形式的代码,美化工具必须同时懂得HTML语法和PHP语法才行,所以大部分格式工具都是针对一种语言,或者针对嵌入脚本的程序部分的格式化,或者只对针对纯HTML格式化。只有少数Virsual Age, Forte等大型开发工具里包含了JSP的代码美化,另外就是SLICKEDIT这种大型商业文本编辑器等。 <br><br>  解决:对于包含程序的JSP ASP等文件的HTML部分的格式美化最好还是使用专门的HTML编辑工具Dreamweaver(≥4)和Frontpage(≥2000)中的格式化工具来实现。比如:对于FRONTPAGE从菜单的工具==&gt;网页选项==&gt;HTML源代码选单里选择“使用下面的规则重新格式化源代码”。 <br><br>  总之,使用HTML和程序在一起的嵌入式脚本语言本身就是一件非常不好的开发习惯。从长远来开用XML/XSLT等技术实现数据/表现/逻辑的分离是一种更适合大规模开发的模式。 <br><br>  为了目前大量的ASP PHP JSP应用我还是通过Google上找到一些工具,相信HOMESITE等。其实前面提到的VBSBeautifier其实也是调用Perl5.8在Windows上的 <br><br>  一个用于ASP的代码美化工具:VbsBeaut <br><br>  http://www.daansystems.com/vbsbeaut/ <br><br>  一个基于Java的HTML编辑器,内嵌了C C++ Java JavaScript Perl等类C语言的代码美化器:http://www.arachnoid.com/arachnophilia/index.htmlBeautifier 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. <br><br>  http://www.beautifier.org/ <br><br>  Trita is a source code beautifier which learns your personal formatting style by examining examples of your code. <br><br>  http://www.trita.com/ <br><br>  支持:Java, Javscript, CSS, JSP, HTML, ASP, Lisp, Delphi, C#, C++, PHP, Perl, Python, and SQL. <br><br><br><br>本文转自 <br><br></a><a href="http://www.chedong.com/tech/indent_tools.html">http://www.chedong.com/tech/indent_tools.html</a> <br></original></infile>
分享到:
评论

相关推荐

    使用Struts2开发Java Web应用程序(转贴)

    使用Struts2开发Java Web应用程序(转贴)

    android和java面试大全集

    Java面试宝典2011版-1C,Java基础部分.doc 三大框架面试题.zip 技术面试题.zip Android笔试题库 C语言终极面试宝典.doc Java笔试题目汇总.pdf Java面试宝典_2010.doc 面试全攻略100题.doc 智力题和答案.doc C语言面试...

    Html处理软件、转贴工具(源代码)

    去除Html中的干扰码等(样例中以轻之国度的干扰码为例) 配置文件语法: 方法类型(整数) 最大匹配长度(整数) 字符串1(删除开头) 字符串2(删除结尾) 方法类型: 1:删除单行 2:删除行与行之间的

    东度极品论坛转贴工具

    东度极品论坛转贴工具东度极品论坛转贴工具

    BFC UBB转贴器

    这是一个类似论坛转贴工具的小程序,可以将剪贴板中的HTML代码转换为论坛支持的UBB代码。 由于现在流行的转贴工具都是基于浏览器的,转换速度比较慢,还得打开浏览器才能使用(同时受到浏览器版本限制)。 &lt;br...

    JAVA经典素材100

    java实用程序设计100例原代码和素材下载,象征性的1分!大家支持下哈! 转贴的资源

    论坛专用屏蔽干扰码转贴工具

    论坛专用屏蔽干扰码转贴工具

    flex和java进行CRUD操作(转贴)

    博文链接:https://tj007-bo.iteye.com/blog/128169

    脚本之家贴图转换+转贴工具用到的js代码超级推荐

    脚本之家贴图转换+转贴工具用到的js代码超级推荐

    Convert X 转贴工具插件 for Discuz!7.0.rar

    Convert X 转贴工具 插件for Discuz!7.0

    repostedwin:Python Web 应用程序工作

    转贴win Python Web 应用程序工作

    转帖工具ConvertX fordiscuz7.1/7.2 修改增强版.rar

    1.修改自Convert X转帖工具 2.新增批量替换关键词(原来是单个词语替换,可以利用这个功能删除一些网站的防转帖代码) 3.批量随机新增文字(新增内容可自定义,从而实现伪原创) 4.cookie记录替换和新增关键词(避免每次...

    Java 学习资料 ppt

    Java 学习资料 ppt 第一次编写Java程序的步骤(假设使用Windoz)转贴 发布时间:2006.04.30 07:54 来源:月光软件站 作者: 对《第一次编写Java程序的步骤(假设使用Windoz)》的说明:

    论坛转贴工具

    论坛转贴工具提供常的转换追加,转换覆盖,预览贴子,分析超链接,屏蔽文字,图片,超链接,提供查找,替换等功能,HTML版,支持IE浏览器,360浏览器,搜狗浏览器,火狐浏览器,谷歌chrome浏览器等主流浏览器,无需...

    论坛转贴源代码

    论坛转贴工具提供常的转换追加,转换覆盖,预览贴子,分析超链接,屏蔽文字,图片,超链接,提供查找,替换等功能,HTML版! 支持IE浏览器,360浏览器,搜狗浏览器,火狐浏览器,谷歌chrome浏览器等主流浏览器,无需...

    动易系统的论坛转贴工具

    是在站长站下载频道看见的,发现这个小东西很好玩!至少能方便更多访客转载网站内容转发到别的论坛上,给网站增加反向连接

    PIC单片机C语言使用

    PIC16F877的单片机C语言使用例子,参考价值好(转贴)

Global site tag (gtag.js) - Google Analytics