[修士論文] コーディング規約違反の推移に基づくソフトウェアの品質評価

小林グループ(名古屋大学)M2の高井さんが修士論文の発表を行いました.

論文題目:コーディング規約違反の推移に基づくソフトウェアの品質評価
論文概要:

ソフトウェア開発の現場では,ソフトウェアの品質向上のために,コーディング規約が用いられることが多い.コーディング規約とは,コーディングを行う上で守るべきルールである.コーディング規約は,ソースコードの可読性や保守性を向上させ,将来発生する可能性のある不具合を予防する目的で利用される.

コーディング規約の検査は,コーディングチェッカと呼ばれるコーディング規約違反を検出するためのツールを利用して行われる.しかし,コーディングチェッカでは違反を検出できないコーディング規約も存在している.コーディングチェッカで検出できないコーディング規約の違反を検出するためには,ソースコードを目視で確認する必要がある.人手によって目視でコーディング規約違反を確認することは高コストであり,コスト削減が必要である.また,コーディング規約違反は,可読性や保守性が低下していることを表しており,可読性や保守性の低下は,バグを引き起こす要因の一つである.このため,コーディング規約違反が集中して検出された部分には,バグが含まれる可能性が高い.

コーディング規約違反が集まっている関数やファイルを予測し,重点的に検査する事でコスト削減が期待できる.そこで,本研究では,コーディング規約違反に空間的局所性があるか調査し,重点的にコーディング規約違反をチェックする必要がある部分が存在するか調査する.さらに,バグフィックス時に修正されたコーディング規約違反と同時に発生したコーディング規約違反に着目し,バグ傾向が高いコードが含まれているか調査する.

本研究では,チェックするコーディング規約としてMISRA-C:1998のルールの一部を利用し,評価実験の対象としてTOPPERS/FMPカーネルを利用する.MISRA-C:1998は,組み込み向けに策定されたコーディング規約のセットである.
TOPPERS/FMPカーネルは,組み込み向けのリアルタイムカーネルである.881リビジョンに渡り,TOPPERS/FMPカーネルのコーディング規約違反をチェックし,ユニークコーディング規約違反を検出た後,コーディング規約違反の空間的局所性やバグとの関係を調査する.ユニークコーディング規約違反は,複数リビジョンに渡って修正されずに残っている同一のコーディング規約違反を一つのコーディング規約違反としてとらえたものである.

実験の結果,コーディング規約違反は特定のファイルに集中して発生することが多い事が分かった.また,コーディング規約によっては,特定の関数に集中して発生する事も分かった.さらに,いくつかのコーディング規約では,特定の他のコーディング規約違反が高い確率で近くに存在する事が分かった.これらの結果を踏まえ,コーディング規約違反とバグとの関係を調査した結果,バグフィックス時に修正されたコーディング規約違反と同時に発生したコーディング規約違反は,バグと関係があるコーディング規約違反である可能性が高い事が分かった.