AStyle2.02在VS2008下的使用

      在共同探讨C++代码编写风格的帖子里,看到有个提到使用AStyle工具可以自动格式化代码风格,想过我用ctrl+K,ctrl+F的痛苦日子,我决定尝试一个这个软件。

      软件下载到了,但如何使用与配置,还得有人教。上网找了一下,找到http://blog.csdn.net/akof1314/article/details/6453666这篇文章写得不错,引用如下。


       AStyle(全称Artistic Style)是一个C、C++、C#和Java源代码缩进、格式化和美化工具。官方下载是命令行版程序,可以整合到开发IDE环境中去使用,甚至也可以整合到Notepad++之类的编辑器中。

官方地址:http://astyle.sourceforge.net/
本地下载:http://download.csdn.net/source/3323725

     在这里介绍AStyle整合到VS2008的方法,以及如何使用。
1.首先下载AStyle,将其bin文件夹下的"AStyle.exe"解压到"D:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools"文件夹下,具体路径根据所安装的VS路径进行更改,这是专门放置Visual Studio外部工具的文件夹;
2.打开Visual Studio 2008,在菜单栏→"工具"→"外部工具",点击"添加",在下面的编辑框里分别填入信息:

标题:AStyle格式化工具
命令:D:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/AStyle.exe
参数:--style=linux --suffix=none  -M -p -H -U -k1 $(ItemFileName)$(ItemExt)


linux风格,不保留.orig原始文件 
-M是缩进函数多个参数放在不同行的情况
-p是操作符左右留空格(++,--这样的就不留了);
-H是'if', 'for', 'while'等关键字右边留空格;
-U是移除括号里外的空格;
-k1是*和&在表示指针和引用类型时,和类型名称并紧,和变量名之间留空格。
后面二个就是VS的环境变量了,分别表示路径名、文件名和文件扩展名。合起来就是要格式化的文件的绝对路径名。


初始化目录:$(ItemDir)
√使用输出窗口

扫描二维码关注公众号,回复: 5471413 查看本文章


****参数说明:

(1) -f
在两行不相关的代码之间插入空行,如import和public class之间、public class和成员之间等;
(2) -p
在操作符两边插入空格,如=、+、-等。
如:int a=10*60;
处理后变成int a = 10 * 60;
(3) -P
在括号两边插入空格。另,-d只在括号外面插入空格,-D只在里面插入。
如:System.out.println(1);
处理后变成System.out.println( 1 );
(4) -U
移除括号两边不必要的空格。
如:System.out.println( 1 );
处理后变成System.out.println(1);
(5) -V
将Tab替换为空格。

(6)-N

本条主要针对namespaces,如果没有此参数,效果如下:

namespace foospace
{
class Foo
{
    public:
        Foo();
        virtual ~Foo();
};
}
有此参数就会变成这样:

namespace foospace
{
    class Foo
    {
        public:
            Foo();
            virtual ~Foo();
    };
}

(7) -n

不生成备份文件,即默认的 .orig文件。


3.就可以在"工具"菜单栏下看到" AStyle格式化工具"选项了,要格式化文档前,先保存文档再调用"AStyle格式化工具"选项,这时,会弹出"是否要重新加载它"的询问框,可在"工具"→"选项"→"环境"→"文档"→"自动加载更改"打钩。

4.要为"AStyle格式化工具"选项设置快捷键的话,在"工具"菜单上选择"选项",从"环境"页中选择"键盘",在"显示命令包含"列表中键入"工具",在"命令名"列表中滚动到相应的"外部命令 n"项。在这里我是第9个外部命令项,所以找到" 工具.外部命令9",在"按快捷键"处,键入要设置的快捷键,点击" 分配"。如下图所示:

AStyle参数如下:
①Ansi/Allman/Bsd风格(格式缩进从下一行开始括号)

int Foo(bool isBar)  
{  
    if (isBar)  
    {  
        bar();  
        return 1;  
    }  
    else  
        return 0;  
}  

②Java风格(格式缩进直接紧接后面括号)

int Foo(bool isBar) {  
    if (isBar) {  
        bar();  
        return 1;  
    } else  
        return 0;  
}  

③Kernighan_Ritchie风格(格式缩进使用Linux方式括号)

int Foo(bool isBar)   
{  
    if (isBar) {  
        bar();  
        return 1;  
    } else  
        return 0;  
}  

④Stroustrup风格(格式缩进使用stroustrup方式括号,缩进使用5个空格)

int Foo(bool isBar)   
{  
     if (isBar) {  
          bar();  
          return 1;  
     } else  
          return 0;  
}  

⑤Whitesmith风格(格式缩进使用下一行且缩进的括号)

int Foo(bool isBar)   
    {  
    if (isBar)  
        {  
        bar();  
        return 1;  
        }  
    else  
        return 0;  
    }  

