前些天GOOGLE后找到了不少格式工具,
由于很多的工具,比如SourceStyler C++和SourceFormatX C++等等都不具备详细的配置,不怎么更新,并且需要破解的麻烦。
当然做基本的格式化是没啥问题的,可惜本人要求一直很高,当看到GC_1_140的某个实现版本C++ Code Export 1.0.0对代码的格式化程度时候欣喜若狂,
下面是格式化后的代码:
/** * CLASS: CS320ToolsCFG * METHOD: CheckAPNSList * DESCRIPTION: TODO * @param filename TODO * @param ret TODO * @param cap TODO * @return TODO */ int CS320ToolsCFG::CheckAPNSList(char *filename, char *ret, int cap) { /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ char buff[100]; char newBuff[100]; int count = m_APNNameControl.GetItemCount(); /* PSN */ bool ret = false; CString tmp; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ if (count < 1) { /* * ShowOperaterInfo("Parameter:"); */ UpdateStatusBar("No APN insert",1); /* Dirty=1 */ return ret; } for (int i = count - 1; i >= 0; i--) { /* * CString tmp=m_APNNameControl.GetItemText(i,1); * PSN */ m_APNNameControl.GetItemText(i,1,buff,100); /* PSN */ if (strlen(buff) != PSN_LENGTH) { m_APNNameControl.SetItemText(i,3,"Skiped"); m_APNNameControl.SetItemText(i,4,"Length Error"); continue; } for (int j = i - 1; j >= 0; j--) { m_APNNameControl.GetItemText(j,1,newBuff,100); /* PSN */ if (0 == strcmp(newBuff,buff)) { m_APNNameControl.SetItemText(i,3,"Skiped"); tmp.Format("Duplicate with PSN[%d]",j + 1); m_APNNameControl.SetItemText(i,4,tmp); break; } } if (j < 0) { m_APNNameControl.SetItemText(i,3,"N/A"); /* clear old Result */ m_APNNameControl.SetItemText(i,4,""); ret = true; } } return ret; }
注意在定义前后加了
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
并将所有注释统一转换为
/*
* CString tmp=m_APNNameControl.GetItemText(i,1);
* PSN
*/
当然C++ Code Export 1.0.0问题很多。。。并且只看到一个版本,万一格式化出问题了,也并不知道,这就麻烦了。。。
后来又找到了UniversalIndentGUI,有win32图形化的配置界面,但是UniversalIndentGUI_win32有个最大的问题是竟然不识别文档的编码类型,好像没看对ANSI文本格式的支持!!!晕死。。。
后来终于找到了
https://sourceforge.net/projects/uncrustify
uncrustify-0.53-win32,可惜配置文件太夸张了!!!没法一蹴而就,只好等来日再做修改了。。。
今天附上我的配置文件下载地址(含配置文件和可执行程序,最新版请到sourceforge下载)
如何嵌入到souce insight:
(配置文件和可执行程序都放在E:\Tools\formater\uncrustify\my-favorite)
运行souce insight,打开菜单Options-->Custom Commands:
打开窗口
在点击Add 为此命令命名(可为任意名字,这里命名为 formate-use-uncrustify), 在Run处添加:
E:/Tools/formater/uncrustify/my-favorite/Uncrustify.exe -c E:/Tools/formater/uncrustify/my-favorite/amxmodx.cfg --no-backup -f %f -o%f
注意选择Share Files 和 File,then Line.
将自定义命令加入自定义菜单的方法:
现在用SI打开新的代码源文件,如 C, C++, C#, ObjectiveC, D, Java, Pawn and VALA等,然后运行此菜单的名即可格式化,格式化后的效果:
是不是很不错?
enjoy !