astyle格式化代码

转自<http://blog.chinaunix.net/uid-25885064-id-3363736.html>

astyle是一个开源工具,它可以方便的将代码格式化成自己想要的样式而不必人工修改。可以到网站(http://astyle.sourceforge.net/)上下载源码自己编译,也可以使用指令(apt-get install astyle)安装。


下面介绍一下astyle的简单使用。例如有以下的源码:

    #include <stdio.h>
    int main()
    {int i;printf("Just a test!\n");for(i=0;i<10;++i)printf("%d\n",i);}return 0;}

 然后在终端下输入一下指令:

  1. astyle test1.c

效果如下:

    #include <stdio.h>
    int main()
    {
        int i;
        printf("Just a test!\n");
        for(i=0; i<10; ++i) {
            printf("%d\n",i);
        }
        return 0;
    }

 

当然也可以加上一些选项,例如“astyle --style=bsd test1.c”,“ astyle --style=gnu test1.c”等等。

 

vim中的命令模式下,可以使用下面的某一种方式来格式化代码。

    %!astyle (simple case - astyle default mode is C/C++)

 或者

    %!astyle --mode=c --style=ansi -s2 (ansi C++ style, use two spaces per indent level)

或者

    %!astyle --mode=c --style=ansi -s2 (ansi C++ style, use two spaces per indent level)
     

为方便使用,可以把它写成一个脚本,代码如下:

    #! /bin/bash
    for f in $(find . -name '*.c' -or -name '*.cpp' -type f)
    do
        astyle $f
    done

 

