Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Syste 2016
DOI: 10.1145/2872362.2872364
|View full text |Cite
|
Sign up to set email alerts
|

How to Build Static Checking Systems Using Orders of Magnitude Less Code

Abstract: Modern static bug finding tools are complex. They typically consist of hundreds of thousands of lines of code, and most of them are wedded to one language (or even one compiler). This complexity makes the systems hard to understand, hard to debug, and hard to retarget to new languages, thereby dramatically limiting their scope. This paper reduces the complexity of the checking system by addressing a fundamental assumption, the assumption that checkers must depend on a full-blown language specification and comp… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
19
1

Year Published

2016
2016
2021
2021

Publication Types

Select...
5
3
1

Relationship

1
8

Authors

Journals

citations
Cited by 23 publications
(20 citation statements)
references
References 29 publications
0
19
1
Order By: Relevance
“…One recent work that echoes our own is Brown et al's [6] work using island grammars [27] to write static analyzers for multiple languages. They show that they only need to represent fragments of a language to construct an analyzer.…”
Section: Chapter 6 Related Workmentioning
confidence: 66%
See 1 more Smart Citation
“…One recent work that echoes our own is Brown et al's [6] work using island grammars [27] to write static analyzers for multiple languages. They show that they only need to represent fragments of a language to construct an analyzer.…”
Section: Chapter 6 Related Workmentioning
confidence: 66%
“…Programmers use transformation tools to do everything from small-scale refactoring [15] to modernizing entire legacy applications [1]. Most tools are wedded to one language (or even one compiler), and often require hundreds of thousands of lines of code to implement [6]. Consequently, as developers use hundreds of languages [22], each tool has a limited potential market, and hence very few are built.…”
Section: Introductionmentioning
confidence: 99%
“…We believe that the micro grammar approach of [4] addresses both of these concerns: it supports flexible, cross-language checkers with very little developer overhead. Checkers in this system are often under fifty lines long, and adapting a checker from one language to another is possible in five to fifty more lines-far fewer than a traditional system requires.…”
Section: Finding Bugsmentioning
confidence: 99%
“…Refinement type systems [31], pluggable type systems [7,12,13,45] and gradual type system [64,65] define additional static checks for programs written against an existing semantics. Some of these systems support fragmentary definitions of new analyses [13,45]. typy is different in that its semantics (static and dynamic) is itself programmable.…”
Section: Related Workmentioning
confidence: 99%