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%に到達したに過ぎないと言っています。

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : Facebook , ソフトウェアテスト , 開発ツール



≫次の記事
「進捗どうですか?」と聞かれなくて済む、カンバンとGitで始める進捗管理を自動化する方法[PR]
≪前の記事
「ASCIIDWANGO(アスキードワンゴ)」ブランドの第一弾書籍、クヌース氏の名著「The Art of Computer Programming」が6月26日発売へ

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


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



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus