|
Statfier
|
Statfier is an heuristic-based automated testing tool for static analyzers. Basically, it is implemented by program transformation and metamorphic testing techniques. Until now, Statfier has found 79 bugs in known static analyzers (PMD, SpotBugs, SonarQube, CheckStyle, Infer).
|
Defects found
| Tool |
Link |
Root cause |
Status |
| PMD |
Link |
Variable declaration |
Fixed |
| SonarQube |
Link |
Control flow structure |
Fixed |
| SonarQube |
Link |
Variable declaration |
Fixed |
| checkstyle |
Link |
Compound expression |
Fixed |
| SpotBugs |
Link |
Class hierarchy |
Confirmed |
| PMD |
Link |
Variable declaration |
Fixed |
| PMD |
Link |
Control flow structure |
Pending |
| PMD |
Link |
Compound expression |
Confirmed |
| checkstyle |
Link |
Compound expression |
Fixed |
| SpotBugs |
Link |
Variable declaration |
Fixed |
| checkstyle |
Link |
Class hierarchy |
Fixed |
| checkstyle |
Link |
Class hierarchy |
Confirmed |
| PMD |
Link |
Compound expression |
Confirmed |
| PMD |
Link |
Java version and new features |
Pending |
| PMD |
Link |
Variable declaration |
Pending |
| PMD |
Link |
Variable declaration |
Pending |
| PMD |
Link |
Variable declaration |
Fixed |
| PMD |
Link |
Class hierarchy |
Fixed |
| SpotBugs |
Link |
Java version and new features |
Confirmed |
| PMD |
Link |
Variable declaration |
Fixed |
| PMD |
Link |
Class hierarchy |
Confirmed |
| PMD |
Link |
Class hierarchy |
Confirmed |
| PMD |
Link |
Class hierarchy |
Confirmed |
| PMD |
Link |
Class hierarchy |
Confirmed |
| PMD |
Link |
Class hierarchy |
Confirmed |
| PMD |
Link |
Class hierarchy |
Confirmed |
| SpotBugs |
Link |
Control flow structure |
Pending |
| checkstyle |
Link |
Java version and new features |
Fixed |
| checkstyle |
Link |
Control flow structure |
Won't fix |
| PMD |
Link |
Control flow structure |
Fixed |
| SpotBugs |
Link |
Java version and new features |
Confirmed |
| SonarQube |
Link |
Control flow structure |
Won't fix |
| SonarQube |
Link |
Control flow structure |
Confirmed |
| SonarQube |
Link |
Control flow structure |
Confirmed |
| SonarQube |
Link |
Variable declaration |
Won't fix |
| SonarQube |
Link |
Variable declaration |
Confirmed |
| PMD |
Link |
Variable declaration |
Pending |
| PMD |
Link |
Variable declaration |
Confirmed |
| PMD |
Link |
Compound expression |
Pending |
| PMD |
Link |
Control flow structure |
Fixed |
| PMD |
Link |
Compound expression |
Confirmed |
| PMD |
Link |
Class hierarchy |
Pending |
| PMD |
Link |
Compound expression |
Pending |
| PMD |
Link |
Class hierarchy |
Fixed |
| PMD |
Link |
Variable declaration |
Fixed |
| checkstyle |
Link |
Compound expression |
Won't fix |
| checkstyle |
Link |
Class hierarchy |
Pending |
| SpotBugs |
Link |
Class hierarchy |
Pending |
| SpotBugs |
Link |
Control flow structure |
Pending |
| SonarQube |
Link |
Control flow structure |
Confirmed |
| SonarQube |
Link |
Variable declaration |
Confirmed |
| SonarQube |
Link |
Variable declaration |
Fixed |
| SonarQube |
Link |
Variable declaration |
Fixed |
| SonarQube |
Link |
Compound expression |
Fixed |
| Infer |
Link |
Class hierarchy |
Pending |
| Infer |
Link |
Variable declaration |
Pending |
| Infer |
Link |
Control flow structure |
Pending |
| PMD |
Link |
Variable declaration |
Fixed |
| PMD |
Link |
Control flow structure |
Fixed |
| PMD |
Link |
Compound expression |
Fixed |
| PMD |
Link |
Control flow structure |
Pending |
| PMD |
Link |
Compound expression |
Pending |
| SpotBugs |
Link |
Variable declaration |
Pending |
| PMD |
Link |
Class hierarchy |
Pending |
| PMD |
Link |
Class hierarchy |
Pending |
| PMD |
Link |
Compound expression |
Pending |
| PMD |
Link |
Variable declaration |
Confirmed |
| PMD |
Link |
Compound expression |
Pending |
| PMD |
Link |
Control flow structure |
Pending |
| SpotBugs |
Link |
Compound expression |
Pending |
| PMD |
Link |
Variable declaration |
Pending |
| PMD |
Link |
Variable declaration |
Pending |
| SpotBugs |
Link |
Class hierarchy |
Pending |
| PMD |
Link |
Compound expression |
Fixed |
| PMD |
Link |
Class hierarchy |
Pending |
| SpotBugs |
Link |
Class hierarchy |
Fixed |
| PMD |
Link |
Control flow structure |
Pending |
| PMD |
Link |
Control flow structure |
Fixed |
| SpotBugs |
Link |
Variable declaration |
Fixed |
Paper
Open Source
Timeout Selection
Our evaluation is based on the effectiveness of finding bugs in each static analyzer. Intuitively, a test generation approach can discover more bugs given a longer execution time. However, due to limited resources, we would like to investigate the appropriate time limit for running the evaluated analyzers. To determine the appropriate time limit timeL in Statfier, we perform an experiment investigating the effect of changing timeL on the number of bugs found. When running Statfier on each analyzer, we gradually increase the execution time limit on our evaluated analyzers.
The above figure shows the relationship between the number of discovered bugs and execution time. As our experiment shows that six hours is sufficient for finding bugs in all evaluated analyzers (i.e., the number of bugs does not increase after that), we select six hours as the time limit for running each analyzer in our main experiments.
|