使用Astyle 帮助整理代码

Astyle是一款强大的代码格式化工具,支持C, C++, C#, Java等多种语言,能方便地在命令行或IDE中使用。它可以替换旧有的tab为空格,解决复杂语法的换行对齐问题,使代码更规范。本文介绍了如何将Astyle集成到Visual Studio和Source Insight中,以及一些常用的配置选项,如--style=ansi、--indent=spaces=4等,以提升代码的可读性和一致性。" 75195851,7053312,卡尔曼滤波公式推导:基于射影定理的解析,"['卡尔曼', '滤波理论', '状态空间模型', '线性随机系统']

使用Astyle 帮助整理代码

Astyle 的全称是Artistic Style,某种程度是目前最好用的代码整理工具,很多所谓的代码整理工具其实都是拿这个东东改进,开发的。其网址在,http://astyle.sourceforge.net/,最新版本是2.02,基本已经稳定,最近升级很少了。

Astyle好在那儿呢,一方面他支持大部分代码格式,一方面他支持C, C++, C#, and Java等语言,一方面他可以编译成LINUX版本,直接用命令行方式,一方面也可以和大部分IDE环境集成。所以其是编写代码处理的利器。

另外,虽然很多IDE环境有自己的一些代码格式化方法,比如visual studio下选择代码,快捷键Ctrl +KF(或者Alt +F8,Ctrl+E,F,Ctrl+E,D之类),就可以格式化整理代码。但是还是术有专攻,visual studio的代码格式化不会自动帮我将代码中间的旧有tab 替换成空格,在分析某些稍微复杂的语法(特别是模版)时,经常会出现换行对齐错误的问题,而且visual studio不同版本下,自己默认的某些对齐方式也有所不同。

所以我个人还是推荐定期用Astyle整理一下自己的代码,可以让自己的代码更加养眼。从网站下载回来的Astyle有Windows编译版本,也有源代码。在Linux下你可以自己编译。整日骇客帝国的兄弟也可以使用。

我们先介绍一下Astyle如何集成到IDE开放工具中,

如果单独是命令行,Astyle的使用比较简单,我一般都将选项放入到配置文件里面。当然如果你记忆力超凡,可以直接输入参数另说。

astyle --options=astyle.conf  文件名称   [生成文件名称]

如果你和我一样,虽然喜欢用visual studio基础环境,你可以打开菜单Tools\External Tools。打开外部工具设置界面。

你可以根据你自己的喜好一次格式化一个文件,配置如下:

Title:  AStyle File

【说明:任意输入】

Command: F:\MyTools\Astyle\bin\AStyle.exe

【说明:绝对路径】

Arguments: --options=F:\MyTools\Astyle\bin\astyle.conf $(ItemFileName)$(ItemExt) 

【说明:选项文件也用绝对路径,$(ItemFileName)$(ItemExt) 表示当前要处理的文件】

Initial directory: $(ItemDir)    表示处理文件的目录

【说明:在那个目录进行处理,一般选择$(ItemDir)】

Use Output window: 勾选

【说明:将astyle的输出放到output窗口】

也可以一次将Porject下所有的文件全部格式化了。配置如下:

Title:  AStyle Project

【说明:任意输入】

Command: F:\MyTools\Astyle\bin\AStyle.exe

【说明:绝对路径】

Arguments: --options=F:\MyTools\Astyle\bin\astyle.conf *.h *.cpp *.hpp *.c

【说明:选项文件也用绝对路径,一次将所有的文件都进行处理掉】

Initial directory: $(ItemDir)    表示处理文件的目录

【说明:在那个目录进行处理,一般选择$(ItemDir)】

 

 

Source insight的配置也大同小异。主要就是run这个地方配置成

F:\MyTools\Astyle\bin\AStyle.exe --options=F:\MyTools\Astyle\bin\astyle.conf %f 

其中%f表示当前正在处理的文件。

 

下面简单介绍一下我使用的选项配置说明,,大家有兴趣自己阅读,说明文档http://astyle.sourceforge.net/astyle.html,也很简短的说。

#指定文件处理模式,C/C++模式,其他选择还有cs,java

--mode=c

 

#ANSI标准的文件格式,就是{另启一行,}另启一行的那种,其他选择很多,不介绍了

--style=ansi

 

#缩进采用4个空格

--indent=spaces=4

 

#对于单行的语句增加括号

#Add brackets to unbracketed one line conditional statements  (e.g. 'if', 'for', 'while'...).

--add-brackets

 

#强制转换TAB为空格

--convert-tabs

 

#将preprocessor (#define) 这类预定的语句,如果有多行时前面填充对齐,(是对单语句(多行)进行填充呀)

--indent-preprocessor

 

#Attach a pointer or reference operator (* or &) to either the variable type (left) or variable name (right), or place it between the type and name.

#*,&这类字符靠近类型

#--align-pointer=type

#*,&这类字符靠近变量名字,目前选择这个,

--align-pointer=name

 

#在操作符号两边增加空格字符 ==

--pad-oper

 

#在几个关键字后面增加空格

#insert space padding after paren headers only (e.g. 'if', 'for', 'while'...).

--pad-header

 

#在if,for,while等代码段前后增加空行,这个其实挺好,但如果你不喜欢,可以关闭

#Pad empty lines around header blocks (e.g. 'if', 'for', 'while'...).

--break-blocks 

 

 

#去掉括号两边多余的空格,

#暂时放弃,不是特别喜欢这个

#Remove extra space padding around parenthesis on the inside and outside.

#--unpad-paren

 

#备份文件的后缀,默认是.orig,=none表示不进行备份,

#放弃备份文件,以Astyle的版本,目前做这个没有什么差别。而且备份文件会影响你的代码

--suffix=none

 

#行结束用什么文件格式,UNIX的还是Windows的,

#--lineend=windows

#后台开放统一用UNIX的方式

--lineend=linux

 

#switch case的代码也按照标准缩进方式缩进

--indent-switches

 

#如果函数开始后面({后面)第一行是注释,也进行缩进

--indent-col1-comments

 

#namespace class内部的public,等我没有选择缩进

#--indent-namespaces

#--indent-classes

 

 

#多行条件语句如何进行缩进,=0表示和(对齐,=1表示缩进一次,=2表示缩进两次,=3缩进一个半

#MS visual studio的默认格式化是缩进一个,

--min-conditional-indent=1

 

 

#最大的缩进对齐长度,默认40,最大120,超过这个长度的多行()内语句不进行缩进,考虑到现在语句都较长

--max-instatement-indent=80

 

 

 

建议一个项目组内部统一,这样至少代码的整洁问题就不再麻烦了。 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值