Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
The Ada Generic Library linear list processing packages
The Ada Generic Library linear list processing packages
Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global value numbers and redundant computations
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Context-sensitive interprocedural points-to analysis in the presence of function pointers
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Algorithm-oriented generic libraries
Software—Practice & Experience
LCLint: a tool for using specifications to check code
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Iteration abstraction in Sather
ACM Transactions on Programming Languages and Systems (TOPLAS)
Symbolic analysis for parallelizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Solving shape-analysis problems in languages with destructive updating
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dynamic Verification of C++ Generic Algorithms
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Interface Compilation: Steps Toward Compiling Program Interfaces as Languages
IEEE Transactions on Software Engineering
Automatically Checking an Implementation against Its Formal Specification
IEEE Transactions on Software Engineering
Symbolic execution and program testing
Communications of the ACM
STL tutorial and reference guide, second edition: C++ programming with the standard template library
STL tutorial and reference guide, second edition: C++ programming with the standard template library
Effective STL: 50 specific ways to improve your use of the standard template library
Effective STL: 50 specific ways to improve your use of the standard template library
Introduction to the GiNaC framework for symbolic computation within the C++ programming language
Journal of Symbolic Computation
Deriving specialized program analyses for certifying component-client conformance
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
CLU Reference Manual
The Java Class Libraries: Supplement for the Java 2 Platform
The Java Class Libraries: Supplement for the Java 2 Platform
An STL message decryptor for visual C++
C/C++ Users Journal
IPPS '95 Proceedings of the 9th International Symposium on Parallel Processing
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
High-level static analysis for generic libraries
High-level static analysis for generic libraries
Techniques for specifying bug patterns
Proceedings of the 2007 ACM workshop on Parallel and distributed systems: testing and debugging
Verifying C++ with STL containers via predicate abstraction
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Extending Automatic Parallelization to Optimize High-Level Abstractions for Multicore
IWOMP '09 Proceedings of the 5th International Workshop on OpenMP: Evolving OpenMP in an Age of Extreme Parallelism
Reusable, generic program analyses and transformations
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Extensible syntax-oriented verifier and its implementation
SE '08 Proceedings of the IASTED International Conference on Software Engineering
Precise reasoning for programs using containers
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Measuring the Overhead of C++ Standard Template Library Safe Variants
Electronic Notes in Theoretical Computer Science (ENTCS)
Correct code containing containers
TAP'11 Proceedings of the 5th international conference on Tests and proofs
An extensible open-source compiler infrastructure for testing
HVC'05 Proceedings of the First Haifa international conference on Hardware and Software Verification and Testing
Hi-index | 0.00 |
Traditional static checking centers around finding bugs in programs by isolating cases where the language has been used incorrectly. These language-based checkers do not understand the semantics of software libraries, and therefore cannot be used to detect errors in the use of libraries. In this paper, we introduce STLlint, a program analysis we have implemented for the C++ Standard Template Library and similar, generic software libraries, and we present the general approach that underlies STLlint. We show that static checking of library semantics differs greatly from checking of language semantics, requiring new representations of program behavior and new algorithms. Major challenges include checking the use of generic algorithms, loop analysis for interfaces, and organizing behavioral specifications for extensibility. Copyright © 2005 John Wiley & Sons, Ltd.