- Loading...
...
We describe a new platform that automates the frequency analysis of language features in Java. It comprises a corpus of open-source software, a query language to specify variant parsers and typecheckers, as well as an automated reporting tool.
...
...
Source code query languages enable programmers to explore their code base. Such languages are often used to identify deprecated code to refactor, bugs to fix or simply to understand a system better.
This paper evaluates whether such tools can help programming language designers identify deficiencies in languages which cause programmers to write undesirable code. We look at several use cases including code patterns and recent features in Java to investigate the expressiveness of seven Java code query languages: JTL, BBQ, Juliet, Findbugs, Jackpot, YAAB and SOUL.
We conclude with a taxonomy of what features are supported by current source code query languages in order to inform further work.
Software are difficult to maintain. In fact, it becomes harder to identify where to make changes as the size and complexity of a codebase increases. For this reason, many automated tools have been developed to assist programmers. Such tools include bugs finding, architecture analysis and refactoring. Other tools enable programmers to quickly navigate their codebase. For example, several code browsers have been developed to help program comprehension through hyperlinked code and simple queries.
Recently, source code query languages have been developed to provide extensive analysis of source code. They let programmers compose queries written in a domain specific language to locate potential bugs, code to refactor or simply to understand the system they work with better. Many query languages have been developed with different characteristics and features. For example, some languages are based on Abstract Syntax Tree expressions, other languages provide an SQL-like feel, others include features from logic programming to build more complex queries.
...
...
Based on this work, we build a taxonomy of features that are supported by current source query languages. We hope that this work will inform further work in creating query languages suitable for programming language design research.
...
In this section, we give an overview of the seven query languages that we evaluate in this paper: Java Tools Language, Browse-By-Query, SOUL, JQuery, .QL, Jackpot and PMD. We selected these languages because they provide a variety of design choices and strictly provide a query language. For example, we didn't select Findbugs as it only lets programmers query source by creating new classes based on a Java framework. We also only selected source code query languages that included a guide or a working implementation.
...
| Code Block |
|---|
//MethodDeclarator/FormalParameters [FormalParameter/Type/ReferenceType/ClassOrInterfaceType [@Image = 'Integer']] |
...
| Final Array & Anonymous Class | Generic Constructors | Capture Conversion Idiom | Overloaded Methods | Covariant Arrays |
|---|---|---|---|---|---|
JTL |
|
| X |
|
|
BBQ | X | X | X | ? |
|
SOUL |
|
|
|
|
|
JQuery | X | X | X | ? | X |
.QL |
|
|
|
|
|
Jackpot |
|
|
|
|
|
PMD |
|
|
|
|
|
...