Developers often search for reusable code snippets on general-purpose web search engines like Google, Yahoo! or Microsoft Bing. But some of these code snippets may have poor quality in terms of readability or understandability. In this paper, we propose an empirical analysis to analyze the readability and understandability score from snippets extracted from the web using three independent variables: ranking, general-purpose web search engine, and recommended site. We collected the top-5 recommended sites and their respective code snippet recommendations using Google, Yahoo!, and Bing for 9,480 queries, and evaluate their readability and understandability scores. We found that some recommended sites have significantly better readability and understandability scores than others. The better-ranked code snippet is not necessarily more readable or understandable than a lower-ranked code snippet for all general-purpose web search engines. Moreover, considering the readability score, Google has better-ranked code snippets compared to Yahoo! or Microsoft Bing
academic 論文ID : 2110.07087タイトル : Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study著者 : Carlos Eduardo C. Dantas, Marcelo A. Maia分類 : cs.SE(ソフトウェアエンジニアリング)発表時期/会議 : AeSIR '21, 2021年11月15–11日論文リンク : https://arxiv.org/abs/2110.07087 開発者はGoogle、Yahoo!、Microsoft Bingなどの一般的なサーチエンジンで再利用可能なコードスニペットを頻繁に検索しています。しかし、これらのコードスニペットは可読性または理解可能性の面で品質が低い可能性があります。本論文は、3つの独立変数(ランキング、一般的なサーチエンジン、推奨ウェブサイト)を使用して、ウェブから抽出されたコードスニペットの可読性と理解可能性スコアを分析する実証的分析を提案しています。研究では、Google、Yahoo!、Bingが9,480個のクエリに対して推奨した上位5つのウェブサイトとそれに対応するコードスニペット推奨を収集し、それらの可読性と理解可能性スコアを評価しました。研究の結果、特定の推奨ウェブサイトが可読性と理解可能性スコアの面で他のウェブサイトを大幅に上回ることが判明しました。ランキングが高いコードスニペットが、すべての一般的なサーチエンジンでランキングが低いコードスニペットよりも必ずしも可読性または理解可能性が高いわけではありません。さらに、可読性スコアの面では、GoogleはYahoo!またはMicrosoft Bingよりもコードスニペットのランキングが優れています。
中核的な問題 : 一般的なサーチエンジンが推奨するコードスニペットは可読性と理解可能性の面で品質にばらつきがあり、ランキングが高いコードスニペットが必ずしも品質が高いわけではない実際のニーズ : 開発者は広くコード例を見つけるために一般的なサーチエンジンを使用していますが、これらのコードスニペットの品質の体系的な評価が不足しているサーチエンジンの制限 : Googleは200以上のランキング要因を持っていますが、ランキングが高いページには品質の低いコード例が含まれている可能性がありますコードスニペットの再利用はプログラミングタスクの時間を短縮し、開発プロセスを加速できます Googleはサーチエンジン市場シェアの90%以上を占めていますが、他のサーチエンジンのコード品質ランキング状況は不明です 可読性と理解可能性の相互関係を理解する必要があります:可読性は構文理解に関連し、理解可能性はセマンティック側面に関連しています 論文はHoraの研究事例を引用しています:Googleで「File.mkdirs examples」を検索する場合、Tutorialspointのコードスニペットは可読性と再利用性の指標が低いにもかかわらず、クエリと同様の自然言語説明を含むため、ランキングが高くなります。
初の体系的比較研究 : Google、Yahoo!、Microsoft Bingの3つの主要なサーチエンジンが推奨するコードスニペットの可読性と理解可能性の大規模比較分析大規模データセット構築 : 9,480個のクエリの47,400個のウェブページリンクを収集し、5,355の異なるウェブサイトをカバー多次元分析フレームワーク : ランキング、サーチエンジン、推奨ウェブサイトの3つの独立変数に基づく分析方法を提案実証的発見 : 2つの重要な仮説を確認:ランキングが高いコードスニペットが必ずしも高い可読性/理解可能性を持つわけではない;異なる推奨ウェブサイト間でコード品質に大きな差がある理解可能性メトリクスの標準化 : 認知複雑度を0,1 区間に変換する標準化方法を提案入力 : プログラミング関連のクエリステートメント
出力 : コードスニペットの可読性と理解可能性スコア
制約 : Javaプログラミング言語のコードスニペットのみを分析し、上位5つの検索結果を考慮
研究は5段階の方法を採用しています:
入力クエリの選択 : CROKAGEツールから10,000個のユーザークエリを収集上位nウェブページの収集 : Google、Yahoo!、Bingの上位5つの推奨ウェブページを取得コードスニペットの抽出 : 選定されたウェブサイトからJavaコードスニペットを抽出指標の計算 : 可読性と理解可能性スコアを計算分析方法 : ANOVAとTukey検定を使用して統計分析を実施クエリ修正:「example in java」タグを追加してJavaコード例を取得 ウェブサイト選択:5つの最も人気のあるウェブサイトに焦点を当てた分析
StackOverflow : 受け入れられた回答からJavaコードスニペットを抽出その他のウェブサイト : HTMLタグ内で「example」と「Java」を含むソースコードを検索するために正規表現を使用可読性メトリクス :
Scalabrino等が提案した予測モデルを使用 コメント、識別子の一貫性、テキストの一貫性、意味の数、概念などの指標を含む 出力範囲:0,1 、0は低可読性、1は高可読性を表す 理解可能性メトリクス :
Campbellが提案した認知複雑度に基づく 標準化公式: understandability(cs_i) = {
1 - #cc/#mcc if #cc < 15
0.0 otherwise
}
ここで#ccは認知複雑度値、#mcc=15は推奨最大値
クエリソース : 80以上の国からのユーザークエリ、CROKAGEツール由来データ規模 : 9,480個の有効なクエリ、47,400個のウェブページリンクウェブサイトカバレッジ : 5,355の異なるウェブサイト言語制限 : Javaプログラミング言語のみ統計分析 : 分散分析(ANOVA)、信頼水準5%(p値<0.05)多重比較 : Tukey検定を使用してグループ間の有意な差を特定グループ設計 :
サーチエンジン:3グループ(Google、Bing、Yahoo!) ランキング:5グループ(top-1からtop-5) ウェブサイト:5グループ(選定された5つのウェブサイト) 重複クエリと手動でマークされた不適切なクエリを削除 5未満のウェブページ推奨を持つクエリをフィルタリング HTMLタグからリンクを抽出するために正規表現を使用 ANOVA結果 : 可読性p値=0.0034、理解可能性p値=0.0003主要な発見 : Top-2コードスニペットは可読性と理解可能性の面でTop-1、Top-4、Top-5全体を上回る効果サイズ : 小さい(可読性-0.02~0.01、理解可能性-0.01~0.02)結論 : 仮説H1を確認、ランキングが高いコードスニペットが必ずしも可読性または理解可能性が高いわけではないANOVA結果 : 可読性p値=1.207e-12、理解可能性p値=0.0364可読性ランキング : Google > Microsoft Bing > Yahoo!理解可能性 : GoogleはMicrosoft Bingをわずかに上回る効果サイズ : 小さい効果(可読性-0.02~0.02、理解可能性-0.01~0.005)ANOVA結果 : 可読性と理解可能性のp値は両方とも<2.2e-16可読性最高 : geeksforgeeks理解可能性最高 : tutorialspoint効果サイズ : 可読性中程度の効果(-0.15~0.10)、理解可能性小さい効果(-0.04~0.08)GeeksforGeeksが最高のパフォーマンスを示す理由:
各行のコードに1つのコメントが付属 高い凝集性、各概念が独立している 例:「How to append to a string?」クエリ
GeeksforGeeks: 可読性スコア0.94 Tutorialspoint: 可読性スコア0.44 58.3%のコードスニペットが最大理解可能性スコアに達する ほとんどのコードスニペットは単純なAPI呼び出しで、複雑な制御構造がない このメトリクスはGitリポジトリのようなファイルに対してより適切であることを提案 Hora(2021) : Googleが可読性と再利用性の特性に基づいてコードスニペットをランキングする方法を研究Scalabrino等 : コード可読性予測モデルを提案BuseとWeimer : コード可読性メトリクスの学習API Sonarツール : 可読性特性を使用してコードスニペットをランキングMuseメソッド : 可読性特性を使用してコード例をランキングCROKAGE : StackOverflowからコードスニペットと説明を抽出するコード検索エンジンTreudeとRobillard : StackOverflowのコードスニペットの49%のみが完全に自己説明的であることを発見認知複雑度 : Campbellが提案した理解可能性メトリクス方法ランキングのパラドックス : サーチエンジンランキングはコード品質と完全に相関しておらず、Top-2およびTop-3のコードスニペットの品質がより高い可能性がありますサーチエンジンの差異 : Googleは可読性の面で最高のパフォーマンスを示していますが、利点は限定的ですウェブサイト品質の分化 : 推奨ウェブサイト間に大きな品質差があり、チュートリアルウェブサイト(GeeksforGeeks)の可読性がより優れています理解可能性の制限 : 現在の理解可能性メトリクスは単純なコードスニペットの区別度が限定的です開発者ガイダンス : GeeksforGeeksなどのチュートリアルウェブサイトのコードスニペットを優先的に検討することを推奨検索戦略 : ランキングのみに基づいてコードスニペットを選択すべきではなく、品質メトリクスを総合的に考慮する必要がありますツール改善 : コード検索エンジンに品質評価の参考基準を提供ウェブサイトカバレッジの限定 : 5つのウェブサイトのみを分析し、推奨ウェブサイトの34~38.1%を占める抽出戦略 : 各ウェブページから最初のコードスニペットのみを抽出クエリ修正の影響 : 「example in java」を追加することが検索結果に影響を与える可能性がありますメトリクスの精度 : 可読性と理解可能性ツールにエラーが存在する可能性があります定性的研究 : 可読性と理解可能性スコアの差異の原因をより深く理解する研究の拡張 : より多くのウェブサイトを含めるか、汎用的なコード抽出方法を開発多言語対応 : 他のプログラミング言語に拡張複数コードスニペット処理 : 単一ページ内の複数コードスニペットを処理するヒューリスティック方法を開発研究の新規性 : 主流のサーチエンジンのコードスニペット品質を初めて体系的に比較データ規模 : 大規模な実証研究、データ量が十分で結論の信頼性が高い方法の厳密性 : 成熟した統計分析方法を使用し、結果は統計的に有意実用的価値 : 開発者がコードスニペットを選択する際に実証的なガイダンスを提供再現性 : 完全な再現パッケージと詳細な方法説明を提供メトリクスの制限 : 理解可能性メトリクスは単純なコードスニペットの区別度が不足ウェブサイト選択バイアス : 5つの主流ウェブサイトのみを分析し、選択バイアスが存在する可能性言語制限 : Javaプログラミング言語のみを考慮し、汎化性が限定的時間的有効性 : 検索結果には時間的有効性があり、結論は時間とともに変わる可能性があります学術的貢献 : コード検索とソフトウェアエンジニアリング研究に新しい視点を提供実践的ガイダンス : 開発者のコード検索行動に直接影響を与えるツール改善 : サーチエンジンとコード推奨システムの最適化に根拠を提供後続研究 : 関連分野の研究の基礎を確立ソフトウェア開発者がコード検索を行う際の品質評価 コード検索エンジンのランキングアルゴリズムの最適化 プログラミング教育におけるコード例の品質管理 ソフトウェアエンジニアリング研究におけるコード品質分析 論文は23の関連文献を引用しており、主に以下を含みます:
コード可読性と理解可能性メトリクス方法 コード検索と推奨システム研究 StackOverflowコード品質分析 サーチエンジンランキングメカニズム研究 総合評価 : これは高品質な実証的ソフトウェアエンジニアリング研究論文であり、コード検索品質評価研究の空白を埋め、重要な理論的価値と実践的意義を持っています。研究方法は科学的で厳密であり、データ規模は十分で、結論の信頼度は高く、開発者と研究者に価値のある洞察を提供しています。