前回、Java SE 8で導入した型アノテーションについて紹介しました。型アノテーションは型の使用に対して修飾できるアノテーションです。しかし、Java SE 8では型アノテーションが使えるようになっただけで、標準ライブラリーだけでは型アノテーションを活用することはできません。

 そこで、今回は型アノテーションの活用例としてChecker Frameworkを紹介します。

Chekcer Framework

 Checker Frameworkは型アノテーションを利用して、静的コード解析を行うオープンソースのツールです。

 ワシントン大学のMichael Ernst氏(写真1)を中心に作成されています。ソースコードはGitHubで公開されており、現在も活発に開発が行われています。

写真1●Michael Ernst氏
写真1●Michael Ernst氏
[画像のクリックで拡大表示]

 原稿執筆時点での最新バージョンは、2016年7月に公開された2.1.0です。本記事でもChecker Framework 2.1.0を使用していきます。

 Checker Frameworkは複数のアノテーションプロセッサから構成されています。アノテーションプロセッサはチェックしたい項目に対応しており、それぞれがチェッカと呼ばれています。チェッカは標準で20種類提供されています()。

  • Nullness Checker
  • Property File Checker
  • Initialization Checker
  • Internationalization Checker
  • Map Key Checker
  • Signature String Checker
  • Interning Checker
  • GUI Effect Checker
  • Lock Checker
  • Units Checker
  • Fake Enum Checker
  • Signedness Checker
  • Tainting Checker
  • Constant Value Checker
  • Regex Checker
  • Aliasing Checker
  • Format String Checker
  • Linear Checker
  • Internationalization Format String Checker
  • Subtyping Checker

 例えば、Nullness Checkerは、変数の値がnullになっていないかどうかをチェックできます。

 標準のチェッカ以外にサードパーティによるチェッカも公開されています。サードパーティによるチェッカはChecker Frameworkのドキュメントに記載されていますので、参考にしてください。

 また、チェッカの自作も可能です。チェッカの自作については来月取り上げる予定です。