25
31

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 5 years have passed since last update.

Visual Studioでcpplintする

Last updated at Posted at 2016-12-14

この記事はC++ Advent Calendar 2016の14日目の記事です。

Visual Studio 2015 Communityでcpplintを使えるようになるまでを書いていきます。

lintとは

lintとはソースコードの静的解析ツールのことです。
Wikipediaには次のように書いていました。
https://ja.wikipedia.org/wiki/Lint

lintとは、主にC言語のソースコードに対し、コンパイラより詳細かつ厳密なチェックを行うプログラムである。
転じて、C言語に限らず、各種言語で書かれた文書に対して文法チェックを行うプログラムも、lintと呼ばれるようになった。この意味でのlintの代表例としては、HTMLの文法チェックを行うAnother HTML-lintがある。

lintはソースコードをどう書くかなどのルールをある意味人間に強制することで、チーム内でコードの書き方のお作法などをどうするかの悩みを解決してくれます。またそれによって人間はコードを書くということに集中できるようになるため、個人的にすごい気に入っているツールです。

cpplintとは

cpplintとはpythonで書かれたC++のソースコードがGoogle C++ Style Guideに従っているかを検査するツールです。
実行する時に--filterオプションを使うことで検査される内容を細かく設定できます。どのような内容が検査対象になるかは、--filterオプションの移り変わりに対応するためにもcpplintのソースコードを直接見るのがいいと思います。

Visual Studioの外部ツールとしてcpplintを登録する

Windowsにpythonがインストールされており、cpplintpipC:\Python27\Scripts\cpplint.exeインストールされている前提とします。
ツール(T)外部ツール(E)...で外部ツールの設定画面を開きます。追加(A)を選んで以下のように入力します。

タイトル: cpplint
コマンド: C:\Python27\Scripts\cpplint.exe
引数: --output=vs7 --extensions=h,hpp,c,cpp $(ItemPath)
初期ディレクトリ: $(ItemDir)

cpplint_config.PNG

引数のところに--filterオプションを書いてやると検証の内容を設定できます。また--extensionsはlintの対象となるファイルを指定するオプションで、デフォルトでは、.cc.cpp.cu.cuh .hが対象なので、hppを対象にするには明示的に指定しなければなりません。
ここで、登録したcpplintが上から何番目なのか覚えておいてください。上の画像だと6番目です。

cpplintをキーボードショートカットに登録する

ツール(T)オプション(O)...でオプション画面を開きます。検索バーに外部コマンドと入力します。番号が振られたコマンドが出てくると思うので、対応する数字にキーボードショートカットを割り当てます。この場合だと6Ctrl+R,Ctrl+Lを割り当てました。
cpplint_keyboard.PNG

cpplintの実行

コードを編集するエリアで先程登録したショートカットを実行すると次のようにエラーを表示してくれます。
cpplint_test.PNG

参考

以下のページを参考にしました

25
31
1

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
25
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?