ニーズ

バグは、ソフトウェア開発において確実に存在します。 開発ライフ サイクルにおいてバグが見つかるのが遅ければ遅いほど、修正するコストがより高くなります。 デプロイ後に不具合が見つかると顧客に影響が及び、開発者は問題を再現するのに多くの時間を費やしてから修正プログラムを発行します。 このようなバグ - デプロイ - 分析 - 修正といったプロセスには、時間とコストがかかります。

アイデア

ソフトウェア プロジェクトのコード ベースの特定のパターンは、バグを引き起こすリスクを高めます。 これらのパターンは分類学習アルゴリズムによって学習でき、ファイルにバグがある可能性を予測できます。 これにより、不具合の早期発見が可能になり、バグ修正のコストを最小限に抑えることができます。

ソリューション

カスタム分類モデルが、過去のコミットに関連付けられたメタデータに基づいて、GitHub プロジェクト用に作成されています。 Code Defect AI が新しい開発者のコミットを検出すると、コミット内のファイルに欠陥のリスクがあるかどうかを予測します。 予測の背後にある根拠は Local Interpretable Model-Agnostic Explanations (LIME) を使用して提示されるため、開発者は予測を信頼して学ぶことができます。

Code Defect AI 実験の技術的詳細

機械学習の教師あり学習により、アルゴリズムは入出力ペアの履歴例、つまりラベル付きデータに基づいて出力を予測できます。 出力変数が離散変数である場合、教師あり学習は分類問題と呼ばれます。 ソフトウェア プロジェクトのコード ベースの特定のパターンは、バグを引き起こすリスクを高めます。 たとえば、新しい開発者が以前からバグの発生率が高いファイルに変更を加えている場合、コミットには複数のディレクトリにまたがるファイルが含まれるか、コードの更新がファイルの複数の領域に分散されます。 これらのパターンは分類学習アルゴリズムによって学習でき、コミットのファイルにバグがある可能性を予測できます。 これにより、不具合発見の左シフトが可能になり、不具合修正のコストを最小限に抑えることができます。

3 つのカスタム分類モデルは、履歴コミットに関連付けられたメタデータに基づいて、3 つの GitHub プロジェクト用に作成されています。 モデルをトレーニングするためのラベル付きデータは、GitHub リポジトリから収集されたメタデータを使用して作成されています。 Code Defect AI は、新しい開発者のコミットを検出すると、各コミットとコミット内ファイルのメタデータを取得します。 次に、プロジェクト固有のモデルを使用して、コミット内のファイルのいずれかにバグが発生するリスクがあるかどうかを予測します。 従来の機械学習モデルはブラック ボックスであり、モデルの予測の裏付けに根拠はありません。 ユーザーが予測に対して信頼をより高めることができるように、Local Interpretable Model-Agnostic Explanations (LIME) を使用して予測の裏付けの根拠を示します。

リソース:

Code Defect AI に関連するプロジェクト

その他のプロジェクトを見る