7
10

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.

VSCode拡張機能 「C/C++ Advanced Lint for VS Code」 CppCheckの設定をカスタマイズする

Last updated at Posted at 2020-07-10

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に以下の設定を書き込みます。

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追記

他の拡張機能の設定とかしていると、この拡張機能がけっこう不親切なものだとわかってきました。設定するためのドキュメントが大雑把で使う人に優しくない作りでした。

7
10
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
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?