コード解析ツールまとめ(PHPMD,Cppcheck)

Published: 2016年2月9日 by tomsato

◼︎ 概要

静的コード解析である
PHPMDとCppcheckについて調べます

◼︎ 静的コード解析について

コンピュータソフトウェアの解析手法の一種であり
実行ファイルを実行することなくソース解析を行う
機械的にチェックを行うことによって文法スタイルの謝りやパターン化されたバグを検出したりする

◼︎ PHPMD

PHPMDはPHP Mess Ditectorの略で、コードを解析してバグになりそうな箇所を検出するツール
例えば未使用変数の警告、命名規則についての警告、サイクロマティック複雑度(複雑度)、コードをシンプルに書くための指摘など色々わかる

// 使い方
$ phpmd aaa.php text cleancode,codesize,controversial,design,naming,unusedcode
/home/tomsato/aaa.php:3 The property $_publicUnused is not named in camelCase.
/home/tomsato/aaa.php:3 The property $_protectedUnused is not named in camelCase.
/home/tomsato/aaa.php:3 The property $_privateUnused is not named in camelCase.
/home/tomsato/aaa.php:7 Avoid unused private fields such as '$_privateUnused'.
/home/tomsato/aaa.php:11    Avoid unused local variables such as '$localUnused'.
/home/tomsato/aaa.php:16    Avoid unused parameters such as '$unused'.
/home/tomsato/aaa.php:20    Avoid unused private methods such as 'privateUnusedFunction'.

// 出力されたhtmlをブラウザで確認できる
$ phpmd aaa.php html cleancode,codesize,controversial,design,naming,unusedcode
 

◼︎ Cppcheck

C/C++用の静的解析ツール
cppcheckは構文エラーを検出しないしかし通常コンパイルが検出しないタイプのバグの種を検出する
例えばメモリリーク、アロケーション(確保と解放)のミスマッチ、バッファオーバーラン、さらに多くのチェックを行なってくれる

$ cppcheck --enable=all ./testdir/
Checking testdir/test.cc...
[testdir/test.cc:110]: (portability) scanf without field width limits can crash with huge input data on some versions of libc.
[testdir/test.cc:153]: (portability) scanf without field width limits can crash with huge input data on some versions of libc.
1/2 files checked 77% done
Checking testdir/aiuoe.cc...
2/2 files checked 100% done
Checking usage of global functions..
[testdir/aiuoe.cc:319]: (style) The function 'test1' is never used.
[testdir/aiuoe.cc:332]: (style) The function 'test2' is never used.
(information) Cppcheck cannot find all the include files (use --check-config for details)
 

◼︎ 参考

Share

最近の投稿

NetlifyのSplit TestingとFunctionsについて使い方をまとめる Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

NetlifyとはHTMLなどの静的コンテンツのみで構成されたWebサイトを閲覧できる形で配信するWebサービス GitHubやBitbucket、GitLabなどと連携して使うことができて、リポジトリにプッシュすることで自動でCI/CDを行うことができる、無料枠が豊富で独自ドメインを設定可能

WordPressからJekyll(GitHub Pages)に移行した手順をまとめる。 お金的な事情や使いやすさなどの理由で無料のJekyll+GitHub Pagesに移行した。JekyllとはMarkdown等から静的ページを生成する静的サイトジェネレータ

Scala開発のためにScalaらしさをまとめる 言語設計者の設計思想を元にScalaらしさについてまとめる オブジェクト指向と関数型の融合について

StorybookとはUI開発環境を提供するツール React、React Native、Angular、Vueなどをサポートしている ユーザーは独立した開発環境でコンポーネントを個別に作成して挙動の確認をテストできたり、コンポーネントを一覧にしてカタログ化できるので他の人に紹介する時に使えたりする

カテゴリ一覧

タグ一覧