硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5099|回复: 8
收起左侧

[MDK] Keil中添加AStyle对代码进行格式化处理

  [复制链接]

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
发表于 2018-6-3 22:42:24 | 显示全部楼层 |阅读模式

astyle是一个常用的开放源码工具。它可以方便的将程序代码格式化成自己想要的样式而不必人工修改。本来嘛,作为高等生物应该优先去做一些智慧的事情,而不是把时间消耗在机器可以完美完成的事情上。

想要立刻开始?请先去主页http://sourceforge.net/projects/astyle下载最新版本。可以选择二进制版本,也可以下载源码自行编译。总之得到可执行文件后请将astyle放在Path(C:/Program Files/Microsoft Visual Studio 8/Common7/IDE)中,这样会方便很多。

下面介绍在Keil uVision5 中添加Astyle的方法:
1:uVision5中单击Tools菜单---Customize Tools Menu

1.bmp
2:添加Astyle All Files 和Astyle Current File菜单(自定义菜单名,可以使用中文)
我在这里添加了两个菜单,分别是格式化当前文件和格式化project中的所有文件。
2.bmp
3:添加Command命令:单击...按钮,选择Astyle.exe。两个菜单都要选择。
3.bmp
4.bmp
4:Arguments:
Astyle Current File菜单填写  !E
Astyle All Files菜单填写  "$E*.c" "$E*.h"
注:!E 表示的是当前获得焦点且正在编辑的文件。
    $E*.c和$E*.h代表当前获得焦点且正在编辑文件所在目录下所有.c和.h文件(参考keil uVision的帮助文档)   
    使用的是Astyle默认格式来格式化文件,另外也可以自定义格式,自定义格式参考Astyle的帮助文档。默认格式化后,会备份原文件为源文件名.orig。如果不想让Astyle备份文件,可以使用-n参数。 如:-n !E (表示格式化当前文件,不备份)
在keil中的使用效果:生成的菜单出现在Tools的下拉菜单中,Astyle的运行结构出现在keil的Build Output窗口中。

1.常用功能
(1) 单个文件--缺省美化
astyle --style=ansi Form1.cs
处理前的代码:
    private void Form1_Load(object sender, EventArgs e)
    {
        int s;
        for (int i=0;i<10;i++){
            for (int j=0;j<10; j++){
                s = s+j+i;}
        }
    }
处理后:
    private void Form1_Load(object sender, EventArgs e)
    {
        int s;
        for (int i=0;i<10;i++)
        {
            for (int j=0;j<10; j++)
            {
                s = s+j+i;
            }
        }
    }

(2) 单个文件--更改缩进2个空格
astyle --style=ansi --indent=spaces=2 Form1.cs
缺省缩进一个TAB,也可以显式说明使用Tab,如下:
astyle --style=ansi --indent=tab Form1.cs

(3) 处理多个文件--有限个
astyle --style=ansi Form1.cs Form2.cs

(4) 批量处理多个文件--无限个
for /R ./ %f in (*.cs) do astyle --style=ansi "%f"
说明:/R表明遍历一个目录树,后面紧跟的路径是根,缺省为当前目录。
本例中,根为./表示当前目录,命令等价于:
for /R %f in (*.cs) do astyle --style=ansi "%f"
作用是从(目录树根)当前目录开始,查找所有java文件,包含子目录中的文件;然后交给astyle处理。
当然,目录树根也可以使用绝对路径,下面的命令查找C盘所有的java文件并处理。
for /R c:/ %f in (*.cs) do astyle --style=ansi "%f"


有时候你会有很多文件需要格式化成统一风格,难道一个个点击菜单?不!那样太累了。

在Windows中,我们可以用命令行来解决问题。这里用到一个超级命令 for

我来写个范例,大家就知道该怎么处理了。

      for /R %f in (*.cpp;*.c;*.h) do astyle --style=ansi "%f"

该命令在当前目录中寻找文件名匹配模式 *.cpp;*.c;*.h 的所有文件(不同模式可用英文逗号隔开),并且对每个文件%f执行操作:

      astyle --style=ansi "%f"


AStyle.zip

360.59 KB, 下载次数: 137

评分

参与人数 3金币 +140 收起 理由
caicaptain2 + 20
byccc + 20 赞一个!
eric2013 + 100 赞一个!

查看全部评分

武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

10

主题

92

回帖

122

积分

初级会员

积分
122
发表于 2018-6-3 23:25:07 | 显示全部楼层
不错!
不过一般自己写的代码都有自己的风格.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2018-6-4 00:14:27 | 显示全部楼层
非常感谢楼主分享
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2018-6-4 08:50:53 | 显示全部楼层
谢谢分享
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
 楼主| 发表于 2018-7-10 23:07:44 | 显示全部楼层
`dc2018 发表于 2018-6-3 23:25
不错!
不过一般自己写的代码都有自己的风格.

一般按照统一的方式,方便大家一起交流
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
 楼主| 发表于 2018-7-10 23:07:58 | 显示全部楼层
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-7-12 09:20:36 | 显示全部楼层
尝试了一下,很好,简单实用。

回复

使用道具 举报

82

主题

402

回帖

668

积分

金牌会员

积分
668
QQ
 楼主| 发表于 2018-7-25 23:16:11 | 显示全部楼层
caicaptain2 发表于 2018-7-12 09:20
尝试了一下,很好,简单实用。

武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2021-12-7 17:36:10 | 显示全部楼层
群主,我没有这个Microsoft Visual Studio 8,我就是随便放的路径,执行之后没有生效。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 17:57 , Processed in 0.301647 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表