コードジンのヘッダーが入ります
コベリティの安竹由起夫氏はまず、静的解析には誤検知がつきものであり、誤検知との戦いだった、と語りはじめた。しかし、それは過去のことである。誤検知を無くすためのさまざまなテクニックにより、検知の精度のスピードも向上している。
ただし、そうやって見つかった問題点を直すのはあくまで人間であり、どう問題を管理して直すかが次の課題となっている。現状ではまだ向上したエンジンを活かしきれていない。
そこでコベリティはいま、コード不具合に対するチャレンジとして「リスク」と「影響の範囲」に注目している。つまり、不具合を早く修正する方法や、不具合の修正を確認する方法などと並んで、新しい不具合のリスクを判定することや、その不具合が製品やビジネスに与える影響の範囲を見定めることを重視している。
不具合のリスクと影響範囲を設定することは、最終的には問題の「優先度」につながるという。静的解析技術の上に、優先度の高い不具合を迅速に識別し、解決するステップを構築することが、不具合のインパクトを軽減することにつながる。
ビジネスに影響を与える不具合を、どのように特定すればよいのだろうか。一言に問題といってもさまざまな局面がある。機能要求が満たされていないといった不具合から、ユーザビリティやパフォーマンスに関する問題もある。実際にこういった不具合ならばこれくらいのリスクがあるということを設定するにはどうすればよいのだろうか。
コベリティが提案しているのは、非営利団体のMITREが中心となって1999年ごろから策定された「CWE(Common Weakness Enumeration)」仕様の利用である。2006年3月に最初の原案が公開され、その後は多くのベンダーや研究機関の協力によって日々進化しており、2009年12月28日にバージョン1.7が公開されている。
CWEは、例えばIPAのセキュリティ基準などよりもっと広い範囲の問題・リスクをカテゴライズしており、サンプルコードや対応方法も書かれている。659の不具合を106のカテゴリで分類し、特定のプログラミング言語に依存する問題、依存しない問題、開発者向けの問題、リサーチャー向けの問題といったように、閲覧者の目的に応じた「VIEW」で情報をフィルタリングすることもできる。
プロジェクトメンバーが共通の認識に立って、このCWEをベースにリスク設定を行うことで、確実な優先度を漏れなく判定できる。
静的コード解析ツールをベースとして不具合のインパクトを軽減するには、次の5ステップの手順を実現する。まず「静的解析(Scan)」にはじまり、「リスク設定(Find)」「インパクト分析(Map)」「優先度の高い不具合の修正(Fix)」「不具合修正状況の把握(Report)」と続く。
Coverity 5では、共通のフローやパスから不具合を探し、コードに潜む見つけにくい不具合を高精度に検知することができる。製品内でコードを流用している場合にも、問題が起きる可能性があるコードと、問題が解消されているコードを識別できる。
このようにリスクの度合いを自動的に通知し、CWEガイダンスに基づいて優先度の高い不具合を迅速に識別することができる。膨大に検出される静的解析結果がはじめて本当に有効活用されるようになってきたと言えるかもしれない。
なお、コベリティでは無料トライアルも実施している。