CI で PR に対して lint を使用する場合にどのようにするのが良いのか。考えた。
cpplint
https://github.com/cpplint/cpplint
error の詳細
ブログズミ: cpplint でコーディングチェック
Google Style Guides に沿っているかどうかのみをチェックしてくれる。
カスタマイズ内容は各チェック項目の有効/無効のみ。
シンプルでわかりやすく、導入コストも低い (python だけ必要)。これで十分ならこれが一番いい。
Google Style Guideline が気に入らない場合や、もっと細かいカスタマイズがしたい場合は別案を検討する。
clang format
Clang 12 documentation - CLANGFORMAT
clang format は formatter だが、--dry-run
オプションを指定すれば format せず指摘だけさせることもできる。
カスタマイズ内容が多岐に渡るのが良い。導入コストは高い。
導入方法
Windows の場合は下記サイトの Pre-Built Binaries の LLVM を DL してインストールすれば一緒に入る。
LLVM Download Page
インストール時にパスも通せば、コマンドラインから $ clang-format
だけで実行可能。
オプション
$ clang-format -help
を Google 翻訳した。
引数が指定されていない場合、標準入力からコードをフォーマットし、結果を標準出力に書き込みます。
が指定されている場合は、ファイルを再フォーマットします。 -i が と一緒に指定されている場合、ファイルはその場で編集されます。それ以外の場合、結果は標準出力に書き込まれます。
usage : clang-format [options] [<file> ...]
OPTIONS:
Clang-format options | 内容 |
---|---|
--Werror | 設定されている場合、フォーマットの警告をエラーに変更します |
--assume-filename= | 言語を決定するために使用されるファイル名を上書きします。stdinから読み取る場合、clang-format はこのファイル名を想定して言語を決定します。 |
--cursor= | エディター統合から clang 形式を呼び出すときのカーソルの位置 |
--dry-run | 設定されている場合、実際にフォーマットを変更しません |
--dump-config | 構成オプションを標準出力にダンプして終了します。 -style オプションと一緒に使用できます。 |
--fallback-style= | clang-format が -style=file で呼び出されたが、使用する .clang-format ファイルが見つからない場合のフォールバックとして使用される定義済みスタイルの名前。フォーマットをスキップするには、-fallback-style=none を使用します。 |
--ferror-limit= | 停止する前に発生する clang 形式のエラーの最大数を設定します (0=制限なし)。 --dry-runまたは-nでのみ使用されます |
-i | 指定されている場合、編集 を配置します。 |
--length= | この長さの範囲をフォーマットします (バイト単位)。複数の -offset と -length のペアを指定することにより、複数の範囲をフォーマットできます。 -length なしで -offset を1つだけ指定すると、clang-format はファイルの最後までフォーマットします。 1つの入力ファイルでのみ使用できます。 |
--lines=-: | 行の範囲をフォーマットします (両方とも1ベース)。複数の -lines 引数を指定することにより、複数の範囲をフォーマットできます。 -offset および -length と一緒に使用することはできません。 1つの入力ファイルでのみ使用できます。 |
-n | --dry-runのエイリアス |
--offset= | このバイトオフセットで始まる範囲をフォーマットします。複数の -offset と -length のペアを指定することにより、複数の範囲をフォーマットできます。 1つの入力ファイルでのみ使用できます。 |
--output-replacements-xml | 置換を XML として出力します。 |
--sort-includes | 設定されている場合、SortIncludes スタイルフラグによって決定されるインクルードのソート動作をオーバーライドします |
--style= | 現在サポートされているコーディングスタイル : LLVM、Google、Chromium、Mozilla、WebKit。 -style=file を使用して、ソースファイル (または stdin の現在のディレクトリ) の親ディレクトリの1つにある .clang-format ファイルからスタイル構成をロードします。 -style="{key: value,...}" を使用して特定のパラメーターを設定します。例 : -style="{BasedOnStyle: llvm, IndentWidth: 8}"
|
--verbose | 設定されている場合、処理されたファイルのリストを表示します |
希望するコードのフォーマットスタイルが使用可能なオプションと異なる場合、-style="{key: value,...}"
オプションを使用するか、スタイル構成ファイル .clang-format または _clang-format をプロジェクトのディレクトリに配置して clang-format-style=file
を使用します。
.clang形式のファイルを作成する簡単な方法は次のとおりです。
clang-format -style = llvm -dump-config> .clang-format
Style Options
Clang 12 documentation - CLANG-FORMAT STYLE OPTIONS
ClangFormatスタイルオプション
clang-formatのstyle比較
clang-format を イイ感じに設定する