Iconnrysk

リポジトリマイニング研究におけるデータソース

Warning

私は研究生であり、リポジトリマイニングの専門家ではありません。 本記事では、私が調査できた範囲でのデータソースを紹介します。 記事の内容は、随時更新していく予定です。

はじめに

リポジトリマイニングとは、ソフトウェアリポジトリに蓄積された膨大な開発履歴からデータの抽出及び分析を行う研究分野です。 これにより、ソフトウェア開発の実態や傾向を明らかにし、開発プロセスの改善や品質向上に寄与することが期待されています。

リポジトリマイニング研究では、データソースの選定が非常に重要になってきます。 これは研究の再現性や複製可能性を向上させ、研究成果の信頼性を高めることに繋がります。 しかし、データセットの構築にはいくつかの課題があり、適切な研究を行うことが難しい場合が多いです。

妥当性の脅威

多くの研究で、データソースの選定が妥当性の脅威として指摘されています。 例えば、以下のような問題があります。

妥当性の脅威
特定のプログラミング言語Javaのみ、C++のみ
特定のドメインWebアプリケーションのみ、モバイルアプリケーションのみ
誤ったラベルの付与SZZアルゴリズムの使用、ヒューマンエラー
少ないデータ量100件未満のコミット数
妥当でないプロジェクト選定1年未満のプロジェクト、100件未満のスター数

データ収集の困難性

複数サービスのデータ収集・統合

リポジトリマイニング研究では、ソフトウェア開発を取り巻く様々なデータが分析の対象となります。 例えば、GitHubやGitLabなどのリポジトリ管理サービス、JIRAやRedmineなどの課題追跡システム、SlackやDiscordなどのコミュニケーションツールなどです。 これらのデータを分析するためには複数のサービスからデータを収集し、それを正しく対応付ける必要があります。

サービス
リポジトリ管理GitHub, GitLab, Bitbucket
課題追跡JIRA, Bugzilla, Redmine
コードレビューGitHub Pull Requests, Gerrit
コミュニケーションSlack, Discord, mailing list
CI/CDGitHub Actions, Travis CI, CircleCI
ドキュメント管理Wiki, Notion

GitHubAPIの制限

GitHubは広く利用されているコードホスティングサービスであり、リポジトリマイニング研究においても重要なデータソースです。 また、GitHubは課題追跡やコードレビュー、CI/CDなどを統合した開発プラットフォームであり、データ収集を効率的に行うことができます。

GitHubは開発履歴を取得するためのAPIを提供しており、これを利用することでリポジトリのコミット履歴やプルリクエスト、イシューなどのデータを取得できます。 しかし、GitHubAPIには1時間あたり5000件リクエスト(認証済みの場合)までという制限があります。 これにより、大規模な調査や試行錯誤の実験が困難になります。

データソースの選定

リポジトリマイニング研究においては、既存のデータセットを利用することも一つの方法です。 しかし、必要なデータや特定の条件を満たすデータセットが見つからない場合もあります。 ここでは、考えられる選択肢をいくつか紹介します。

🚧 執筆途中 🚧

GitHubAPI

GitHubAPIはRest APIGraphQL APIの2種類が提供されています。

vercel/next.jsの最新のプルリクエストのタイトルを取得する例
Rest API
> gh api -X GET '/repos/vercel/next.js/pulls?per_page=1' --jq '.[0].title'
# Output
Update Rspack production test manifest
GraphQL API
> gh api graphql -f query='
query {
    repository(owner: "vercel", name: "next.js") {
        pullRequests(last: 1) {
            edges {
                node {
                    title
                }
            }
        }
    }
}' --jq '.data.repository.pullRequests.edges[0].node.title'
# Output
Update Rspack production test manifest

GHTorrent

GHTorrentは、論文GHTorrent: GitHub's data from a firehoseで提示されたGitHubのデータセットです。

Caution

現在GHTorrentは利用できない様です。

GHArchive

🚧 要検証

toxicity dataset

gigawork

GHS

SmartSHARK

Icon

nrysk

情報工学を学ぶ大学院生

大阪

京都工芸繊維大学

情報工学

ソフトウェア工学