原来一直没有找到对中文支持良好的免费格式化代码的工具.
今天看资料, 顺路找到一个好用的工具"Artistic Style"
当前版本: AStyle_2.01_windows.zip
最新版本的下载点: http://sourceforge.net/projects/astyle/
AStyle_2.01_windows的备份下载点: http://download.csdn.net/source/3041047
阅读第三方工程时, 先格式化成自己熟悉的编码风格,再进行阅读,修改。
使工作的心情变好,注意力集中, 提高了产能.
今天实验了在vs6IDE中集成AStyle格式化代码, 感觉非常好.
设置IDE
AStyle/bin下有个编译好的AStyle.exe, 拷贝到固定目录. 我是拷贝到c:/windows下.
添加格式化的工具按钮.
工具按钮的3个参数为:
C:/WINDOWS/AStyle.exe--style=ansi --indent=force-tab=4 -b -S -K -N -L -w -Y -m0 -f -p -U -x -j -k2 -n --options=none -z2 -M79 $(FilePath)$(FileDir)
如果没有格式化效果,解决方法如下:
把工具按钮拖到IDE工具条上,方便使用
把这个按钮用鼠标拖到IDE的工具栏空的地方
做了实验, 只要是人写的代码都能格式化的很好。
发现了一个缺点:
超长的行不能自动截断回行, 也有可能是astyle的帮助上忽略了这一点。不知道是哪个参数设置这个.
期待astyle新版本的出炉.
今天在研究一个图表demo工程,拿这个工程的主cpp做个代码格式化效果对照
格式化完成后:
这段代码的原文,也很规范。 但是经过比对, 可以看出,格式化之后的代码供阅读的清晰度大大提高了。
重要的一点是贴近了自己的编码风格, 使研读代码时,心情更好,效率更高.
<2011_0327>
用了一段时间, 发现有不符合实际的配置.
在代码中, 习惯于按照逻辑划分留出一些空行, 使程序易读. 文档化的注释业余上面的代码保持一定的行距.
但是 -x 选项把特意流出的空行给消掉了, 代码在垂直方向都挤在一起, 不符合实际应用.
新的配置去掉了'-x'选项
--style=ansi --indent=force-tab=4 -b -S -K -N -L -w -Y -m0 -f -p -U -j -k2 -n --options=none -z2 -M79 $(FilePath)
<2011_0727>
实验了Astyle on vs2005的配置:
AStyle C:\AStyle\bin\AStyle.exe --style=ansi --indent=force-tab=4 -b -S -K -N -L -w -Y -m0 -f -p -U -j -k2 -n --options=none -z2 -M79 $(ItemFileName)$(ItemExt) $(ItemDir)
感觉Astyle还是没有SourceFormatX 2.56好用, 只能格式化正常的代码.
<2011_0727>
看SourceFormatX的帖子,提到了GC工具, 试用了一下, 默认配置简单, 效果也不错, 就是格式化出来的代码怪模怪样的, 以后再配置.
http://sourceforge.net/projects/gcgreatcode/files/gcgreatcode/release%20140/GC_1_140.zip/download
GC C:\GC_1_140\GC\GC.exe -file-$(ItemPath) $(SolutionDir)
在sourceforge上找到了UniversalIndentGUI, 类似于sourceFormatX, 有UI, 有格式化的预览.
不好的地方是只能单个文件进行格式化, 也不能集成到VS IDE中.
找到了把UniversalIndentGUI集成到VS2005中的方法~: 配置效果可以看UniversalIndentGUI的预览, 一旦确定后,就可以生成doit.bat. 集成到vs2005中方便的使用~~
看来在VS IDE中添加扩展命令项方法都类似, 不同的地方是命令的参数不同.
<2011_0821>
找到了能保留Doxygen注释的一种代码格式化选项, 而且符合平时的编码风格
<2011_0904>
找到了选项, 使入参之间用空格分开
<2014-0601>
Astyle2.04的选项变了,试了试, 加的选项多了,反而不靠谱.
一旦代码格式化乱了,再也格式化不回来了. 除非用svn上的版本cleanup后替换回来.
采用最简单的默认规则, 凑合着看. 不追求完美的效果~
// vs2010 => Tools => options => Environment => Documents => select below options // * Detect when file is changed outside the environment // * Auto-load changes, if saved. AStyle format D:\AStyle.exe --style=ansi $(ItemFileName)$(ItemExt) $(ItemDir)