⑥Banner风格(格式缩进使用直接紧接和缩进的括号)

int Foo(bool isBar) {  
    if (isBar) {  
        bar();  
        return 1;  
        }  
    else  
        return 0;  
    }  

⑦GNU风格(格式缩进使用下一行括号,语句块括号缩进两个空格)

int Foo(bool isBar)  
{  
  if (isBar)  
    {  
      bar();  
      return 1;  
    }  
  else  
    return 0;  
}  

⑧Linux风格(格式缩进使用Linux方式括号,语句块里面缩进8个空格)

int Foo(bool isBar)  
{  
        if (isBar) {  
                bar();  
                return 1;  
        } else  
                return 0;  
}  

⑨Horstmann风格(格式缩进使用horstman方式,括号紧接语句块)

int Foo(bool isBar)  
{  if (isBar)  
   {  bar();  
      return 1;  
   } else  
      return 0;  

⑩1tbs/otbs风格(格式缩进使用Linux方式括号,自动补全单行语句块括号)

int Foo(bool isBar)  
{  
    if (isBar) {  
        bar();  
        return 1;  
    } else {  
        return 0;  
    }  
}  

⑾pico风格

int Foo(bool isBar) 
{  if (isBar) 
   {  bar(); 
      return 1; }     
    else 
      return 0; } 

⑿lisp/python风格

int Foo(bool isBar) { 
    if (isBar) { 
        bar() 
        return 1; } 
    else 
        return 0; } 

也可以自定义格式化参数:

        ①制表和括号选项

参数命令 参数说明
default indent option 默认4个空格
--indent=spaces / --indent=spaces=# / -s# 指定#个空格,#在1~20之间
--indent=tab / --indent=tab=# / -t# 使用制表符,指定#个空格(1~20)
--indent=force-tab / --indent=force-tab=# / -T#  强制使用制表符,指定#个空格,#在1~20之间
default brackets option 默认不改变括号
--brackets=break / -b 括号改为下行( e.g. ANSI C / C++ style )
--brackets=attach / -a 括号在语句后( e.g. Java / K&R style )
--brackets=linux / -l 括号如linux风格
--brackets=stroustrup / -u 括号如stroustrup风格
--brackets=horstmann / -g 括号如horstmann 风格

      ②缩进选项

参数命令 参数说明
--indent-classes / -C 缩进class和struct块后面的public等
--indent-switches / -S 缩进switch块后面的case块
--indent-cases / -K 缩进case块后面的括号
--indent-brackets / -B 括号缩进
--indent-blocks / -G 括号缩进,函数缩进
--indent-namespaces / -N 命名空间后缩进
--indent-labels / -L 额外的标签缩进
--indent-preprocessor / -w 多行反斜杠定义缩进
--indent-col1-comments / -Y 允许注释跟随代码一起缩进
--max-instatement-indent=# / -M# 在连续声明中缩进最大#个空格(#小于80,默认为40)
--min-conditional-indent=# / -m# 在多行中设置最小缩进(#小于40,默认为当前两倍缩进)

      ③填充选项

参数命令 参数说明
--break-blocks / -f 在循环语句前后加空行
--break-blocks=all / -F 在循环语句前后、else、catch前加空行
--pad-oper / -p 运算符前后加空格
--pad-paren / -P  在括号内外都加上空格
--pad-paren-out / -d  在括号外加上空格
--pad-paren-in / -D  在括号内加上空格
--pad-header / -H  只在括弧头部添加一个空格
--unpad-paren / -U  移除括号内外的空格
--delete-empty-lines / -x 删除函数方法里多余的空行
--fill-empty-lines / -E  以空格对齐填充前一行空行

      ④格式化选项

参数命令 参数说明
--break-closing-brackets / -y  让else语句块下起一行
--break-elseifs / -e 让else if 语句拆开缩进
--add-brackets / -j 自动补充括号,默认在条件语句后紧接括号
--add-one-line-brackets / -J 自动补充括号,并且保持括号与语句在一行
--keep-one-line-statements / -o  维持一行里的多条语句不变
--keep-one-line-blocks / -O 不破坏一行里面的块
--convert-tabs / -c 转换TAB 为空格
--align-pointer=type / -k1
--align-pointer=middle / -k2 
--align-pointer=name / -k3
使指针或者引用符靠近变量类型
使指针或者引用符在变量类型和变量名称中间
使指针或者引用符靠近变量名称
--mode=c
--mode=cs
--mode=java
指定为C/C++代码格式化
指定为C#代码格式化
指定为JAVA 代码格式化
参数命令样式,请参考Artistic Style 说明文档: http://astyle.sourceforge.net/astyle.html

猜你喜欢

转载自blog.csdn.net/wqvbjhc/article/details/7363127