C/C++ Advanced Lint for VS Code
vscodeの拡張機能の静的解析ツールのC/C++ Advanced Lint for VS Codeの設定を変更したかったので調べました。
拡張機能のgithubから見ていきます。
github: jbenden/vscode-c-cpp-flylint: A VS Code extension for advanced, modern, static analysis of C/C++ that supports a number of back-end analyzer programs.
VScode拡張機能の設定方法を理解する
拡張機能でカスタマイズ設定ができる部分には設定ID
というのが振られています。
設定ID
を指定して、settings.jsonに設定を書き込むことで機能をカスタマイズすることができます。
今回カスタマイズする拡張機能のgithubのpackage.jsonを調べることで用意されている設定IDを調べます。
場所はvscode-c-cpp-flylint/package.json
でした。
今回はcppcheckの警告で抑制したいものがあったのでcppcheck関連の部分を読んで探します。
設定IDc-cpp-flylint.cppcheck.suppressions
が見つかりました。
"c-cpp-flylint.cppcheck.suppressions": {
"type": "array",
"default": [],
"description": "Warnings to suppress. Refer to the CppCheck documentation for what to supply here."
},
Warnings to suppress.
Refer to the CppCheck documentation for what to supply here.
警告の抑止。ここで何を提供するかについては、CppCheckのドキュメントを参照してください。
とのことなので、CppCheckのドキュメントを探します。
CppCheckのドキュメント
調べたら出てきました。
documentation: http://cppcheck.sourceforge.net/manual.pdf
関係しそうな部分を抜粋します。
Chapter 6
Suppressions
If you want to filter out certain errors you can suppress these.
Please note that if you see a false positive then we (the Cppcheck team) want that you report it so we can fix it.
6.1 Plain text suppressions
You can suppress certain types of errors.
The format for such a suppression is one of:
[error id] : [filename] : [line]
[error id] : [filename2]
[error id]
The error id is the id that you want to suppress.
The easiest way to get it is to use the –template=gcc command line flag.The id is shown in brackets.
The filename may include the wildcard characters * or ?, which match any
sequence of characters or any single character respectively.
It is recommended that you use “/” as path separator on all operating systems.
The filename must match the filename in the reported warning exactly.
For instance, if the warning contains a relative path then the suppression must match that relative path.
エラーIDを調べて、VSCodeのsettings.jsonに書き込めばなんとかなりそうです。
error idを調べる
ターミナルで以下のコマンドを打てば調べられます。
cppcheck --enable=all --xml [エラーが出ているファイル名]
xml形式で詳細な情報が出力されるのでエラーIDが書かれているところをメモします。
私が抑制したいエラーIDはvariableScope
でした!
設定ファイルに書き込む
VSCodeの設定ファイルのsettings.json
に以下の設定を書き込みます。
{
"c-cpp-flylint.cppcheck.suppressions": ["variableScope"]
}
警告が抑制できました。
その他、おすすめ設定
C使うならこの設定もおすすめ。
"c-cpp-flylint.language": "c",
"c-cpp-flylint.standard": ["c11"],
"c-cpp-flylint.clang.warnings": ["all"]
所感
初めてVSCodeの拡張機能の詳細設定を自分でやることができました!
調べる過程も含めて勉強になりました。
IDは数字だと思いこんでいたので、IDにもいろいろあるのだと知りました。
2020/07/20追記
他の拡張機能の設定とかしていると、この拡張機能がけっこう不親切なものだとわかってきました。設定するためのドキュメントが大雑把で使う人に優しくない作りでした。