本格派エンジニアの工具箱

第16回Javaソフトウェアのための静的コード解析ツールをセットにした「Software Quality Environment」

「Software Quality Environment」とは

ソフトウェアの品質を確保するためには、単体テストをはじめとする動的テストと並んで、ソースコードの静的チェックが極めて重要となります。Software Quality Environment⁠以下、SQE)は、Javaアプリケーション開発向けに公開されている複数の静的コード解析ツールをセットにした、NetBeans用のプラグインです。現在、SQEには次に挙げる4つのツールが含まれています。

これらのツールはそれぞれ単体で利用することもできますが、SQEのメリットは、手軽に複数の異なる手段を使ってソースコードの静的解析を行い、ソフトウェアの品質を高めることができるという点です。それに加えて、IDEと連携することで使い勝手も大幅に向上しています。具体的には、NetBeansプラグインとしての追加機能として保存/コンパイル時の自動チェックや、エディタ上でのヒントの表示、出力ウィンドウでの整形されたエラー表示、各ツールに関するオプションパネルでの設定などがサポートされています。SQEによる品質管理は、Java SEアプリケーション・プロジェクトやJava Webアプリケーション・プロジェクトの他に、AntやMavenで管理されるプロジェクトに適用することが可能です。

SQEのインストール

それでは、早速NetBeansにSQEをインストールしてみましょう。NetBeansは、最新版の7.0.1を利用します。SQEプロジェクトでは公式にNetBeans用のアップデートサイトを用意しているため、インストールはプラグインマネージャから簡単に行うことが可能です。NetBeansのプラグインマネージャーに関する詳細は、本連載の第3回の記事を参照してください。

SQEのアップデートセンターのURLは「http://deadlock.netbeans.org/hudson/job/sqe/lastStableBuild/artifact/build/full-sqe-updatecenter/updates.xml」です。これを図1のようにNetBeansのプラグインマネージャに追加します。

図1 SQE用のアップデートセンターの登録
図1 SQE用のアップデートセンターの登録

図2のように[設定]タブにSQE用のアップデートセンターが追加されるので、これにチェックを入れると、⁠使用可能なプラグイン]タブの一覧に4つのツールが表示されるようになります図3⁠。使用したいツールにチェックを入れ、⁠インストール]ボタンを押します。あとはプラグインマネージャが示す手順にしたがってインストールを実行してください。

図2 登録したSQEのアップデートセンターを有効にしておく
図2 登録したSQEのアップデートセンターを有効にしておく
図3 SQEに含まれる4つのプラグインを選択してインストールする
図3 SQEに含まれる4つのプラグインを選択してインストールする

インストールに成功すると、NetBeansのメニューに[Quality]という項目が追加されるはずです。また、プロジェクトマネージャ上でプロジェクト名を右クリックして表示されるポップアップメニューにも[Quality]が追加されます。これらのメニューから、プロジェクトに対する静的コードチェックを実行することができます。

ソースコードのコーディング規約チェックを行う「Checkstyle」

まずは「Checkstyle」から使ってみます。Checkstyleは、ソースコードが定められたコーティング規約に従って記述されているかをチェックするツールです。Checkstyleによるチェックを実施するには、プロジェクトマネージャ上でプロジェクト名を右クリックして、ポップアップメニュー中から[Quality⁠⁠-⁠CodeDefects⁠⁠-⁠Run Checkstyle]を選択します図4⁠。

図4 Checkstyleによるコードチェックの実行
図4 Checkstyleによるコードチェックの実行

すると図5のようにチェック結果が出力されます。ツリーになった概要をクリックすることで、右側に簡単な説明が表示されます。例えば、⁠AvoidStarImportChek」「クラスをインポートする際にワイルドカードの使用を推奨しない」という規約です。対象のコード部分には図6のようにコーディングヒントが表示されます。

図5 Checkstyleによるチェック結果の表示例
図5 Checkstyleによるチェック結果の表示例
図6 ソースコードの該当箇所にはコードヒントが表示される
図6 ソースコードの該当箇所にはコードヒントが表示される

コーディング規約はXML形式のファイルによって設定します。デフォルトで適用されている規約は、⁠行末に空白がある」ことや「ファイルの末尾が改行で終わっていない」ことまで警告する、少々厳しいものになっています。コーディング規約の設定を変更するには、NetBeansの[ツール⁠⁠-⁠オプション]メニューでオプションウィンドウを表示させ、図7のように[Quality]メニューから[Checkstyle]タブを選択します。

図7 オプションウィンドウでコーディング規約の設定ファイルを変更できる
図7 オプションウィンドウでコーディング規約の設定ファイルを変更できる

デフォルトでは[Config File]の項目に「C:\Users\[ユーザー名]\.netbeans\7.0.1\config\Preferences\org\nbheaven\sqe\codedefects\checkstyle.xml」⁠Windows 7環境の場合)というファイルが設定されているので、これを任意の設定ファイルに変更すれば、適用される規約が変わります。checkstyle.xmlを別名でコピーして、それを元に編集するのがいいでしょう。

ファイル中で<module name=....>の形で指定されているのが適用される規約です。例えば、行末の空白を許容するように変更したい場合には下記のように「RegexpSingleline」の設定を探してコメントアウトしましょう。

<!-- module name="RegexpSingleline">
   <property name="format" value="\s+$"/>
   <property name="minimum" value="0"/>
   <property name="maximum" value="0"/>
   <property name="message" value="Line has trailing spaces."/>
</module -->

<property>タグによって規約に対して詳細な設定を行うこともできます。例えば「NewlineAtEndFile」の部分を次のような形に書き換えると、ファイルの最後がLFスタイルの改行コードで終了しているかどうかをチェックするようになります。デフォルトではCR+LFとしてチェックしますが、NetBeansのエディタはLFスタイルの改行コードでファイルを作成するため、このように変更しておいた方が正しくチェックできます。

<module name="NewlineAtEndOfFile">
    <property name="lineSeparator" value="lf"/>
</module>

その他、コーディング規約の記述方法についてはCheckstyleの公式サイトにあるドキュメントを参照してください。さまざまなモジュールとプロパティによって、細かなカスタマイズができるようになっています。

おすすめ記事

記事・ニュース一覧