Stack Overflow Java API Software Engineering Laboratory Department
Stack Overflowに投稿された Java APIを含むコード片の有効性の 調査 井上研究室 西村広太郎 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Stack Overflow • プログラマのためのQ&Aサイト – 投稿例 コード片 タグ 2 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
関連研究 • Subramanianらによる研究[1] – SOの投稿データに含まれるAPIに関連情報のリ ンクを挿入するツールの開発 • Ahasanuzzamanらによる研究[2] – 機械学習を用いて投稿文からAPIに関連する投 稿を判定し分類する研究 [1] S. Subramanian, L. Inozemtseva, and R. Holmes. Live API documentation. In: Proc. ICSE '14, pages 643 --652, 2014. [2] Ahasanuzzaman M, Asaduzzaman M, Roy CK, and Schneider KA. Classifying Stack Overflow posts on API issues. In: 25 th international conference on software analysis, evolution and reengineering (SANER), pp 244– 254, 2018 4 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
SOTorrent[3] • SOのデータダンプを基に作成されたデータセ ット – 2008年 7月から2019年 6月までのデータ • 公式のデータダンプを解析しやすいよう加 – テキストブロックとコードブロックの識別 [3] S. Baltes, C. Treude, and S. Diehl. SOTorrent: Studying the Origin, Evolution, and Usage of Stack Overflow Code Snippets. Proceedings of the 16 th International Conference on Mining Software Repositories (MSR 2019) , pp 191 -194, 2019 9 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
調査手法 • Step 1 : APIデータベース構築 • Step 2 : コード片抽出・解析 • Step 3 : API照合 10 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Step 1 : APIDB構築 • Git. Hubに存在するライブラリのリポジトリから API抽出 • 各バージョンのリリース日、メソッド名、引数の 数と型を登録 ライブラリ リポジトリ Ver 1. 2 2016 -01 -01 Ver 1. 1 2015 -07 -01 Lib. a(); Ver 1. 0 2015 -01 -01 Lib. a(); Lib. b(); API抽出 Lib. get. Lib. b(); Lib. c(); … (int); Lib. change … Lib. compare(int, int); … DB登録 APIDB 11 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Step 2 -1 : コード片抽出 • SOTorrentのデータセットからコード片を抽出 – タグにJavaを含むもの – タイトル、本文、タグのいずれかにライブラリ名を 含むもの 12 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Step 2 -2 : コード片解析 • 抽出したコード片をJava. Parserを用いて解析 – コード片に含まれるAPIの抽出 – Java. Parserで解析不能なコード片の加 • 多くの場合クラスの情報が抜けているため付与 13 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
調査結果 • 5種類のライブラリについて調査 – コード片に含まれるAPIがライブラリの最新バー ジョンでも使用可能なものは多い ライブラリ名 ライブラリに 関連するコード片数 APIを含む コード片数 有効な コード片数 有効でない コード片数 Guava 11, 032 808 777 31 Javamail 8, 863 1, 156 0 Jsoup 10, 990 1, 838 0 SLF 4 J 25, 025 1, 364 0 Twitter 4 J 1, 603 149 0 15 Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
- Slides: 17