前回、Java SE 8で導入した型アノテーションについて紹介しました。型アノテーションは型の使用に対して修飾できるアノテーションです。しかし、Java SE 8では型アノテーションが使えるようになっただけで、標準ライブラリーだけでは型アノテーションを活用することはできません。
そこで、今回は型アノテーションの活用例としてChecker Frameworkを紹介します。
Chekcer Framework
Checker Frameworkは型アノテーションを利用して、静的コード解析を行うオープンソースのツールです。
ワシントン大学のMichael Ernst氏(写真1)を中心に作成されています。ソースコードはGitHubで公開されており、現在も活発に開発が行われています。
原稿執筆時点での最新バージョンは、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のドキュメントに記載されていますので、参考にしてください。
また、チェッカの自作も可能です。チェッカの自作については来月取り上げる予定です。