Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
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
CCured: type-safe retrofitting of legacy code
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESP: path-sensitive program verification in polynomial time
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Automatic extraction of object-oriented component interfaces
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Bug isolation via remote program sampling
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Debugging temporal specifications with concept analysis
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Finding and preventing run-time error handling mistakes
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Synthesis of interface specifications for Java classes
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Finding application errors and security flaws using PQL: a program query language
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Perracotta: mining temporal API rules from imperfect traces
Proceedings of the 28th international conference on Software engineering
LtRules: an automated software library usage rule extraction tool
Proceedings of the 28th international conference on Software engineering
Mining object behavior with ADABU
Proceedings of the 2006 international workshop on Dynamic systems analysis
SMArTIC: towards building an accurate, robust and scalable specification miner
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Path-Sensitive Inference of Function Precedence Protocols
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Sofya: Supporting Rapid Development of Dynamic Program Analyses for Java
ICSE COMPANION '07 Companion to the proceedings of the 29th International Conference on Software Engineering
Static specification inference using predicate mining
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Static specification mining using automata-based abstractions
Proceedings of the 2007 international symposium on Software testing and analysis
Efficient mining of iterative patterns for software specification discovery
Proceedings of the 13th ACM SIGKDD international conference on Knowledge discovery and data mining
Mining specifications of malicious behavior
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Mining API patterns as partial orders from source code: from usage scenarios to specifications
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
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
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
From uncertainty to belief: inferring the specification within
OSDI '06 Proceedings of the 7th symposium on Operating systems design and implementation
CANDID: preventing sql injection attacks using dynamic candidate evaluations
Proceedings of the 14th ACM conference on Computer and communications security
Exceptional situations and program reliability
ACM Transactions on Programming Languages and Systems (TOPLAS)
Mining specifications of malicious behavior
ISEC '08 Proceedings of the 1st India software engineering conference
Symbolic mining of temporal specifications
Proceedings of the 30th international conference on Software engineering
The probabilistic program dependence graph and its application to fault diagnosis
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Mining temporal rules for software maintenance
Journal of Software Maintenance and Evolution: Research and Practice - Special Issue on Program Comprehension through Dynamic Analysis (PCODA)
Toasters, Seat Belts, and Inferring Program Properties
Verified Software: Theories, Tools, Experiments
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
Mining patterns and rules for software specification discovery
Proceedings of the VLDB Endowment
Specification mining of symbolic scenario-based models
Proceedings of the 8th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Specification Mining with Few False Positives
TACAS '09 Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009,
Mining API Error-Handling Specifications from Source Code
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Merlin: specification inference for explicit information flow problems
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
The road not taken: Estimating path execution frequency statically
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Mining exception-handling rules as sequence association rules
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Classification of software behaviors for failure detection: a discriminative pattern mining approach
Proceedings of the 15th ACM SIGKDD international conference on Knowledge discovery and data mining
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
CANDID: Dynamic candidate evaluations for automatic prevention of SQL injection attacks
ACM Transactions on Information and System Security (TISSEC)
Electronic commerce virtual laboratory
Proceedings of the 41st ACM technical symposium on Computer science education
Efficient mining of recurrent rules from a sequence database
DASFAA'08 Proceedings of the 13th international conference on Database systems for advanced applications
Applications of data mining in software engineering
International Journal of Data Analysis Techniques and Strategies
Scalable specification mining for verification and diagnosis
Proceedings of the 47th Design Automation Conference
An automated approach for finding variable-constant pairing bugs
Proceedings of the IEEE/ACM international conference on Automated software engineering
Automatically discovering properties that specify the latent behavior of UML models
MODELS'10 Proceedings of the 13th international conference on Model driven engineering languages and systems: Part I
Automatic requirement extraction from test cases
RV'10 Proceedings of the First international conference on Runtime verification
Large-scale, AST-based API-usage analysis of open-source Java projects
Proceedings of the 2011 ACM Symposium on Applied Computing
Mining parametric specifications
Proceedings of the 33rd International Conference on Software Engineering
Mining temporal specifications from object usage
Automated Software Engineering
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
A toolchain for the detection of structural and behavioral latent system properties
Proceedings of the 14th international conference on Model driven engineering languages and systems
Lattice-Based Sampling for Path Property Monitoring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Finding resource-release omission faults in Linux
ACM SIGOPS Operating Systems Review
FORTE'06 Proceedings of the 26th IFIP WG 6.1 international conference on Formal Techniques for Networked and Distributed Systems
Exception-Handling bugs in java and a language extension to avoid them
Advanced Topics in Exception Handling Techniques
Iterative mining of resource-releasing specifications
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Mining effective temporal specifications from heterogeneous API data
Journal of Computer Science and Technology - Special issue on Natural Language Processing
Amplifying tests to validate exception handling code
Proceedings of the 34th International Conference on Software Engineering
Synthesizing API usage examples
Proceedings of the 34th International Conference on Software Engineering
Statically checking API protocol conformance with mined multi-object specifications
Proceedings of the 34th International Conference on Software Engineering
Typestate-based semantic code search over partial programs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Software—Practice & Experience
Mining requirements from closed-loop control models
Proceedings of the 16th international conference on Hybrid systems: computation and control
Inferring dependency constraints on parameters for web services
Proceedings of the 22nd international conference on World Wide Web
Inferring project-specific bug patterns for detecting sibling bugs
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Current challenges in automatic software repair
Software Quality Control
Hi-index | 0.01 |
Specifications are necessary in order to find software bugs using program verification tools. This paper presents a novel automatic specification mining algorithm that uses information about error handling to learn temporal safety rules. Our algorithm is based on the observation that programs often make mistakes along exceptional control-flow paths, even when they behave correctly on normal execution paths. We show that this focus improves the effectiveness of the miner for discovering specifications beneficial for bug finding. We present quantitative results comparing our technique to four existing miners. We highlight assumptions made by various miners that are not always born out in practice. Additionally, we apply our algorithm to existing Java programs and analyze its ability to learn specifications that find bugs in those programs. In our experiments, we find filtering candidate specifications to be more important than ranking them. We find 430 bugs in 1 million lines of code. Notably, we find 250 more bugs using per-program specifications learned by our algorithm than with generic specifications that apply to all programs.