C言語で書かれたコードをnorminetteに合わせた形で整形するCommand line toolのformatter/linterです
.c
または.h
ファイルを指定してください。
shell
norm-formatter.exe <path>
VSCodeではRun on Saveと組み合わせることにより保存時に自動的に実行できるようになります。
Windows + VSCodeでの使用例です。
以下の手順を踏むことにより保存時にフォーマットされます。
.vscode/setting.json
に追加するc_formatter_42/c_formatter_42/data/.clang-format
をワークスペースのルートに置く設定1
json
"emeraldwalk.runonsave": {
"commands": [
{
"match": ".c",
"isAsync": true,
"cmd": "norm-formatter ${file}"
},
]
}
全てのエラーメッセージに対応しているわけではなく dawnbeenさんのcformatter42にあるclang-formatの設定ファイル(c_formatter_42/c_formatter_42/data/.clang-format
)とclang-formatの併用を前提に開発しています。
将来的にclang-formatを含めた一つのフォーマッターとして制作する予定です。
| エラーメッセージ | 対策内容 |
|----------------------|------------------------------------------------------------------------------------|
| NEWLINEPROCESSFUNC | 関数と関数の間に空行がない場合、そこに追加します |
| RETURNPARENTHESIS | 返り値が括弧で囲われていない場合、括弧で囲います |
| NOARGSVOID | 関数定義時に引数がない場合voidを付けます |
| SPACEREPLACETAB | 変数宣言の変数の型と変数名の間がspaceだった場合、spaceを削除し前後の関数とそろえる |
| SPACEBEFOREFUNC | 関数定義の関数の返り値と関数名の間がspaceだった場合、タブを置き換えます |
| BRACESHOULDEOL | 最終行に空行がなかった場合挿入します |
| SPACEAFTER_KW | break;
をbreak ;
にする |
before
c
int x(void)
{
return 1;
}
int y(void)
{
return 2;
}
after ```c int x(void) { return 1; }
int y(void) { return 2; } ```
before
c
int x(void)
{
return 1;
}
after
c
int x(void)
{
return (1);
}
before
c
int x(void)
{
return (1);
}
after
c
int x(void)
{
return (1);
}
before
c
void x(void)
{
int x;
double y;
}
after
c
void x(void)
{
int x;
double y;
}
before
c
int x(void)
{
return (1);
}
after
c
int x(void)
{
return (1);
}
before
c
int x(void)
{
return (1);
}
after ```c int x(void) { return (1); }
```