【规范代码】keil 代码格式化工具

前言

nixgnauhcuy's blog

所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nixgnauhcuy's blog

在用 Keil5 编写程序的时候,很多情况要参考别人写的程序来完成开发,在这过程中,看到了很多代码编写风格不一、代码编写不规范的情况。有时候看的头都大了,在一次偶然的情况下,认识了 Astyle 这一代码格式工具,就根据帖子上的教程配置在了 Keil 上,后面在使用的过程中,发现这款插件的高效性,所以特意拿出来分享。


Astyle

Astyle 网站

Astyle


Astyle 介绍

我直接搬 Astyle 网站两句话来介绍,网站的介绍已经十分详细了,文档等信息都可以在网站上获取到。

Artistic Style is a source code indenter, formatter, and beautifier for the C, C++, C++/CLI, Objective-C, C# and Java programming languages.

Artistic Style 是 C, C++, C++/CLI, Objective-C, C# 和 Java 等编程语言的代码缩进器、格式化器和美化器。

Artistic Style 是适用 C, C++, C++/CLI, Objective-C, C# 和 Java 等编程语言的免费、快速和小型自动格式化软件。


Astyle 下载

进入官网,在官网下方点击 Download 进入下载页面.

image

下载页面直接下载最新版本即可.

image

Astyle 保存

Astyle 下载完后,根据自己的需求和方便,解压并保存好就可以了。这里我是直接丢在了 keil 的根目录下。


Keil 增加 Astyle 插件

Keil 使用 Astyle 效果

使用前:


image

使用后:


image

Keil 配置 Astyle

打开 Keil ,然后在菜单栏中找到 Tools-Customize Tools Menu...

image

打开后,增加两个内容,分别命名为:

  • Astyle All Files
  • Astyle Current File

命名可以自己需求,不一定和我一样。

然后位置都选择你解压 Astyle 文件中 bin 文件夹下的 Astyle.exe ,在 Arguments 参数中对应填入:

Astyle All Files

  • -n "$E*.c" "$E*.h"

Astyle Current File

  • -n !E

如图:

image
image

设置好后我们点 OK 应用。


Keil 使用 Astyle 格式代码

配置好后,我们可以在 Tools-Customize Tools Menu... 中看到我们新增加的两个自定义工具。

image

格式化正在编辑的文件所在目录下所有的 .c 与 .h 文件就选择 Astyle All Files。

格式化正在编辑的文件则选择 Astyle Current File.

格式化可以在 keil 的输出窗口看到格式情况。

image

关于配置参数上的解释

我们在 keil 中填入了两行参数值:

Astyle All Files

  • -n "$E*.c" "$E*.h"

Astyle Current File

  • -n !E

-n,格式化文件时,新的缩进的文件将保留原始文件,创建原始文件的副本,并在原始文件名后附加 .orig ,可以通过 -n 来取消设置备份副本。

image

"$E*.c" "$E*.h",$E 是 Keil 的指令,表示当前文件所在目录内的全部文件,加上 *.c 与 *.h ,表示当前文件所在目录内 .c 文件与 .h 文件,Astyle 也会只格式化当前文件所在目录内的全部的 .c 与 .h 文件。

!E,!E 是 Keil 的指令,表示当前文件, Astyle 在操作时就只格式化当前正在编辑的文件。


Astyle 的其他配置

括号格式化风格

image

具体的可以参照 Astyle文档,不过多叙述。


allman 风格

--style=allman / --style=bsd / --style=break / -A1

Allman style uses broken braces.

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

java 风格

--style=java / --style=attach / -A2

Java style uses attached braces.

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

kr 风格

--style=kr / --style=k&r / --style=k/r / -A3

Kernighan & Ritchie style uses linux braces. Opening braces are broken from namespaces, classes, and function definitions. The braces are attached to everything else, including arrays, structs, enums, and statements within a function.

Using the k&r option may cause problems because of the &. This can be resolved by enclosing the k&r in quotes (e.g. --style="k&r") or by using one of the alternates --style=kr or --style=k/r.

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

其他

还有很多的风格,可以在对应的文档看,总共有15种风格任君挑选,如 python、google、linux 风格等。
因为我用 Keil 开发是 C 语言,所有我选了 A1 的风格,所以相应的在 Keil 上我就配置了:

-n -A1 "$E*.c" "$E*.h"

不生成副本,用 A1 风格,来格式化 .c 与 .h 文件。


格式化缩进长度

空格缩进

这里我就不在截图了,具体的可以看文档,默认我们不配置缩进选项的话,默认是4个空格,如果你想要更改缩进的空格长度,你可以通过:

--indent=spaces / --indent=spaces=# / -s#

-s4,就是缩进 4 个空格,那么相应的,要改缩进 x 个空格就更改 -sx 就可以了.


制表符缩进

同上,

--indent=tab / --indent=tab=# / -t / -t#

-t4,就是缩进 4 个制表符,那么相应的,要改缩进 x 个制表符就更改-tx就可以了。


其他

还有另外两种缩进方式,我觉得很少使用,就不列举了,有兴趣了解可以访问官方文档。

还有许多格式化的形式,我也不多加叙述,例如缩进'switch'块、'case'块、注释、'class'和'struct'块、预处理程序缩进等许许多多的格式化方式,官方文档列举的说明十分详细,针对自己需要的、想要的格式化需求,针对性的在文档中寻找并利用,制作一个自己的高效率工具。


扩展

keil5 的安装及破解

keil 软件配置


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容