在格式化完代码后,会生成一个后缀为orig的文件,将脚本更改如下:

    #! /bin/bash
    for f in $(find . -name '*.c' -or -name '*.cpp' -or -name '*.h' -type f)
    do
         astyle $f
    done
    # after formate the code,we need to rm '*.orig' files
    for f in $(find . -name '*.orig' -type f)
    do
         rm $f
    done

 

    astyle其使用说明如下:

    Usage : astyle [options] Source1.cpp Source2.cpp [...]
    astyle [options] < Original > Beautified
    When indenting a specific file, the resulting indented file RETAINS the
    original file-name. The original pre-indented file is renamed, with a
    suffix of ".orig" added to the original filename.
    Wildcards (* and ?) may be used in the filename.
    A 'recursive' option can process directories recursively.
    By default, astyle is set up to indent C/C++/C#/Java files, with four
    spaces per indent, a maximal indentation of 40 spaces inside continuous
    statements, a minimum indentation of eight spaces inside conditional
    statements, and NO formatting options.
    Option's Format:
    ----------------
    Long options (starting with '--') must be written one at a time.
    Short options (starting with '-') may be appended together.
    Thus, -bps4 is the same as -b -p -s4.
    Predefined Style Options:
    -------------------------
    --style=allman OR --style=ansi OR --style=bsd OR -A1
    Allman style formatting/indenting.
    Broken brackets.
    --style=java OR -A2
    Java style formatting/indenting.
    Attached brackets.
    --style=k&r OR --style=k/r OR -A3
    Kernighan & Ritchie style formatting/indenting.
    Linux brackets.
    --style=stroustrup OR -A4
    Stroustrup style formatting/indenting.
    Stroustrup brackets.
    --style=whitesmith OR -A5
    Whitesmith style formatting/indenting.
    Broken, indented brackets.
    Indented class blocks and switch blocks.
    --style=banner OR -A6
    Banner style formatting/indenting.
    Attached, indented brackets.
    Indented class blocks and switch blocks.
    --style=gnu OR -A7
    GNU style formatting/indenting.
    Broken brackets, indented blocks, indent is 2 spaces.
    --style=linux OR -A8
    GNU style formatting/indenting.
    Linux brackets, indent is 8 spaces.
    --style=horstmann OR -A9
    Horstmann style formatting/indenting.
    Horstmann brackets, indented switches, indent is 3 spaces.
    --style=1tbs OR --style=otbs OR -A10
    One True Brace Style formatting/indenting.
    Linux brackets, add brackets to all conditionals.
    Tab and Bracket Options:
    ------------------------
    default indent option
    If no indentation option is set,
    the default option of 4 spaces will be used.
    --indent=spaces=# OR -s#
    Indent using # spaces per indent. Not specifying #
    will result in a default of 4 spaces per indent.
    --indent=tab OR --indent=tab=# OR -t OR -t#
    Indent using tab characters, assuming that each
    tab is # spaces long. Not specifying # will result
    in a default assumption of 4 spaces per tab.
    --indent=force-tab=# OR -T#
    Indent using tab characters, assuming that each
    tab is # spaces long. Force tabs to be used in areas
    Astyle would prefer to use spaces.
    default brackets option
    If no brackets option is set,
    the brackets will not be changed.
    --brackets=break OR -b
    Break brackets from pre-block code (i.e. ANSI C/C++ style).
    --brackets=attach OR -a
    Attach brackets to pre-block code (i.e. Java/K&R style).
    --brackets=linux OR -l
    Break definition-block brackets and attach command-block
    brackets.
    --brackets=stroustrup OR -u
    Attach all brackets except function definition brackets.
    --brackets=horstmann OR -g
    Break brackets from pre-block code, but allow following
    run-in statements on the same line as an opening bracket.
    Indentation options:
    --------------------
    --indent-classes OR -C
    Indent 'class' blocks, so that the inner 'public:',
    'protected:' and 'private: headers are indented in
    relation to the class block.
    --indent-switches OR -S
    Indent 'switch' blocks, so that the inner 'case XXX:'
    headers are indented in relation to the switch block.
    --indent-cases OR -K
    Indent case blocks from the 'case XXX:' headers.
    Case statements not enclosed in blocks are NOT indented.
    --indent-brackets OR -B
    Add extra indentation to '{' and '}' block brackets.
    --indent-blocks OR -G
    Add extra indentation entire blocks (including brackets).
    --indent-namespaces OR -N
    Indent the contents of namespace blocks.
    --indent-labels OR -L
    Indent labels so that they appear one indent less than
    the current indentation level, rather than being
    flushed completely to the left (which is the default).
    --indent-preprocessor OR -w
    Indent multi-line #define statements.
    --indent-col1-comments OR -Y
    Indent line comments that start in column one.
    --max-instatement-indent=# OR -M#
    Indent a maximal # spaces in a continuous statement,
    relative to the previous line.
    --min-conditional-indent=# OR -m#
    Indent a minimal # spaces in a continuous conditional
    belonging to a conditional header.
    Padding options:
    --------------------
    --break-blocks OR -f
    Insert empty lines around unrelated blocks, labels, classes, ...
    --break-blocks=all OR -F
    Like --break-blocks, except also insert empty lines
    around closing headers (e.g. 'else', 'catch', ...).
    --pad-oper OR -p
    Insert space paddings around operators.
    --pad-paren OR -P
    Insert space padding around parenthesis on both the outside
    and the inside.
    --pad-paren-out OR -d
    Insert space padding around parenthesis on the outside only.
    --pad-paren-in OR -D
    Insert space padding around parenthesis on the inside only.
    --pad-header OR -H
    Insert space padding after paren headers (e.g. 'if', 'for'...).
    --unpad-paren OR -U
    Remove unnecessary space padding around parenthesis. This
    can be used in combination with the 'pad' options above.
    --delete-empty-lines OR -x
    Delete empty lines within a function or method.
    It will NOT delete lines added by the break-blocks options.
    --fill-empty-lines OR -E
    Fill empty lines with the white space of their
    previous lines.
    Formatting options:
    -------------------
    --break-closing-brackets OR -y
    Break brackets before closing headers (e.g. 'else', 'catch', ...).
    Use with --brackets=attach, --brackets=linux,
    or --brackets=stroustrup.
    --break-elseifs OR -e
    Break 'else if()' statements into two different lines.
    --add-brackets OR -j
    Add brackets to unbracketed one line conditional statements.
    --add-one-line-brackets OR -J
    Add one line brackets to unbracketed one line conditional
    statements.
    --keep-one-line-blocks OR -O
    Don't break blocks residing completely on one line.
    --keep-one-line-statements OR -o
    Don't break lines containing multiple statements into
    multiple single-statement lines.
    --convert-tabs OR -c
    Convert tabs to the appropriate number of spaces.
    --align-pointer=type OR -k1
    --align-pointer=middle OR -k2
    --align-pointer=name OR -k3
    Attach a pointer or reference operator (* or &) to either
    the operator type (left), middle, or operator name (right).
    --mode=c
    Indent a C or C++ source file (this is the default).
    --mode=java
    Indent a Java source file.
    --mode=cs
    Indent a C# source file.
    Other options:
    --------------
    --suffix=####
    Append the suffix #### instead of '.orig' to original filename.
    --suffix=none OR -n
    Do not retain a backup of the original file.
    --options=####
    Specify an options file #### to read and use.
    --options=none
    Disable the default options file.
    Only the command-line parameters will be used.
    --recursive OR -r OR -R
    Process subdirectories recursively.
    --exclude=####
    Specify a file or directory #### to be excluded from processing.
    --errors-to-stdout OR -X
    Print errors and help information to standard-output rather than
    to standard-error.
    --preserve-date OR -Z
    The date and time modified will not be changed in the formatted file.
    --verbose OR -v
    Verbose mode. Extra informational messages will be displayed.
    --formatted OR -Q
    Formatted display mode. Display only the files that have been formatted.
    --quiet OR -q
    Quiet mode. Suppress all output except error messages.
    --lineend=windows OR -z1
    --lineend=linux OR -z2
    --lineend=macold OR -z3
    Force use of the specified line end style. Valid options
    are windows (CRLF), linux (LF), and macold (CR).
    --version OR -V
    Print version number.
    --help OR -h OR -?
    Print this help message.
    Default options file:
    ---------------------
    Artistic Style looks for a default options file in the
    following order:
    1. The contents of the ARTISTIC_STYLE_OPTIONS environment
    variable if it exists.
    2. The file called .astylerc in the directory pointed to by the
    HOME environment variable ( i.e. $HOME/.astylerc ).
    3. The file called astylerc in the directory pointed to by the
    USERPROFILE environment variable ( i.e. %USERPROFILE%\astylerc ).
    If a default options file is found, the options in this file
    will be parsed BEFORE the command-line options.
    Long options within the default option file may be written without
    the preliminary '--'.

猜你喜欢

转载自gaylord.iteye.com/blog/2090616