7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C++ Lint 何が良いか問題

Last updated at Posted at 2020-09-18

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 を イイ感じに設定する

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?