Detecting Missing Method Calls in Object-Oriented Software

  title={Detecting Missing Method Calls in Object-Oriented Software},
  author={Monperrus Martin and Marcel Bruch and Mira Mezini},
When using object-oriented frameworks it is easy to overlook certain important method calls that are required at particular places in code. In this paper, we provide a comprehensive set of empirical facts on this problem, starting from traces of missing method calls in a bug repository. We propose a new system, which automatically detects them during both software development and quality assurance phases. The evaluation shows that it has a low false positive rate (<5%) and that it is able to… 

Detecting missing method calls as violations of the majority rule

A new system is proposed that searches for missing method calls in software based on the other method calls that are observable, showing that the voting theory concept of majority rule holds for method calls.

Toward a dynamic analysis technique to locate framework misuses that cause unexpected side effects

A case study is introduced to identify a wrong API call using a dynamic analysis technique to detect possibly unexpected side effects that cause failures.

Empirical evidence of large-scale diversity in API usage of object-oriented software

This paper presents empirical evidence that there is a significant usage diversity for many classes in object-oriented classes, defined as the different statically observable combinations of methods called on the same object.

A dynamic analysis technique to extract symptoms that suggest side effects in framework applications

This paper proposes a dynamic analysis technique to extract symptoms which suggest a framework misuse in the process to update a state of an object.

A Systematic Approach to Benchmark and Improve Automated Static Detection of Java-API Misuses

A systematic analysis of the problem of API misuse is presented and it is found that API misuse causes 9.1% of all software bugs in real-world projects, including many critical issues, such as program crashes, data loss, and security vulnerabilities.

Mining Software Components from Object-Oriented APIs

This paper proposes an approach for reengineering object- oriented APIs into component-based ones by mining components as a group of classes based on the frequency they are used together and their ability to form a quality-centric component.

Statically checking API protocol conformance with mined multi-object specifications

A dynamic analysis that infers multi-object protocols and a static checker of API usage constraints into a fully automatic protocol conformance checker that statically detects illegal uses of an API without human-written specifications is combined.

Reverse engineering reusable software components from object-oriented APIs

A Case Study of Dynamic Analysis to Locate Unexpected Side Effects Inside of Frameworks

A case study to find a wrong API call using a dynamic analysis technique to find unexpected side effects inside of frameworks using the authors' technique is introduced.

Identifying Mandatory Code for Framework Use via a Single Application Trace

This paper presents a method to automatically identify the mandatory code for the framework use using only a single sample application's trace, and results indicate that the method is suitable to extract the mandatory framework usage.



Automatic mining of source code repositories to improve bug finding techniques

A static source code checker is implemented that searches for a commonly fixed bug and uses information automatically mined from the source code repository to refine its results, identifying 178 warnings that are likely bugs in the Apache Web server source code and 546 warnings in Wine.

Detecting object usage anomalies

The JADET prototype has detected yet undiscovered defects and code smells in five popular open-source programs, including two new defects in AspectJ.

Lightweight Defect Localization for Java

Comparing object-specific sequences predicts defects better than simply comparing coverage of passing and failing program runs; this technique pinpointed the defective class in 39% of all test runs.

DynaMine: finding common error patterns by mining software revision histories

The combination of revision history mining and dynamic analysis techniques leveraged in DynaMine proves effective for both discovering new application-specific patterns and for finding errors when applied to very large applications with many man-years of development and debugging effort behind them.

Tracking down software bugs using automatic anomaly detection

The DIDUCE system for Java programs is implemented and applied and suggests that detecting and checking program invariants dynamically is a simple and effective methodology for debugging many different kinds of program errors across a wide variety of application domains.

DSD-Crasher: A hybrid analysis tool for bug finding

DSD-Crasher is a bug finding tool that follows a three-step approach to program analysis that yields benefits compared to past two-step combinations in the literature, and in the evaluation with third-party applications, demonstrates higher precision over tools that lack a dynamic step and higher efficiency over tools That lack a static step.

Finding what's not there: a new approach to revealing neglected conditions in software

A novel approach to revealing neglected conditions that integrates static program analysis and advanced data mining techniques to discover implicit conditional rules in a code base and to discover rule violations that indicate neglected conditions is presented.

Finding bugs is easy

It is found that even well tested code written by experts contains a surprising number of obvious bugs and that simple automatic techniques can be effective at countering the impact of both ordinary mistakes and misunderstood language features.

Which warnings should I fix first?

A history-based warning prioritization algorithm is proposed by mining warning fix experience that is recorded in the software change history by improving warning precision to 17, 25, and 67% respectively.

ECOOP 2005 - Object-Oriented Programming, 19th European Conference, Glasgow, UK, July 25-29, 2005, Proceedings

The Emergent Structure of Development Tasks and Sustainable System Infrastructure and Big Bang Evolution: Can Aspects Keep Pace are discussed.