查看原文
其他

一键自动格式化你的代码

wcc149 电子电路开发学习 2021-01-31

AStyle简介

AStyle,即Artistic Style,是一个可用于C, C++, C++/CLI, Objective‑C, C# 和Java编程语言格式化和美化的工具。我们在使用编辑器的缩进(TAB)功能时,由于不同编辑器的差别,有的插入的是制表符,有的是2个空格,有的是4个空格。这样如果别人用另一个编辑器来阅读程序时,可能会由于缩进的不同,导致阅读效果一团糟。为了解决这个问题,使用C++开发了一个插件,它可以自动重新缩进,并手动指定空格的数量,自动格式化源文件。它是可以通过命令行使用,也可以作为插件,在其他IDE中使用。

基本使用

下载完成后,解压,然后在环境变量PATH,添加AStyle.exe的路径。

基本命令行格式:

  1. astyle [参数] [文件路径]

如在我的电脑E盘下有一个文件main.c,现在是这样的,可以看出很不规范,多个语句写在同一行,没有合理缩进,运算符两边没有空格等等。

  1. #include "sys.h"

  2. #include "delay.h"

  3. #include "usart.h"

  4. #include "led.h"


  5. int main(void)

  6. {

  7. delay_init();       //延时函数初始化

  8. LED_Init();         //初始化与LED连接的硬件接口

  9. while(1)

  10. {

  11. LED0=0;LED1=1;

  12. delay_ms(300);  //延时300ms

  13. LED0= 1;LED1 =0;

  14. delay_ms(300);  //延时300ms

  15. }

  16. }

打开CMD命令窗口,输入以下命令:

  1. AStyle --style=ansi E:\main.c

回车执行命令,然后再打开main.c查看,变成了这样:

  1. #include "sys.h"

  2. #include "delay.h"

  3. #include "usart.h"

  4. #include "led.h"


  5. int main(void)

  6. {

  7.    delay_init();       //延时函数初始化

  8.    LED_Init();         //初始化与LED连接的硬件接口

  9.    while(1)

  10.    {

  11.        LED0 = 0;

  12.        LED1 = 1;

  13.        delay_ms(300);  //延时300ms

  14.        LED0 = 1;

  15.        LED1 = 0;

  16.        delay_ms(300);  //延时300ms

  17.    }

  18. }

是不是看着很舒服,合理缩进、美观、可读性高,是规范的代码风格,当然这只是AStyle一个很基础的功能,其实它支持很多参数,还可以对整个目录及子目录下的源文件进行格式化操作。

Keil开发环境添加AStyle插件

很多IDE都有自动格式化代码功能,而单片机开发经常使用的Keil系列软件居然没有这个功能,这怎么能忍?还好Keil有自定义插件的功能,可以添加AStyle自动格式化的工具,来格式化我们不规范的代码。

1.打开Keil软件

选择Tools->Customize Tools Menu,自定义外部工具菜单。

2.新建工具

点击新建按钮,输入工具名称: AstyleCurrentFile,Command命令选项,指定AStyle.exe的路径,Argument选项输入以下参数,注意大小写,建议复制粘贴,不会出错。

  1. -pnUk1s4 --style=ansi !E

这些命令参数的含义,在下面有详细介绍,其中 !E表示当前文件,这个参数在Keil软件的使用手册里可以查到。点击OK保存。

3.试试格式化效果

好了,现在来试一下一键自动格式化工具吧,无论你的代码写的有多乱,只要点击Tools->Astyle Current File工具,你就会发现代码一下子变得美观了许多,就像这样。

4.定义一个快捷键

为了更方便,我们还可以自定义一个快捷键,来执行这个命令。点击工具栏最右边的配置图标,切换到Shortcut Keys选项,选择Tools:Astyle Current File,点击Create Shortcut创建新的快捷键,在弹出的窗口按下你要设置的快捷键,然后保存退出就可以了,下次需要使用的时候,只要按下相对应的快捷键,就可以一键将当前文件格式化。

其实,我还是觉得鼠标操作更方便。

AStyle插件参数详解

AStyle插件的参数实在太多了,这里只介绍我们上面那个命令中用到的参数。

  1. -pnUk1s4 !E --style=ansi

命令参数详解:

更多、更详细的参数说明可以查看自带的帮助文档。

BAT命令格式化目录下的源文件

下面这个bat命令可以格式化当前目录及子目录下的所有源文件。

新建bat文件,以记事本打开,输入以下命令:

  1. for /R %%f in (*.c;*.h) do AStyle.exe --style=allman --indent=spaces=4 --pad-oper --pad-header --unpad-paren --suffix=none --align-pointer=name --lineend=windows --convert-tabs --verbose %%f

  2. pause

各种代码风格的比较

这里只介绍几种常见的代码风格,更多的代码风格参考帮助文档->Brace Style Options。

allman风格

  1. int Foo(bool isBar)

  2. {

  3.    if (isBar)

  4.    {

  5.        bar();

  6.        return 1;

  7.    }

  8.    else

  9.        return 0;

  10. }

java风格

  1. int Foo(bool isBar) {

  2.    if (isBar) {

  3.        bar();

  4.        return 1;

  5.    } else

  6.        return 0;

  7. }

kr 风格

  1. int Foo(bool isBar)

  2. {

  3.    if (isBar) {

  4.        bar();

  5.        return 1;

  6.    } else

  7.        return 0;

  8. }

gnu 风格

  1. int Foo(bool isBar)

  2. {

  3.    if (isBar)

  4.        {

  5.            bar();

  6.            return 1;

  7.        }

  8.    else

  9.        return 0;

  10. }

linux 风格

  1. int Foo(bool isBar)

  2. {

  3.        if (isFoo) {

  4.                bar();

  5.                return 1;

  6.        } else

  7.                return 0;

  8. }

google 风格

  1. int Foo(bool isBar) {

  2.    if (isBar) {

  3.        bar();

  4.        return 1;

  5.    } else

  6.        return 0;

  7. }

参考资料

  • 官方网址:http://astyle.sourceforge.net/

  • 帮助文档:http://astyle.sourceforge.net/astyle.html

  • 版本介绍:http://astyle.sourceforge.net/install.html

插件的下载

微信公众号后台回复【AStyle】可获得下载链接,建议长按复制过去,这样不会出错,复制链接到浏览器即可下载。


Jlink使用技巧系列文章:


欢迎大家关注我的个人博客:

http://www.wangchaochao.top/

或微信扫码关注我的公众号:mcu149


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存