2 个稳定版本
1.0.4 | 2022年3月9日 |
---|
#1089 in 命令行工具
61KB
1.5K SLoC
norm formatter
概要
将 C 语言编写的代码格式化为符合 norminette 规范的命令行工具 formatter/linter。
安装
Linux
如果未安装 cargo
,请运行以下命令安装 rustup
并使 cargo
可用。
$ curl https://sh.rustup.rs -sSf | sh
可以使用以下命令安装
$ cargo install norm-formatter
Mac
由于没有 Mac,无法进行验证。但可能和 Linux 的安装方法类似,如果有确认过的方法,请通过 [email protected] 联系。
用法
请指定要格式化的 .c
或 .h
文件。
$ norm-formatter.exe <path>
在 VSCode 中,可以与 "Run on Save" 结合使用,以便在保存时自动执行。
使用示例
以下是在 Windows + VSCode 中使用示例。
按照以下步骤,保存时会自动进行格式化。
- 将下载的执行文件 (norm-formatter) 添加到路径
- 将以下设置 1 添加到
.vscode/setting.json
- 添加 VSCode 扩展 Clang-Format/xaver
- 将 c_formatter_42 的设置文件
c_formatter_42/c_formatter_42/data/.clang-format
放到工作空间的根目录下 - 在 VSCode 上的设置中启用 formatOnSave
设置 1
"emeraldwalk.runonsave": {
"commands": [
{
"match": ".c",
"isAsync": true,
"cmd": "norm-formatter ${file}"
},
]
}
支持的错误消息
并非所有错误消息都有支持,开发是在假设将 dawnbeen 的 c_formatter_42 中的 clang-format 设置文件 (c_formatter_42/c_formatter_42/data/.clang-format
) 与 clang-format 一起使用的前提下进行的。
计划未来制作一个包含 clang-format 的一体化格式化工具。
错误消息 | 解决内容 |
---|---|
NEWLINE_PROCESS_FUNC | 在函数与函数之间如果没有空行,则添加空行 |
RETURN_PARENTHESIS | 如果返回值没有被括号包围,则包围括号 |
NO_ARGS_VOID | 在函数定义时如果没有参数,则添加 void |
SPACE_REPLACE_TAB | 如果变量声明的变量类型与变量名之间有空格,则删除空格并使前后与函数对齐 |
SPACE_BEFORE_FUNC | 如果函数定义中函数的返回值与函数名之间有空格,则替换为制表符 |
BRACE_SHOULD_EOL | 如果最后一行没有空行,则添加空行 |
SPACE_AFTER_KW | 将 break; 转换为 break ; |
NEWLINE_PROCESS_FUNC
before
int x(void)
{
return 1;
}
int y(void)
{
return 2;
}
after
int x(void)
{
return 1;
}
int y(void)
{
return 2;
}
RETURN_PARENTHESIS
before
int x(void)
{
return 1;
}
after
int x(void)
{
return (1);
}
NO_ARGS_VOID
before
int x(void)
{
return (1);
}
after
int x(void)
{
return (1);
}
SPACE_REPLACE_TAB
before
void x(void)
{
int x;
double y;
}
after
void x(void)
{
int x;
double y;
}
SPACE_BEFORE_FUNC
before
int x(void)
{
return (1);
}
after
int x(void)
{
return (1);
}
BRACE_SHOULD_EOL
before
int x(void)
{
return (1);
}
after
int x(void)
{
return (1);
}
许可证
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
依赖
~3MB
~51K SLoC