zoukankan      html  css  js  c++  java
  • 【转】VS2008中的自定义格式化代码

    astyle是一个我自己常用的开放源码工具。它可以方便的将程序代码格式化成自己想要的样式而不必人工修改。本来嘛,作为高等生物应该优先去做一些智慧的事情,而不是把时间消耗在机器可以完美完成的事情上。
    想要立刻开始?请先去主页http://sourceforge.net/projects/astyle下载最新版本。可以选择二进制版本,也可以下载源码自行编译。总之得到可执行文件后请将astyle放在Path(C:Program FilesMicrosoft Visual Studio 8Common7IDE)中,这样会方便很多。
    astyle是一个命令行工具,命令语法很简单:
              astyle [options] < original > Beautified
              astyle [options] Foo.cpp Bar.cpp  [...]
    例如:
              astyle --style=ansi foo.cpp
    上面的命令将美化foo.cpp文件,更改其风格为ANSI,并将原始文件备份到foo.cpp.orgin。所以,你可以安全的使用该软件而不必担心会将代码改得无法回头。
    具体的来说,astyle包含了以下几种预定义风格,只需在参数中简单指定即可使用:
      --style=ansi:ANSI 风格格式和缩进
    namespace foospace
    {
     int Foo()
     {
      if (isBar)
      {
       bar();
       return 1;
      }
      else
       return 0;
     }
    }

      --style=kr :Kernighan&Ritchie 风格格式和缩进
    namespace foospace {
     int Foo() {
      if (isBar) {
       bar();
       return 1;
      } else
       return 0;
     }
    }

      --style=linux :Linux 风格格式和缩进
    namespace foospace
    {
     int Foo()
     {
      if (isBar) {
       bar();
       return 1;
      } else
       return 0;
     }
    }

      --style=gnu :GNU 风格格式和缩进
    namespace foospace
    {
     int Foo()
     {
      if (isBar)
      {
       bar();
       return 1;
      }
      else
       return 0;
     }
    }

      --style=java :Java 风格格式和缩进
    class foospace {
     int Foo() {
      if (isBar) {
       bar();
       return 1;
      } else
       return 0;
     }
    }
     
    从这里开始介绍astyle的高级应用!这里要介绍的是两种应用情形,一是在Visual Studio中整合,二是批量处理。
    先看如何在Visual Studio中整合。看图说话!
    第一步:点击“工具”菜单
     
    第二步:点击“外部工具”
     
    第三步:配置并保存
     
    在对话框中点击“添加”,如图填入各项。其中参数填写 --style=ansi $(ItemFileName)$(ItemExt)
    可以勾选“使用输出窗口”,这样将不会显示黑色的命令窗口。相关信息都会显示在Visual Studio中。
    经过上面设置之后,只需点击该菜单项就可以将当前文档格式化成ansi风格。如果你想要其它风格,可以自行设置参数。
    值得注意的是在低版本的Visual Studio中,默认设置运行外部程序不会保存当前文档。这样的话如果在未保存的情况下运行该命令,未保存部分将会丢失。这个可以通过设置一个选项来解决。Visual Studio 6.0中:Options -> Editor -> Save Options -> Save before running tools 将该项勾选即可。我已经验证,在Visual Studio 2005中不用担心这类问题,可以放心使用。但是作为一个好习惯,我仍然建议你随时保存你的工作,尤其是做这种大幅度改动之前,甚至应该对源代码进行Check in操作。不知道Check in是什么?没关系,过几天我还会写一篇关于代码控制的文章,应该可以解决你的疑惑。
    1.常用功能
    (1) 单个文件--缺省美化
    astyle --style=ansi Form1.cs
    处理前的代码:
        private void Form1_Load(object sender, EventArgs e)
        {
            int s;
            for (int i=0;i<10;i++){
                for (int j=0;j<10; j++){
                    s = s+j+i;}
            }
        }
    处理后:
        private void Form1_Load(object sender, EventArgs e)
        {
            int s;
            for (int i=0;i<10;i++)
            {
                for (int j=0;j<10; j++)
                {
                    s = s+j+i;
                }
            }
        }
    (2) 单个文件--更改缩进2个空格
    astyle --style=ansi --indent=spaces=2 Form1.cs
    缺省缩进一个TAB,也可以显式说明使用Tab,如下:
    astyle --style=ansi --indent=tab Form1.cs
    (3) 处理多个文件--有限个
    astyle --style=ansi Form1.cs Form2.cs
    (4) 批量处理多个文件--无限个
    for /R . %f in (*.cs) do astyle --style=ansi "%f"
    说明:/R表明遍历一个目录树,后面紧跟的路径是根,缺省为当前目录。
    本例中,根为.表示当前目录,命令等价于:
    for /R %f in (*.cs) do astyle --style=ansi "%f"
    作用是从(目录树根)当前目录开始,查找所有java文件,包含子目录中的文件;然后交给astyle处理。
    当然,目录树根也可以使用绝对路径,下面的命令查找C盘所有的java文件并处理。
    for /R c: %f in (*.cs) do astyle --style=ansi "%f"
    2. 其他比较有用的开关:(均在--style之前写)
    (1) -f
    在两行不相关的代码之间插入空行,如import和public class之间、public class和成员之间等;
    (2) -p
    在操作符两边插入空格,如=、+、-等。
    如:int a=10*60;
    处理后变成int a = 10 * 60;
    (3) -P
    在括号两边插入空格。另,-d只在括号外面插入空格,-D只在里面插入。
    如:MessageBox.Show ("aaa");
    处理后变成MessageBox.Show ( "aaa" );
    (4) -U
    移除括号两边不必要的空格。
    如:MessageBox.Show ( "aaa" );
    处理后变成MessageBox.Show ("aaa");
    (5) -V
    将Tab替换为空格。
    下面再介绍第二项独门绝技:批量格式化!
    有时候你会有很多文件需要格式化成统一风格,难道一个个点击菜单?不!那样太累了。
    在Windows中,我们可以用命令行来解决问题。这里用到一个超级命令 for
    我来写个范例,大家就知道该怎么处理了。
          for /R %f in (*.cpp;*.c;*.h) do astyle --style=ansi "%f"
    该命令在当前目录中寻找文件名匹配模式 *.cpp;*.c;*.h 的所有文件(不同模式可用英文逗号隔开),并且对每个文件%f执行操作:
           astyle --style=ansi "%f"
     
    阅读(1963) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~
    评论热议
  • 相关阅读:
    EOJ月赛-OLED【二维前缀和】
    牛客多校3-Operating on a Graph【dsu】
    牛客多校1——1or2
    牛客多校1——Minimum-cost Flow
    牛客多校2-Cover the tree
    P4304 [TJOI2013]攻击装置 【网络流】
    yesky wine供应系统题解【二分图匹配】
    P3355 骑士共存问题【最小点覆盖】【网络流24题】
    事件委托
    Javascript9张思维导图
  • 原文地址:https://www.cnblogs.com/black/p/5171931.html
Copyright © 2011-2022 走看看