開発者が明示した負債を、課題票から自動で見つける Finding developer-flagged debt, straight from the issue tickets
技術的負債を課題票で管理するプロジェクトは、まだ少ない。ならば、そうでないプロジェクトからも自動で拾えないか。 Few projects manage technical debt as issue tickets. So can we collect them automatically, even where they aren't labeled?
最良の vscode では P 0.995 / R 0.903 / F1 0.947。正例の少ないプロジェクトでは性能が下がる。 Best case (vscode): P 0.995 / R 0.903 / F1 0.947; performance drops for projects with few positives.
技術的負債(TD)は、短期的な利益と引き換えに長期的な問題を生む実装・設計です。開発者自身が明示的に管理する負債を SATD(Self-Admitted Technical Debt)と呼び、これはコード中のコメントで表される SATD-Comment と、課題管理システム上で管理される SATD-Issue に分けられます。SATD-Comment の研究は数多い一方、SATD-Issue はプロジェクトレベルで負債を管理する例が少なく、研究に使えるデータが不足していました。本研究は、この不足を解消する第一歩として、SATD-Issue を自動で見つける分類モデルを構築します。 Technical debt (TD) is implementation or design that yields short-term benefit while causing long-term problems. Debt developers manage explicitly is SATD (Self-Admitted Technical Debt), split into SATD-Comment (expressed in source-code comments) and SATD-Issue (managed in an issue tracker). SATD-Comment is well studied, but SATD-Issue suffers a data shortage because few projects manage debt at the project level. As a first step to resolve this, we build a model to classify SATD-Issues automatically.
3つのポイントThree takeaways
01まず特徴を突き止めるCharacterize first
メタデータ・課題票・コードにわたる特徴量を定量分析し、SATD-Issue を他の課題票と分ける有効な特徴を特定しました。A quantitative analysis over metadata, issue, and code features identifies which features separate SATD-Issues from other tickets.
02高精度で分類できるHigh-precision classifier
特定した特徴で分類モデルを構築したところ、最良で Precision 0.995・Recall 0.903・F1 0.947 を達成しました。A model built on those features reaches, at best, Precision 0.995, Recall 0.903, and F1 0.947.
03データ不足を埋める道具にA tool against data scarcity
負債を明示的に管理していないプロジェクトからも SATD-Issue を収集できる可能性を示し、今後の研究基盤を広げます。It suggests SATD-Issues can be collected even from projects that don't explicitly manage debt, broadening the basis for future research.
研究の進め方The study in four steps
課題票の収集Collect issues
負債を管理する4つのOSS(vscode・influxdb・saleor・nextcloud/server)から課題票を収集。Gather issues from four OSS projects that manage debt (vscode, influxdb, saleor, nextcloud/server).
特徴づけCharacterize
メタデータ・課題票・コードの特徴量を有意差と効果量で分析。Analyze metadata, issue, and code features by significance and effect size.
モデル構築Build model
有効な特徴量とテキスト表現(TF-IDF)で SVM 分類器を学習。Train an SVM using effective features and text representations (TF-IDF).
評価Evaluate
Precision・Recall・F1 で分類性能を評価。Assess performance with Precision, Recall, and F1.
なぜ重要かWhy it matters
SATD-Issue の研究は、そもそも「負債を課題票として管理しているプロジェクトが少ない」というデータ不足に阻まれてきました。本研究の分類モデルは、明示的に管理していないプロジェクトからも SATD-Issue を掘り起こす手段を与え、負債の分類・返済といった後続研究の土台を広げます。 Research on SATD-Issues has been blocked by data scarcity: few projects manage debt as tickets. This classifier offers a way to surface SATD-Issues even from projects that don't, widening the foundation for downstream work on classifying and repaying debt.
分析の要点Method notes
- 対象:vscode・influxdb・saleor・nextcloud/server の課題票。Targets: issues from vscode, influxdb, saleor, and nextcloud/server.
- 特徴量:メタデータ・課題票・コードの各特徴に加え、
TF-IDF/BoW のテキスト表現。多重共線性は VIF で除去。Features: metadata, issue, and code features plusTF-IDF/BoW text; multicollinearity removed via VIF. - 公開:再現用コードを GitHub(kyuta8/SATDIssueClassification)で公開。Open: reproduction code on GitHub (kyuta8/SATDIssueClassification).
背景・手法・全結果を詳しくBackground, method, and full results
データセット、特徴量、分類性能とアブレーションまでを解説した詳細ページがあります。A detailed page covers the dataset, features, and the performance and ablation results.