2025年4月5日
今週の活動
- 静的解析ツールの性能に関するレビュー論文を読んだ
- この論文では、6つの主要な静的解析ツールを比較する大規模な実証研究を行っており、Qualitas Corpusデータセットから47のJavaプロジェクトを分析し、各ツールの検出能力、ツール間の合意度、精度を評価している
- SonarQubeは6つの静的解析ツールのうち、最も多くのプログラミング言語をサポートしており、幅広い問題タイプを検出できるが、精度が18%と低く、偽陽性が多いという短所がある
- このサイトを作った
得られた成果
- 従来の静的解析ツールを用いた保守性低下兆候の検出手法との比較研究を行う際は、兆候を検出するまでにかかる時間だけでなく、偽陽性の割合(精度)や相対的な偽陰性の割合(相対再現率)も考慮する必要があることが分かった
- 特にコードの臭いなどのコーディング規約に依存する違反ルールは、データセットにコーディング規約の情報が含まれない場合に偽陽性と判定される可能性が比較的高いため、もしそのようなルールを考慮するならばそれらのルールをどのように扱うかを明確に定義する必要がある
- 偽陽性かどうかを機械的に判断するのは難しいため、手作業でのチェックが必須
- 予め偽陽性と判定されにくい指標を選んでおき、偽陽性かどうかを手作業でチェックする手間を少しでも減らしたい
- Qualitas CorpusというJavaプロジェクトのソースコードをまとめたデータセットは前処理がすでに完了しているため、調査や分析の初期段階で利用する価値があるかもしれない
直面した課題
- 静的解析ツールに組み込まれている違反ルールが数百種類もあるため、どのような指標を保守性低下指標とみなすかを整理する必要がある
- できれば前述したようにプロジェクト固有のコーディング規約に依存する曖昧な違反ルールを保守性低下指標から除外したい
来週の計画
- SonarQubeが検出する違反ルールをカテゴリーごとに整理し、保守性低下指標として利用できる違反ルールを明確にする
- Qualitas Corpusデータセットを用いる場合とGitHubのパブリックリポジトリをマイニングする場合における作業手順の複雑さや得られる情報を比較し、それぞれの長所と短所をまとめる
- 双方の長所と短所を基に、それらをどのように組み合わせてデータ分析を実施するかを決める