開発者が明示した負債を、課題票から自動で見つける 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?

分類モデルの性能(最良)Classifier performance (best) 0 › 1.0
Precision 0.995
Recall 0.903
F1 0.947

最良の 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.

4
OSSプロジェクトOSS projects
0.995
Precision(最良)Precision (best)
0.903
Recall(最良)Recall (best)
0.947
F1(最良)F1 (best)

技術的負債(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.

SATD-Comment
個々の開発者がコード中のコメントとして残す負債の痕跡。A trace of debt left by an individual developer as a source-code comment.
SATD-Issue
課題管理システム上で、プロジェクトとして管理される負債の課題票。本研究の対象。A debt issue managed at the project level in an issue tracker. The target of this study.

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

1

課題票の収集Collect issues

負債を管理する4つのOSS(vscode・influxdb・saleor・nextcloud/server)から課題票を収集。Gather issues from four OSS projects that manage debt (vscode, influxdb, saleor, nextcloud/server).

2

特徴づけCharacterize

メタデータ・課題票・コードの特徴量を有意差と効果量で分析。Analyze metadata, issue, and code features by significance and effect size.

3

モデル構築Build model

有効な特徴量とテキスト表現(TF-IDF)で SVM 分類器を学習。Train an SVM using effective features and text representations (TF-IDF).

4

評価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 plus TF-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.

研究の詳細ページへGo to the in-depth page