0Pricing
C++ Academy · レッスン

静的解析ツール:clang-tidy、cppcheck

clang-tidyとcppcheckで、実行前にバグを検出します。

「静的解析ツール:clang-tidy、cppcheck」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

なぜ静的解析を行うのか

静的解析ツールはコードを実行せずに読み取り、潜在的なバグ、アンチパターン、最新化の機会を指摘します。C++ コードベースにとって、低コストで大きな効果を得られる予防策です。

clang-tidy

clang-tidy は、数百種類のチェックを備えた Clang ベースのリンターです。IDE が使用するものと同じ compile_commands.json を使用します。

clang-tidy main.cpp -- -std=c++20

チェックの選択

-checks= を使ってチェックカテゴリを有効にします。よく使われるグループは、modernize-*、bugprone-*、performance-*、readability-* です。

clang-tidy main.cpp -checks="-*,modernize-*,bugprone-*,performance-*"

設定ファイル

リポジトリのルートに .clang-tidy ファイルを配置し、チーム全体で設定を共有します。

Checks: >
  -*,
  modernize-*,
  bugprone-*,
  performance-*,
  readability-magic-numbers
WarningsAsErrors: ""
HeaderFilterRegex: ".*"

最新化チェック

最新化チェックを使うと、古いコードを更新できます。例として modernize-use-nullptr、modernize-use-auto、modernize-loop-convert があります。-fix を使えば、それぞれのチェックで修正を自動適用できます。

Cppcheck

cppcheck は、バグの検出(null 参照外し、未初期化変数、リークなど)に特化した別の解析ツールです。clang-tidy が見逃す問題を検出することもよくあります。

cppcheck --enable=all --std=c++20 src/

両方を組み合わせる

cppcheck と clang-tidy は互いに補完し合います。CI パイプラインでは、両方を実行してレポートを統合することがよくあります。

IDE との統合

VS Code、CLion、Visual Studio、Qt Creator は、いずれも clang-tidy と統合できます。入力中に警告を確認できます。

大規模な修正

clang-tidy -fix は、提案された修正を自動的に適用します。リポジトリ全体に対して実行すると、コードをすばやく一括で最新化できます。

誤検出の抑制

コメントを使えば、1 つの警告をその場で抑制できます。

int x;  // NOLINT(cppcoreguidelines-init-variables)

静的解析と動的解析

静的解析はコードを実行せずにバグを検出し、動的解析(サニタイザー)は実行中にバグを検出します。検出できる問題が異なるため、両方を使用します。

レガシーコードへの導入

レガシーコードベースですべてのチェックを一括して有効にすると、膨大なノイズが発生します。段階的に導入します。1 つのチェックを有効にし、警告を修正し、CI で適用してから、次のチェックに進みます。

確認問題

古いコードを最新の C++ の書き方に更新するのに役立つ clang-tidy のチェックグループはどれですか。

まとめ

clang-tidy や cppcheck などの静的解析ツールは、実行前にバグを検出します。プロジェクトごとの .clang-tidy で設定し、modernize-* を使ってレガシーコードを自動的に更新します。IDE と CI に統合して、継続的にフィードバックを得ます。

よくある質問

「静的解析ツール:clang-tidy、cppcheck」レッスンは無料ですか?

はい。「静的解析ツール:clang-tidy、cppcheck」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「静的解析ツール:clang-tidy、cppcheck」で何を学びますか?

clang-tidyとcppcheckで、実行前にバグを検出します。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「静的解析ツール:clang-tidy、cppcheck」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 静的解析ツール:clang-tidy、cppcheck
  2. Sanitizer:Address、Thread、UB Sanitizer
  3. libFuzzerによるファジング
  4. C++プロジェクトの継続的インテグレーション
← C++ Academyに戻る