Software frameworks enable developers to reuse existing well-tested functionalities instead of taking the burden of implementing everything from scratch. However, to meet application specific requirements, the frameworks need to be customized via extension points. This is often done by passing a framework related object as an argument to an API call. To enable such customizations, the object can be created by extending a framework class, implementing an interface, or changing the properties of the object via API calls. However, it is both a common and non-trivial task to find all the details related to the customizations. This research focuses on developing techniques to help developers using framework extension points and locating framework extension examples.
We conducted a study using Boa language and infrastructure to understand how developers use exception handling in Java. Questions were selected to explore bad exception handling coding practices, their relationship to the experience of developers, using exception chaining, defining custom exception classes and using new exception handling features.
A number of techniques have been developed that support method call completion, however, there has been little focus on the problem of method parameter completion. Completing method parameters is also a non-trivial task. IDEs like Eclipse supports automatic completion of method parameters but the support is very limited. This work explores the existing state-of-the-art of method parameter completion and develops a new technique called Parc.
In this research, we develop CSCC, a simple, efficient context-sensitive code completion technique that leverages previous code examples to support method completion. Compared to other existing code completion techniques, CSCC uses new sources of contextual information together with lightweight source code analysis to better recommend API method calls.
Tracking source code lines between two different versions of a file is a fundamental step for solving a number of important problems in software maintenance such as locating bug introducing changes, tracking code fragments or defects across versions, merging file versions, and software evolution analysis. Although a number of such approaches are available in the literature, their performance is sensitive to the kind and degree of source code changes. There is also a marked lack of study on the effect of change types on source location tracking techniques. This research focuses on developing a language independent line location tracking technique without sacrificing performance.