kirancodes.me
To Proof Maintenance & Beyond!

NonDex: a tool for detecting and debugging wrong assumptions on Java API specifications

Alex Gyori, Ben Lambeth, August Shi, Owolabi Legunsen, Darko Marinov

Abstract

We present NonDex, a tool for detecting and debugging wrong assumptions on Java APIs. Some APIs have underdetermined specifications to allow implementations to achieve different goals, e.g., to optimize performance. When clients of such APIs assume stronger-than-specified guarantees, the resulting client code can fail. For example, HashSet’s iteration order is underdetermined, and code assuming some implementation-specific iteration order can fail. NonDex helps to proactively detect and debug such wrong assumptions. NonDex performs detection by randomly exploring different behaviors of underdetermined APIs during test execution. When a test fails during exploration, NonDex searches for the invocation instance of the API that caused the failure. NonDex is open source, well-integrated with Maven, and also runs from the command line. During our experiments with the NonDex Maven plugin, we detected 21 new bugs in eight Java projects from GitHub, and, using the debugging feature of NonDex, we identified the underlying wrong assumptions for these 21 new bugs and 54 previously detected bugs. We opened 13 pull requests; developers already accepted 12, and one project changed the continuous-integration configuration to run NonDex on every push. The demo video is at: https://youtu.be/h3a9ONkC59c

BibTeX
@inproceedings{Gyori-al:FSE16,
  author    = {Alex Gyori and
               Ben Lambeth and
               August Shi and
               Owolabi Legunsen and
               Darko Marinov},
  title     = {{NonDex:} a tool for detecting and debugging wrong assumptions on Java {API} specifications},
  booktitle = {FSE},
  pages     = {993--997},
  publisher = {{ACM}},
  year      = {2016},
}

Related papers