SEMar 22, 2021

Sorald: Automatic Patch Suggestions for SonarQube Static Analysis Violations

arXiv:2103.12033v224 citations
Originality Incremental advance
AI Analysis

This addresses the issue of high maintenance costs for developers by reducing the burden of interpreting and fixing static analysis issues, though it is incremental as it builds on existing static analysis tools.

Sorald tackles the problem of developers ignoring static analysis warnings by automatically suggesting fixes for SonarJava violations, successfully repairing 65% of applicable violations in a dataset of 161 GitHub repositories.

Previous work has shown that early resolution of issues detected by static code analyzers can prevent major costs later on. However, developers often ignore such issues for two main reasons. First, many issues should be interpreted to determine if they correspond to actual flaws in the program. Second, static analyzers often do not present the issues in a way that is actionable. To address these problems, we present Sorald: a novel system that devise metaprogramming templates to transform the abstract syntax trees of programs and suggest fixes for static analysis warnings. Thus, the burden on the developer is reduced from interpreting and fixing static issues, to inspecting and approving full fledged solutions. Sorald fixes violations of 10 rules from SonarJava, one of the most widely used static analyzers for Java. We evaluate Sorald on a dataset of 161 popular repositories on Github. Our analysis shows the effectiveness of Sorald as it fixes 65% (852/1,307) of the violations that meets the repair preconditions. Overall, our experiments show it is possible to automatically fix notable violations of the static analysis rules produced by the state-of-the-art static analyzer SonarJava.

Code Implementations2 repos
Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes