本格派エンジニアの工具箱
第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のプラグインマネージャに追加します。
図2のように[設定]タブにSQE用のアップデートセンターが追加されるので,これにチェックを入れると,[使用可能なプラグイン]タブの一覧に4つのツールが表示されるようになります(図3)。使用したいツールにチェックを入れ,[インストール]ボタンを押します。あとはプラグインマネージャが示す手順にしたがってインストールを実行してください。
インストールに成功すると,NetBeansのメニューに[Quality]という項目が追加されるはずです。また,プロジェクトマネージャ上でプロジェクト名を右クリックして表示されるポップアップメニューにも[Quality]が追加されます。これらのメニューから,プロジェクトに対する静的コードチェックを実行することができます。
ソースコードのコーディング規約チェックを行う「Checkstyle」
まずは「Checkstyle」から使ってみます。Checkstyleは,ソースコードが定められたコーティング規約に従って記述されているかをチェックするツールです。Checkstyleによるチェックを実施するには,プロジェクトマネージャ上でプロジェクト名を右クリックして,ポップアップメニュー中から[Quality]-[CodeDefects]-[Run Checkstyle]を選択します(図4)。
すると図5のようにチェック結果が出力されます。ツリーになった概要をクリックすることで,右側に簡単な説明が表示されます。例えば,「AvoidStarImportChek」は「クラスをインポートする際にワイルドカードの使用を推奨しない」という規約です。対象のコード部分には図6のようにコーディングヒントが表示されます。
コーディング規約はXML形式のファイルによって設定します。デフォルトで適用されている規約は,「行末に空白がある」ことや「ファイルの末尾が改行で終わっていない」ことまで警告する,少々厳しいものになっています。コーディング規約の設定を変更するには,NetBeansの[ツール]-[オプション]メニューでオプションウィンドウを表示させ,図7のように[Quality]メニューから[Checkstyle]タブを選択します。
デフォルトでは[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の公式サイトにあるドキュメントを参照してください。さまざまなモジュールとプロパティによって,細かなカスタマイズができるようになっています。
ツール, OSS, Java, プログラミング, 開発, Webアプリケーション, Software Quality Environment, 静的解析, 品質, テスト
本格派エンジニアの工具箱
- 第37回 NetBeansとJavaFX Scene Builderで作るJava GUIアプリケーション その2
- 第36回 NetBeansとJavaFX Scene Builderで作るJava GUIアプリケーション
- 第35回 Appcelerator Cloud Servicesと連携するモバイルアプリの作成
- 第34回 Titanium 2.0とAppcelerator Cloud Servicesを使ったモバイルアプリの実行
- 第33回 クラウド統合でさらに進化した統合アプリケーション開発環境「Titanium 2.0」
- 第32回 HTML5によるリッチコンテンツ作成のためのJavaScriptライブラリ「CreateJS」
- 第31回 Grailsライクにデスクトップアプリケーションを構築する「Griffon」
- 第30回 Scalaをネイティブサポートした「Play Framework 2.0」
- 第29回 JavaオブジェクトとJSONオブジェクトの変換に便利な「Google Gson」
- 第28回 「Jackson Java JSON-processor」でJSONデータの読み書きを行う

