From Quick Fixes to Slow Fixes: Reimagining Static Analysis Resolutions to Enable Design Space Exploration

Quick Fixes as implemented by IDEs today prioritize the speed of applying the fix as a primary criteria for success. In this paper, we argue that when tools over-optimize this criteria, such tools neglect other dimensions that are important to successfully applying a fix, such as being able to explore the design space of multiple fixes. This is especially true in cases where a fix only partially implements the intention of the developer. In this paper, we implement an extension to the FindBugs defect finding tool, called FixBugs, an interactive resolution approach within the Eclipse development environment that prioritizes other design criteria to the successful application of suggested fixes. Our empirical evaluation method of 12 developers suggests that FixBugs enables developers to explore alternative designs and balances the benefits of manual fixing with automated fixing, without having to compromise in either effectiveness or efficiency. Our analytic evaluation method with six usability experts identified trade-offs between FixBugs and Quick Fix, and suggests ways in which FixBugs and Quick Fix can offer complementary capabilities to better support developers.

[1]  Joel Brandt,et al.  Codelets: linking interactive documentation and example code in the editor , 2012, CHI.

[2]  B. Pietrykowski You Are What You Eat: The Social Economy of the Slow Food Movement , 2004 .

[3]  James D. Herbsleb,et al.  Improving API documentation usability with knowledge pushing , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[4]  Arnd Christian König,et al.  Sample-oriented task-driven visualizations: allowing users to make better, more confident decisions , 2014, CHI.

[5]  Jing Xie,et al.  Evaluating interactive support for secure programming , 2012, CHI.

[6]  Robert W. Bowdidge,et al.  Why don't software developers use static analysis tools to find bugs? , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[7]  Edward Cutrell,et al.  "Yours is better!": participant response bias in HCI , 2012, CHI.

[8]  Johnny Saldaña,et al.  The Coding Manual for Qualitative Researchers , 2009 .

[9]  Wayne D. Gray,et al.  Damaged Merchandise? A Review of Experiments That Compare Usability Evaluation Methods , 1998, Hum. Comput. Interact..

[10]  Robert J. Walker,et al.  Semi-automating small-scale source code reuse via structural correspondence , 2008, SIGSOFT '08/FSE-16.

[11]  Stas Negara,et al.  Keshmesh: a tool for detecting and fixing java concurrency bug patterns , 2011, OOPSLA Companion.

[12]  B. A. Sheil,et al.  The Psychological Study of Programming , 1981, CSUR.

[13]  Emerson R. Murphy-Hill,et al.  Speculative reprogramming , 2014, FSE 2014.

[14]  陈立兵 IntelliJ IDEA——开发人员利器 , 2009 .

[15]  Raymond P. L. Buse,et al.  A metric for software readability , 2008, ISSTA '08.

[16]  R. Likert “Technique for the Measurement of Attitudes, A” , 2022, The SAGE Encyclopedia of Research Design.

[17]  Yuriy Brun,et al.  Speculative analysis of integrated development environment recommendations , 2012, OOPSLA '12.

[18]  Margaret M. Burnett,et al.  To fix or to learn? How production bias affects developers' information foraging during debugging , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[19]  Jakob Nielsen,et al.  Heuristic Evaluation of Prototypes (individual) , 2022 .

[20]  W. Buxton Human-Computer Interaction , 1988, Springer Berlin Heidelberg.

[21]  David Hovemeyer,et al.  Finding bugs is easy , 2004, SIGP.

[22]  GIDEON STRASSMANN,et al.  , ANt ) , 2003 .

[23]  Benjamin Livshits,et al.  Finding Security Vulnerabilities in Java Applications with Static Analysis , 2005, USENIX Security Symposium.

[24]  Thomas D. LaToza,et al.  Active code completion , 2011, 2012 34th International Conference on Software Engineering (ICSE).

[25]  Itay Maman,et al.  Micro patterns in Java code , 2005, OOPSLA '05.

[26]  Brad A. Myers,et al.  Finding causes of program output with the Java Whyline , 2009, CHI.

[27]  Jeffrey S. Foster,et al.  A comparison of bug finding tools for Java , 2004, 15th International Symposium on Software Reliability Engineering.

[28]  Scott D. Fleming,et al.  The patchworks code editor: toward faster navigation with less code arranging and fewer navigation mistakes , 2014, CHI.

[29]  Brad A. Myers,et al.  Calcite: Completing Code Completion for Constructors Using Crowds , 2010, 2010 IEEE Symposium on Visual Languages and Human-Centric Computing.

[30]  R. Fisher Social Desirability Bias and the Validity of Indirect Questioning , 1993 .