Facebook、静的コード解析ツール「Infer」を公開。Objective-C/Java/Cコードのバグを指摘してくれる

2015年6月16日

Facebookはコードを解析してバグを発見する静的コード解析ツール「Infer」をオープンソースで公開しました

Open-sourcing Facebook Infer: Identify bugs before you ship | Engineering Blog | Facebook Code

Inferが対応するコードはAndroidのJavaとiOSのObjective-C、およびC。現時点ではAndroidとJavaではNullPointerExceptionおよびリソースのリーク。iOSとCコードではメモリーリークを発見してくれます。

実際にプログラムを実行することなくバグを発見しようとする静的コード解析は、コードをビルドしてテストプログラムなどを実行するよりも迅速にバグを発見できる方法として期待されています。

Inferも、Facebookがより早く高い品質のソフトウェアをデリバリする目的で開発されたものです。下記はInferを発表したブログ「Open-sourcing Facebook Infer: Identify bugs before you ship」から。

Each month, hundreds of potential bugs identified by Facebook Infer are fixed by our developers before they are committed to our codebases and deployed to people's phones. This saves our developers many hours finding and fixing bugs, and results in better products for people.

毎月、何百ものバグ候補がInferによって指摘され、そのおかげでコードがコミットされて利用者のスマートフォンで利用される前に開発者が修正されている。これは開発者がバグを発見するための時間を何百時間と節約し、結果としてよりよい製品を届けることに役立っている。

バグの正答率80%

Inferは2013年にFacebookが買収したMonoidicsの技術がベースになっており、静的解析の技術としてSeparation logicbi-abductionと呼ばれる理論を用いていると説明されています。

Separation logic was a breakthrough for highly theoretical computer science — a new kind of mathematical logic used to describe mutations of computer memory (analogous to how Boolean logic describes circuits).

Separation logicは高度なコンピュータサイエンスにおけるブレイクスルーを実現した理論で、コンピュータのメモリの働きを置換表現する新種の数学的理論だ(ブーリアンロジックが回路を記述するのに相似する)。

バグの発見を支援してくれるのは便利ですが、もしもバグでないコードにもバグの可能性ありと報告してしまうと、開発者はあるはずもないバグを探すためにコードを調べなくてはならず、かえって開発者の仕事の効率を落としてしまうことになります。

それだけに静的解析ツールではバグ発見の精度が重要ですが、Facebookによると、Inferが指摘したバグ候補の80%が実際にバグとして修正されているとのことです。

It is important that these reports be high quality so that we help developers without slowing them down. In recent months, the fix rate for issues reported to our developers has been hovering around 80 percent, a high rate for such an automated tool.

開発者の開発スピードを落とさないためには、バグ報告の品質が高いことは重要だ。最近ではバグ報告に対して開発者が修正を行う割合は80%にまで浮上してきており、自動化ツールによって高い正答率を実現できている。

Facebookは今後、さらに静的コード解析を進化させていくと説明しています。

Program verification is an area with an active research community and promising technology. At Facebook, we have a saying that this journey is 1 percent finished.

プログラムの検証はリサーチコミュニティの活発かつ将来有望な分野です。Facebookでは、まだこの行程の最初の1%に到達したに過ぎないと言っています。

あわせて読みたい

ソフトウェアテスト・品質 プログラミング言語 開発ツール Facebook




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本