Advanced compiler design and implementation
Advanced compiler design and implementation
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Bugs as deviant behavior: a general approach to inferring errors in systems code
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatic extraction of object-oriented component interfaces
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
ICDE '95 Proceedings of the Eleventh International Conference on Data Engineering
Fast Algorithms for Mining Association Rules in Large Databases
VLDB '94 Proceedings of the 20th International Conference on Very Large Data Bases
Design and Implementation of a Fine-Grained Software Inspection Tool
IEEE Transactions on Software Engineering
Summarizing procedures in concurrent programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Synthesis of interface specifications for Java classes
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scalable error detection using boolean satisfiability
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Jungloid mining: helping to navigate the API jungle
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
DynaMine: finding common error patterns by mining software revision histories
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Perracotta: mining temporal API rules from imperfect traces
Proceedings of the 28th international conference on Software engineering
XSnippet: mining For sample code
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Compositional dynamic test generation
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Improving software assurance using lightweight static analysis
Improving software assurance using lightweight static analysis
From uncertainty to belief: inferring the specification within
OSDI '06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Mining temporal specifications for error detection
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Static specification inference using predicate mining
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Detecting object usage anomalies
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Symbolic mining of temporal specifications
Proceedings of the 30th international conference on Software engineering
Mining past-time temporal rules from execution traces
WODA '08 Proceedings of the 2008 international workshop on dynamic analysis: held in conjunction with the ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2008)
Protocol Inference Using Static Path Profiles
SAS '08 Proceedings of the 15th international symposium on Static Analysis
Javert: fully automatic mining of general temporal properties from dynamic traces
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Software Fault Localization Using N-gram Analysis
WASA '08 Proceedings of the Third International Conference on Wireless Algorithms, Systems, and Applications
Enforcing the use of API functions in linux code
Proceedings of the 8th workshop on Aspects, components, and patterns for infrastructure software
Graph-based mining of multiple object usage patterns
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
MAPO: Mining and Recommending API Usage Patterns
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Supporting Framework Use via Automatically Extracted Concept-Implementation Templates
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Online inference and enforcement of temporal properties
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
A graph-based approach to API usage adaptation
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Inferring meta-models for runtime system data from the clients of management APIs
MODELS'10 Proceedings of the 13th international conference on Model driven engineering languages and systems: Part II
Mining parametric specifications
Proceedings of the 33rd International Conference on Software Engineering
Flow-augmented call graph: a new foundation for taming API complexity
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
Inferring specifications for resources from natural language API documentation
Automated Software Engineering
Alattin: mining alternative patterns for defect detection
Automated Software Engineering
Finding resource-release omission faults in Linux
PLOS '11 Proceedings of the 6th Workshop on Programming Languages and Operating Systems
Finding resource-release omission faults in Linux
ACM SIGOPS Operating Systems Review
Learning extended FSA from software: An empirical assessment
Journal of Systems and Software
Graph-based pattern-oriented, context-sensitive source code completion
Proceedings of the 34th International Conference on Software Engineering
Performance debugging in the large via mining millions of stack traces
Proceedings of the 34th International Conference on Software Engineering
Diagnosys: automatic generation of a debugging interface to the Linux kernel
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Software—Practice & Experience
Comparison and evaluation of source code mining tools and techniques: A qualitative approach
Intelligent Data Analysis
Hi-index | 0.00 |
Function precedence protocols define ordering relations among function calls in a program. In some instances, precedence protocols are well-understood (e.g., a call to pthread mutex init must always be present on all program paths before a call to pthread mutex lock ). Oftentimes, however, these protocols are neither well-documented, nor easily derived. As a result, protocol violations can lead to subtle errors that are difficult to identify and correct. In this paper, we present CHRONICLER, a tool that applies scalable inter-procedural path-sensitive static analysis to automatically infer accurate function precedence protocols. CHRONICLER computes precedence relations based on a program's control-flow structure, integrates these relations into a repository, and analyzes them using sequence mining techniques to generate a collection of feasible precedence protocols. Deviations from these protocols found in the program are tagged as violations, and represent potential sources of bugs. We demonstrate CHRONICLER's effectiveness by deriving protocols for a collection of benchmarks ranging in size from 66K to 2M lines of code. Our results not only confirm the existence of bugs in these programs due to precedence protocol violations, but also highlight the importance of path sensitivity on accuracy and scalability.