Frameworks and libraries offer reusable and customizable functionality through Application programming Interfaces (APIs). Correctly using large and sophisticated APIs can represent a challenge due to hidden assumption...
详细信息
Frameworks and libraries offer reusable and customizable functionality through Application programming Interfaces (APIs). Correctly using large and sophisticated APIs can represent a challenge due to hidden assumptions and requirements. Numerous approaches have been developed to infer properties of APIs, intended to guide their use by developers. With each approach come new definitions of API properties, new techniques for inferring these properties, and new ways to assess their correctness and usefulness. This paper provides a comprehensive survey of over a decade of research on automated property inference for APIs. Our survey provides a synthesis of this complex technical field along different dimensions of analysis: properties inferred, mining techniques, and empirical results. In particular, we derive a classification and organization of over 60 techniques into five different categories based on the type of API property inferred: unordered usage patterns, sequential usage patterns, behavioral specifications, migration mappings, and general information.
Large scale programs usually imply many programming rules, which are missing from specification documents. However, if programmers violate these rules in the process of programming, they may introduce software defects...
详细信息
ISBN:
(纸本)9783030042721;9783030042714
Large scale programs usually imply many programming rules, which are missing from specification documents. However, if programmers violate these rules in the process of programming, they may introduce software defects. Mining programming rules for detecting defect is an effective way to alleviate this problem. However, previous works suffer from a large number of candidate rules and suspicious defects which need manual validation. This issue affects the applicability and scalability of these previously proposed approaches. This paper proposes a novel approach to detect defects based on programming rules mined from different versions of a project. Firstly, it mines function call sequence patterns from the version under analysis and a previous stable version;secondly, it filters useful function call sequence patterns based on the patterns contained in the previous version;thirdly, the programs are automatically checked against filtered patterns for detecting suspicious defects. Experiments are carried out on three open source projects varies from 12k to 142k LOC to evaluate the effectiveness of our proposed approach. The experiment results show that the approach can improve the efficiency of defect detection by reducing 55% suspicious defects for the three projects without comprising the defect detection capability.
Over the years many techniques have been proposed toinfer programming rules in order to improve software *** techniques use violations of these programming rules to detectsoftware defects. This thesis introduces an ap...
详细信息
Over the years many techniques have been proposed toinfer programming rules in order to improve software *** techniques use violations of these programming rules to detectsoftware defects. This thesis introduces an approach, NGDetection,which models a software’s source code using the n-gram languagemodel in order to find bugs and refactoring opportunities in anumber of open source Java projects. The use of the n-gram model toinfer programming rules for software defect detection is a newdomain for the application of the n-gram model. In addition tothe n-gram model, NGDetection leverages two additional techniquesto address limitations of existing defect detection ***, the approach infers combined programming rules, which are acombination of infrequent programming rules with their relatedprogramming rules, to detect defects in a way other approachescannot. Second, the approach integrates control flow into then-gram model which increases the accuracy of defect detection. The approach is evaluated on 14 open source Java projects whichrange from 36 thousand lines of code (KLOC) to 1 million lines ofcode (MLOC). The approach detected 310 violations in the latestversion of the projects, 108 of which are useful violations, i.e.,43 bugs and 65 refactoring opportunities. Of the 43 bugs, 32 werereported to the developers and the remaining are in the process ofbeing reported. Among the reported bugs, 2 have been confirmed bythe developers, while the rest await confirmation. For the 108usefulviolations, at least 26 cannot be detected by existingtechniques
暂无评论