#author("2020-10-11T19:49:28+00:00","","") #author("2020-10-11T19:59:45+00:00","","") [[木村/Research Subject]] * Technical Debt [#h003f002] **Research Memo [#icc9891c] - Issue で TD(Technical Debt) を扱っているプロジェクトの抽出 -- Rest API を使って,スター数から上位5000プロジェクトを抽出 -- 各プロジェクトで扱っている Issue ラベルを収集 -- Technical Debt に関連するラベルを含むプロジェクトを抽出 - Issue で扱われているトピックを分析・分類 -- 自動分類を行った時に,False Positive となった Issue を理解するため - 自然言語処理・機械学習を用いて,TD に関連する Issue を自動分類 - 関数のトピック化 -- Issue の内容とその Issue をもとに変更された箇所を学習させれば,Issue から修正対象コードの位置が推定できる? ***Technical DebtとBugやCode Smellとの違いとは? [#a2c6d248] - Technical DebtのラベルがついたIssueとTechnical DebtのラベルがついていないIssueをそれぞれTD-IssueとNon-TD-Issueと暫定的に定義する - Commit MessageからIssue IDを抽出しFixing CommitとIssueの紐付けを行う - さらに,Commit Guruを用いて,Fixing Commitの修正対象CommitであるInducing Commitを抽出し,Fixing CommitとInducing Commitの紐付けを行う -- (紐付けのイメージ) Issue - Fixing Commit - Inducing Commit - TD-Issueと紐づいたInducing CommitをTD-Code,Non-TD-Issueと紐づいたInducing CommitをNon-TD-Codeと暫定的に定義する - TD-CodeとNon-TD-Codeの比較を行う -- 変更量,複雑度,変更ファイルの種類(コーディング規約など),Fan-In,Fan-Outなど -- (検討)変更ファイル数,他になにがあるかわからん... - TD-Codeと Non-TD-Codeに違いがなかった場合 -- Issueのラベルに基づいてTD-CodeとNon-TD-Codeをさらに細分化し比較を行う -- (例)UIのTD-CodeとNon-TD-Codeの比較