norm formatter

English ver

概要

C言語で書かれたコードをnorminetteに合わせた形で整形するCommand line toolのformatter/linterです

使い方

にフォーマットしたい.cまたは.hファイルを指定してください。

shell norm-formatter.exe <path>

VSCodeではRun on Saveと組み合わせることにより保存時に自動的に実行できるようになります。

使用例

Windows + VSCodeでの使用例です。

以下の手順を踏むことにより保存時にフォーマットされます。

  1. ダウンロードした実行ファイル(norm-formatter)へパスを通す
  2. 以下のような設定1を.vscode/setting.jsonに追加する
  3. VSCodeの拡張機能Clang-Format/xaverを追加する
  4. cformatter42の設定ファイルc_formatter_42/c_formatter_42/data/.clang-formatをワークスペースのルートに置く
  5. VSCode上の設定でformatOnSaveを有効にする

設定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 ;にする |

NEWLINEPROCESSFUNC

before c int x(void) { return 1; } int y(void) { return 2; }

after ```c int x(void) { return 1; }

int y(void) { return 2; } ```

RETURN_PARENTHESIS

before c int x(void) { return 1; }

after c int x(void) { return (1); }

NOARGSVOID

before c int x(void) { return (1); }

after c int x(void) { return (1); }

SPACEREPLACETAB

before c void x(void) { int x; double y; }

after c void x(void) { int x; double y; }

SPACEBEFOREFUNC

before c int x(void) { return (1); }

after c int x(void) { return (1); }

BRACESHOULDEOL

before c int x(void) { return (1); }

after ```c int x(void) { return (1); }

```

License