学習型推論によるデータフロー解析の強化

動的に型付けされたコードの静的解析は、コンパイル時にオブジェクトの型がわからないと、手続き呼び出しのターゲットを決定するなど、一見単純なタスクですら難易度が高くなるため、挑戦的な課題となっています。この課題に対処するために、逐次型付け(gradual typing)が動的に型付けされた言語に徐々に追加されています。代表的な例として、JavaScriptに静的型付けを導入したTypeScriptがあります。逐次型付けはプログラムの動作を検証する開発者の能力を向上させ、堅牢で安全かつデバッグしやすいプログラムへの貢献が期待されています。しかし実際には、ユーザーが直接型アノテーションを付けることは稀であり、従来の型推論はプログラムサイズが増えるにつれて性能に関連する課題に直面しています。機械学習に基づく統計的手法はより高速な推論を提供しますが、最近の手法でもユーザー定義型に対する精度は最も一般的な組み込み型よりも著しく低いままです。さらに、これらの手法はユーザーフェイスアプリケーションとの統合があまり行われていないため、実世界での有用性が制限されています。そこで我々はCodeTIDAL5というTransformerベースのモデルを提案します。このモデルは信頼性のある型アノテーション予測のために訓練されており、効果的な結果取得と再統合のためにプログラムのコードプロパティグラフから使用スライスを抽出します。我々の手法を最近のニューラルネットワークによる型推論システムと比較したところ、ManyTypes4TypeScriptベンチマークにおいて現行最高峰の手法に対して7.85%上回る精度(全体で71.27%)を達成しました。さらにJoernTIというツールを開発し、Joernというオープンソース静的解析ツールに我々の手法を統合しました。この解析ツールは追加された型情報によって恩恵を受けていることを示しています。また、我々のモデルは一般用途CPUでも高速な推論時間を実現できるため、Joernを通じてシステムを利用可能にする事で高いアクセシビリティが得られ、セキュリティ研究も容易になります。