ソフトウェア工学研究の日々

ソフトウェア工学の学術研究を紹介しています。ソフトウェア開発に関する調査と実験が大好きです。

静的解析ツールはデフォルト設定で使うと見逃しが多くもったいない

 ソフトウェア工学研究室D2の上田君がソフトウェア解析・進化に関する国際会議 SANER 2021 で、「Automatically Customizing Static Analysis Tools to Coding Rules Really Followed by Developers」(開発者が実際に従っているコーディングルールに合わせた静的解析ツールの自動設定)という論文を発表しました。以下が SANER チャンネルに公開されている発表動画です。

www.youtube.com

論文のコンセプトは単純で、以下の通りです。

  • コーディングエラーなどをチェックしてくれる ESLint のような静的解析ツールは、多数のルールを持っているが、デフォルトではそのごく一部しか有効でない。
  • そこで、開発者の現在のコードを見て、「現在守っているルール」を自動で有効に、守っていないルールを無効にするように、静的解析ツールの設定ファイルを自動で作ってくれるツールを作ってみた。
  • 開発者が、あるバージョンの時点で守っているルールを有効にすると、その後のバージョンで(実際には静的解析ツールなしで)修正されている警告を、かなり検知できるようになる。
  • 開発者が、あるバージョンの時点で守っていないルールを無効にすると、その後のバージョンで、やはり放置されたままの警告を、かなり出力から減らせるようになる。

 実際に「修正されている警告」は警告数の増減から推定したものなので、現実と多少の乖離がある可能性はありますので、本当の有効性は少し割り引いてみる必要があります。それでも、静的解析ツールのデフォルト設定では無効なルールが多く、ときどき違反して修正していると思われる問題を検知できるルールがあるのに使われていない勿体ない状態になっている、という点は示せたと考えています。

 この論文はショートペーパーでしたが、他のフルペーパー論文などに劣らず聴衆の興味を引いたようで、

  • ディレクトリごとにルールが違う場合は?
  • 特定の人がルールを守らない場合もあるのでは?
  • 警告を見せなくしてしまうことで、バグなどにつながる可能性はないか?

など、考慮すべき点について、多くの意見をもらいました。また、この論文では ESLint のみを対象にしているので、実験対象の拡張も必要です。論文投稿したときの査読者の1人から「こういう機能を実際に各ツールが標準で備えてもいいのでは」とアイディアに賛同する意見をもらったので、本当に静的解析ツールが備えるべき一機能としておすすめできるかどうかまで調べるところが、この研究のゴールとなりそうです。