C++test -C/C++対応自動テストツール-
C++test9.2新機能紹介
C/C++対応テストツールC++testの最新バージョン9.2では、さらなる品質向上と工数削減を実現するために静的解析、単体テスト共に新機能が追加されました。本資料では、それぞれの機能を紹介します。
静的解析新機能
重複コード検出ルールの追加
重複コード(コードクローン)はコードのボリュームが増えるだけでなく、アプリケーションの保守性を著しく低下させます。重複コードが含まれていると、バグや仕様変更などコードを変更する必要が生じた場合、すべての重複コードに対して変更を行わなければならない可能性があり、それを確認するだけでも非常に手間がかかります。重複コードが存在することを認識しないまま変更を適用すると、修正済みのバグの再発となって現れ、より複雑な問題となって混乱を招く恐れがあります。また、大規模プロジェクトでは重複コードを人的に発見するのも困難です。
本バージョンから4つのルールが追加され、重複コードを検出することができるようになりました。
本バージョンから4つのルールが追加され、重複コードを検出することができるようになりました。
- コードの重複を避ける
- 文字列リテラルの重複を避ける
- 関数の重複を避ける
- #includeディレクティブの重複を避ける
重複コードの検出と言うと、何をもって重複とするのか?スペースの違いは?変数名の違いは?などの疑問を生じると思います。C++testの重複コードのルールではこれらをパラメーターによって設定できます。
下記の2つのコード(ソースコード 1、ソースコード 2)を見てみます。
これらのコードは一見異なるように見えますが、よく確認すると一部で似たような処理が記述されています。
ソースコード 1
ソースコード 2
C++testを使えば、これらのコードを重複コードとして検出できます。「コードの重複を避ける」のルールを使い、パラメーターを設定することで、この2つの関数の中で//↓ここからと////↑ここまで…のコメントの間の処理を重複コードとして検出します。
パラメーターはどの程度重複していれば重複コードとみなすか、変数名やリテラル値の違いを無視する、といった設定をチェックボックスによって設定します。逆にこれらを無視しないように設定すると、より厳密な検出を行えます。
パラメーターはどの程度重複していれば重複コードとみなすか、変数名やリテラル値の違いを無視する、といった設定をチェックボックスによって設定します。逆にこれらを無視しないように設定すると、より厳密な検出を行えます。
重複コードは、単一のファイル内だけなくファイルをまたがった場合でも検出可能です。
パラメーターの設定によって柔軟な検出が可能なため、日々の開発の中でのチェックはもちろん、開発委託会社やオフショア開発からの受け入れ時チェックや、バグが発生した際に修正漏れを防ぐために、同じ処理をしている重複コードを探すといった利用も想定できます。
パラメーターの設定によって柔軟な検出が可能なため、日々の開発の中でのチェックはもちろん、開発委託会社やオフショア開発からの受け入れ時チェックや、バグが発生した際に修正漏れを防ぐために、同じ処理をしている重複コードを探すといった利用も想定できます。















