一键自动格式化你的代码

AStyle简介

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

基本使用

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

基本命令行格式:

astyle [参数] [文件路径]

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

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"

int main(void)
{
delay_init();       //延时函数初始化
LED_Init();         //初始化与LED连接的硬件接口
while(1)
{
LED0=0;LED1=1;
delay_ms(300);  //延时300ms
LED0= 1;LED1 =0;
delay_ms(300);  //延时300ms
}
}

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

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

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

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"

int main(void)
{
    delay_init();       //延时函数初始化
    LED_Init();         //初始化与LED连接的硬件接口
    while(1)
    {
        LED0 = 0;
        LED1 = 1;
        delay_ms(300);  //延时300ms
        LED0 = 1;
        LED1 = 0;
        delay_ms(300);  //延时300ms
    }
}

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

Keil开发环境添加AStyle插件

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

1.打开Keil软件

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

2.新建工具

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

-pnUk1s4 --style=ansi !E 

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

3.试试格式化效果

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

4.定义一个快捷键

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

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

AStyle插件参数详解

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

-pnUk1s4 !E --style=ansi

命令参数详解:

参数名 大小写 说明
p 小写 只在操作符两边加空格
P 大写 在操作符和括号两边都加空格
n 小写 不备份格式化之前的文件,后缀为.orig,默认备份
U 大写 移除括号两边不必要的空格
d 小写 只在括号外面插入空格
D 大写 只在括号里面插入空格
k1 命令 指针或引用运算符*/&/^号靠近类型名
k2 命令 指针或引用运算符*/&/^号在类型名和变量名中间
k3 命令 指针或引用运算符*/&/^号靠近变量名
s4 命令 TAB键替换为4个空格
xC80 命令 一行最大字符数,超过后会在运算符处换行
H 大写 在关键字‘if‘,‘for‘, ‘while‘之后添加空格
S 大写 switch 与case不同列,case缩进
K 大写 缩进case下面的语句
F 大写 空行分隔无关块
x 小写 删除多余空行
--style=ansi 命令 指定程序风格,如kr/linu/gnu等等

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

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

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

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

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
pause

各种代码风格的比较

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

allman风格

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;
}

kr 风格

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 风格

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

google 风格

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

参考资料

插件的下载

AStyle_3.1_windows.zip



Jlink使用技巧系列文章:



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

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

原文地址:https://www.cnblogs.com/whik/p/10310724.html

时间: 2024-08-29 19:34:44

一键自动格式化你的代码的相关文章

Eclipse保存时自动格式化代码

        使用Eclipse很长时间了,但是Eclipse有好多快捷好用的功能没有使用,现在在广州做项目,好多东西之前只是听过或者是简单的用,只是用到了皮毛,从身边人身上学到了一些东西,从eclipse软件使用开始分享.          eclipse保存时自动格式化代码,只需要在eclipse里设置一下就可以,eclipse自带这个功能,只是默认没有选中,要实现这个功能,只需要选上即可.具体的步骤:windows-->Preferences-->Java --> Editor-

Eclipse 设置保存代码时自动格式化

在码代码或者优化的时候,经常需要使用到ctrl+shift+F来格式化代码,但其实ecilpse已经自带自动格式化功能了,只是没有默认开启. 正确的打开方式:windows-->Preferences-->Java --> Editor-->Save Actions, 勾选窗口上的"Perform the selected actions on save"选项,其他选项根据需要修改即可.

设置Myeclipse中的代码格式化、注释模板及保存时自动格式化

1:设置注释的模板: 下载此模板:  codetemplates.xml 搜索Dangzhang,将其改为你自己的姓名,保存 打开eclipse/myeclipse选择 window-->Preferences-->JAVA-->Code-->Code Templates 右边点Import 选择你写好的模板.xml文件导入进去即可 2:设置格式化的模板: 格式化模板:eclipse-formatter.xml 格式化模版方法同上,只是不是选择Code Templates ,而是选

Myeclipse修改格式化代码的样式和保存自动格式化

第一种方法:下载格式化代码样式文件,参考这位老兄的方法(包含了保存自动格式化):http://blog.csdn.net/u010028869/article/details/49780515   下载下来的文件是这个样子: 第二种方法:先上图,以修改方法的参数在一行显示为例.如下图(如果图片看不清,用鼠标把图片拖到新的标签卡查看即可).

Eclipse 保留Java文件时自动格式化代码和优化Import

Eclipse 保存Java文件时自动格式化代码和优化Import Eclipse中format代码的快捷方式是ctrl+shift+F,如果大家想保存 java文件的时候 自动就格式化代码+消除不必要的import 包,可以简单的做以下配置就可以实现.

goland 保存时自动格式化代码 fmt

goland idea可以帮助我们在保存时自动格式化代码 下面列一下 goland 怎么配置: file-setting 2. tools-file watchers 3. 添加go fmt 4. 测试 编写代码(ctrl+s),保存并格式化代码 原文地址:https://www.cnblogs.com/hcy-fly/p/8274336.html

vscode写python时的代码错误提醒和自动格式化

python的代码错误检查通常用pep8.pylint和flake8,自动格式化代码通常用autopep8.yapf.black.这些工具均可以利用pip进行安装,这里介绍传统的利用pip.exe安装和在VScode中安装两种方式.[温馨提醒:我用的是pylint]要使用flake8或要想flake8等工具起作用,前提是必须把settings.json文件中的"python.linting.enabled"值设为“true”,否则即使安装了这些工具,也起不到代码的错误提醒. [传统安装

VScode设置vue文件中保存自动格式化代码以及settings.json文件的配置。

最近在做vue 项目中,由于安装有代码检测工具ESlint,每次写完代码后就发现很多语法警告,查找配置好多也有许些小问题,现记录一份settings.json配置文件. 1.设置如下: 2.settings.json文件配置如下: { // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndentation": false, // 重新设定tabsize "editor.tabSize": 2, // #每次保存的时候

phpstorm通过FileWatchers配置自动格式化代码插件

在自动格式代码的插件中, prettier一直是挺不错的, 这个插件在不同的IDE里有不同的配置地方, 但是配置参数基本上是差不多的. 下面就说明下在phpstorm(版本2019.2)中如何配置的吧. 我的环境: mac os x 10.14.4 1. 安装prettier插件, 最好是全局安装 1.1 通过: brew install prettier      (这种方式有可能会升级本机中的node, 因为prettier依赖于node, 所以环境会有较大变化) 1.2 通过: npm i