Skip to main content
QUICK REVIEW

[論文レビュー] Debugging Static Analysis

Lisa Nguyen Quang, Stefan Krüger|arXiv (Cornell University)|Jan 15, 2018
Software Testing and Debugging Techniques参考文献 17被引用数 3
ひとこと要約

本論文では、静的データフロー解析のためのEclipse統合デバッグ環境であるVisuflowを紹介する。この環境により、解析コードとターゲットプログラムコードの両方を同時に可視化し、ステップ実行することが可能になる。ユーザースタディーの結果、Visuflowは標準のEclipseデバッグと比較して、25%多くのバグを特定し、50%多くのエラーを修正できることが示された。

ABSTRACT

To detect and fix bugs and security vulnerabilities, software companies use static analysis as part of the development process. However, static analysis code itself is also prone to bugs. To ensure a consistent level of precision, as analyzed programs grow more complex, a static analysis has to handle more code constructs, frameworks, and libraries that the programs use. While more complex analyses are written and used in production systems every day, the cost of debugging and fixing them also increases tremendously. To better understand the difficulties of debugging static analyses, we surveyed 115 static analysis writers. From their responses, we extracted the core requirements to build a debugger for static analysis, which revolve around two main issues: (1) abstracting from two code bases at the same time (the analysis code and the analyzed code) and (2) tracking the analysis internal state throughout both code bases. Most current debugging tools that our survey participants use lack the capabilities to address both issues. Focusing on those requirements, we introduce VisuFlow, a debugging environment for static data-flow analysis that is integrated in the Eclipse development environment. VisuFlow features graph visualizations that enable users to view the state of a data-flow analysis and its intermediate results at any time. Special breakpoints in VisuFlow help users step through the analysis code and the analyzed simultaneously. To evaluate the usefulness of VisuFlow, we have conducted a user study on 20 static analysis writers. Using VisuFlow helped our sample of analysis writers identify 25% and fix 50% more errors in the analysis code compared to using the standard Eclipse debugging environment.

研究の動機と目的

  • 静的解析開発者が自らの解析をデバッグする際に直面する主な課題を特定すること。
  • 既存のデバッグツールが静的解析開発の独自要件を満たすために抱える制限を理解すること。
  • 静的データフロー解析に特化したデバッグ環境を設計・評価すること。
  • 強化されたデバッグ支援が、静的解析開発の効率性と有効性を向上させることを実証的に検証すること。

提案手法

  • 115名の静的解析開発者を対象とした大規模なアンケート調査を実施し、一般的なデバッグの課題、使用ツール、望ましい機能を特定した。
  • 主なデバッグの課題として、2つのコードベース(解析コードとターゲットコード)の管理、および両方のコードベースにおける解析の内部状態の追跡を特定した。
  • 解析コードとターゲットプログラムコードの両方を同期的に可視化し、特別なブレークポイントを備えたEclipseプラグイン「Visuflow」を設計した。
  • Javaベースのデータフロー解析をサポートするために、SootフレームワークとVisuflowを統合した。
  • 20名の静的解析開発者を対象とした制御されたユーザースタディーを実施し、Visuflowと標準のEclipseデバッグを比較した。
  • エラー検出率・修正率、使いやすさ、機能の好みに関する定量的および定性的なデータを収集・分析した。

実験結果

リサーチクエスチョン

  • RQ1静的解析開発者が自らの解析をデバッグする際の主な課題は、一般のアプリケーションコードのデバッグと比べてどのような点にあり、どのような違いがあるか?
  • RQ2静的解析開発において最も望ましく、かつ効果的なデバッグ機能は何か?
  • RQ3Visuflowのような特化型デバッグ環境は、標準のIDEデバッグと比較して、どのような点で有効性と効率性に優れているか?
  • RQ4Visuflowのどの具体的な機能が、デバッグの成果向上に最も寄与しているか?

主な発見

  • 静的解析デバッグは、2つの別々のコードベースを同時に考慮する必要があるため、一般のアプリケーションデバッグよりもはるかに複雑である。
  • 主なデバッグの課題は、解析コードとターゲットプログラムコードの両方から抽象化を行うこと、および両方のコードベースにわたる解析の内部状態を追跡することにある。
  • Eclipseのデバッガのような標準のデバッグツールは、二重コードベースデバッグや状態追跡をサポートする機能を欠いており、その効果が制限されている。
  • ユーザースタディーの結果、Visuflowを用いることで参加者は標準のEclipseデバッグと比較して25%多くのバグを特定し、50%多くのエラーを修正できた。
  • 参加者たちは、静的解析のデバッグにおいて、Visuflowの可視化機能と二重ステップ実行機能が、標準開発環境よりもはるかに有用であると感じた。
  • アンケートとユーザースタディーの結果、同期可視化や特別なブレークポイントといった機能が、複雑な静的解析のデバッグに非常に効果的であることが確認された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。