Skip to content

Commit 4d6d8d8

Browse files
authored
Modifications to read both types of sonar findings: issues and hotspots (#378)
Read data using issues and hotspots parent abstract class: `SonarFinding`. This change will allow us to start creating sonar hotspots codemods
1 parent d758220 commit 4d6d8d8

30 files changed

+305
-216
lines changed

core-codemods/src/main/java/io/codemodder/codemods/AddMissingOverrideCodemod.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import io.codemodder.codetf.DetectorRule;
99
import io.codemodder.javaparser.ChangesResult;
1010
import io.codemodder.providers.sonar.ProvidedSonarScan;
11-
import io.codemodder.providers.sonar.RuleIssues;
11+
import io.codemodder.providers.sonar.RuleIssue;
1212
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1313
import io.codemodder.sonar.model.Issue;
1414
import java.util.Optional;
@@ -20,16 +20,17 @@
2020
reviewGuidance = ReviewGuidance.MERGE_WITHOUT_REVIEW,
2121
importance = Importance.LOW,
2222
executionPriority = CodemodExecutionPriority.HIGH)
23-
public final class AddMissingOverrideCodemod extends SonarPluginJavaParserChanger<SimpleName> {
23+
public final class AddMissingOverrideCodemod
24+
extends SonarPluginJavaParserChanger<SimpleName, Issue> {
2425

2526
@Inject
2627
public AddMissingOverrideCodemod(
27-
@ProvidedSonarScan(ruleId = "java:S1161") final RuleIssues issues) {
28+
@ProvidedSonarScan(ruleId = "java:S1161") final RuleIssue issues) {
2829
super(issues, SimpleName.class);
2930
}
3031

3132
@Override
32-
public ChangesResult onIssueFound(
33+
public ChangesResult onFindingFound(
3334
final CodemodInvocationContext context,
3435
final CompilationUnit cu,
3536
final SimpleName methodName,

core-codemods/src/main/java/io/codemodder/codemods/AvoidImplicitPublicConstructorCodemod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import io.codemodder.codetf.DetectorRule;
1313
import io.codemodder.javaparser.ChangesResult;
1414
import io.codemodder.providers.sonar.ProvidedSonarScan;
15-
import io.codemodder.providers.sonar.RuleIssues;
15+
import io.codemodder.providers.sonar.RuleIssue;
1616
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1717
import io.codemodder.sonar.model.Issue;
1818
import java.util.Optional;
@@ -25,16 +25,16 @@
2525
importance = Importance.LOW,
2626
executionPriority = CodemodExecutionPriority.HIGH)
2727
public final class AvoidImplicitPublicConstructorCodemod
28-
extends SonarPluginJavaParserChanger<SimpleName> {
28+
extends SonarPluginJavaParserChanger<SimpleName, Issue> {
2929

3030
@Inject
3131
public AvoidImplicitPublicConstructorCodemod(
32-
@ProvidedSonarScan(ruleId = "java:S1118") final RuleIssues issues) {
32+
@ProvidedSonarScan(ruleId = "java:S1118") final RuleIssue issues) {
3333
super(issues, SimpleName.class);
3434
}
3535

3636
@Override
37-
public ChangesResult onIssueFound(
37+
public ChangesResult onFindingFound(
3838
final CodemodInvocationContext context,
3939
final CompilationUnit cu,
4040
final SimpleName simpleName,

core-codemods/src/main/java/io/codemodder/codemods/DeclareVariableOnSeparateLineCodemod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import io.codemodder.codetf.DetectorRule;
1111
import io.codemodder.javaparser.ChangesResult;
1212
import io.codemodder.providers.sonar.ProvidedSonarScan;
13-
import io.codemodder.providers.sonar.RuleIssues;
13+
import io.codemodder.providers.sonar.RuleIssue;
1414
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1515
import io.codemodder.sonar.model.Issue;
1616
import java.util.Optional;
@@ -23,15 +23,15 @@
2323
importance = Importance.LOW,
2424
executionPriority = CodemodExecutionPriority.HIGH)
2525
public final class DeclareVariableOnSeparateLineCodemod
26-
extends SonarPluginJavaParserChanger<VariableDeclarator> {
26+
extends SonarPluginJavaParserChanger<VariableDeclarator, Issue> {
2727
@Inject
2828
public DeclareVariableOnSeparateLineCodemod(
29-
@ProvidedSonarScan(ruleId = "java:S1659") final RuleIssues issues) {
29+
@ProvidedSonarScan(ruleId = "java:S1659") final RuleIssue issues) {
3030
super(issues, VariableDeclarator.class);
3131
}
3232

3333
@Override
34-
public ChangesResult onIssueFound(
34+
public ChangesResult onFindingFound(
3535
final CodemodInvocationContext context,
3636
final CompilationUnit cu,
3737
final VariableDeclarator variableDeclarator,

core-codemods/src/main/java/io/codemodder/codemods/DefineConstantForLiteralCodemod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import io.codemodder.codetf.DetectorRule;
77
import io.codemodder.javaparser.ChangesResult;
88
import io.codemodder.providers.sonar.ProvidedSonarScan;
9-
import io.codemodder.providers.sonar.RuleIssues;
9+
import io.codemodder.providers.sonar.RuleIssue;
1010
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1111
import io.codemodder.sonar.model.Issue;
1212
import javax.inject.Inject;
@@ -18,16 +18,16 @@
1818
importance = Importance.HIGH,
1919
executionPriority = CodemodExecutionPriority.HIGH)
2020
public final class DefineConstantForLiteralCodemod
21-
extends SonarPluginJavaParserChanger<StringLiteralExpr> {
21+
extends SonarPluginJavaParserChanger<StringLiteralExpr, Issue> {
2222

2323
@Inject
2424
public DefineConstantForLiteralCodemod(
25-
@ProvidedSonarScan(ruleId = "java:S1192") final RuleIssues issues) {
25+
@ProvidedSonarScan(ruleId = "java:S1192") final RuleIssue issues) {
2626
super(issues, StringLiteralExpr.class);
2727
}
2828

2929
@Override
30-
public ChangesResult onIssueFound(
30+
public ChangesResult onFindingFound(
3131
final CodemodInvocationContext context,
3232
final CompilationUnit cu,
3333
final StringLiteralExpr stringLiteralExpr,

core-codemods/src/main/java/io/codemodder/codemods/FixRedundantStaticOnEnumCodemod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import io.codemodder.codetf.DetectorRule;
77
import io.codemodder.javaparser.ChangesResult;
88
import io.codemodder.providers.sonar.ProvidedSonarScan;
9-
import io.codemodder.providers.sonar.RuleIssues;
9+
import io.codemodder.providers.sonar.RuleIssue;
1010
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1111
import io.codemodder.sonar.model.Issue;
1212
import javax.inject.Inject;
@@ -18,16 +18,16 @@
1818
importance = Importance.LOW,
1919
executionPriority = CodemodExecutionPriority.HIGH)
2020
public final class FixRedundantStaticOnEnumCodemod
21-
extends SonarPluginJavaParserChanger<EnumDeclaration> {
21+
extends SonarPluginJavaParserChanger<EnumDeclaration, Issue> {
2222

2323
@Inject
2424
public FixRedundantStaticOnEnumCodemod(
25-
@ProvidedSonarScan(ruleId = "java:S2786") final RuleIssues issues) {
25+
@ProvidedSonarScan(ruleId = "java:S2786") final RuleIssue issues) {
2626
super(issues, EnumDeclaration.class);
2727
}
2828

2929
@Override
30-
public ChangesResult onIssueFound(
30+
public ChangesResult onFindingFound(
3131
final CodemodInvocationContext context,
3232
final CompilationUnit cu,
3333
final EnumDeclaration enumDecl,

core-codemods/src/main/java/io/codemodder/codemods/HardenStringParseToPrimitivesCodemod.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import io.codemodder.codetf.DetectorRule;
1010
import io.codemodder.javaparser.ChangesResult;
1111
import io.codemodder.providers.sonar.ProvidedSonarScan;
12-
import io.codemodder.providers.sonar.RuleIssues;
12+
import io.codemodder.providers.sonar.RuleIssue;
1313
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1414
import io.codemodder.sonar.model.Issue;
1515
import java.util.Optional;
@@ -50,11 +50,11 @@ private static Optional<String> determineParsingMethodForType(final String type)
5050
* or new Float("12").
5151
*/
5252
private static final class HardenParseForConstructorChanger
53-
extends SonarPluginJavaParserChanger<ObjectCreationExpr> {
53+
extends SonarPluginJavaParserChanger<ObjectCreationExpr, Issue> {
5454

5555
@Inject
5656
public HardenParseForConstructorChanger(
57-
@ProvidedSonarScan(ruleId = "java:S2130") final RuleIssues issues) {
57+
@ProvidedSonarScan(ruleId = "java:S2130") final RuleIssue issues) {
5858
super(
5959
issues,
6060
ObjectCreationExpr.class,
@@ -63,7 +63,7 @@ public HardenParseForConstructorChanger(
6363
}
6464

6565
@Override
66-
public ChangesResult onIssueFound(
66+
public ChangesResult onFindingFound(
6767
final CodemodInvocationContext context,
6868
final CompilationUnit cu,
6969
final ObjectCreationExpr objectCreationExpr,
@@ -112,11 +112,11 @@ public DetectorRule detectorRule() {
112112
* Integer or Float classes.
113113
*/
114114
private static final class HardenParseForValueOfChanger
115-
extends SonarPluginJavaParserChanger<MethodCallExpr> {
115+
extends SonarPluginJavaParserChanger<MethodCallExpr, Issue> {
116116

117117
@Inject
118118
public HardenParseForValueOfChanger(
119-
@ProvidedSonarScan(ruleId = "java:S2130") final RuleIssues issues) {
119+
@ProvidedSonarScan(ruleId = "java:S2130") final RuleIssue issues) {
120120
super(
121121
issues,
122122
MethodCallExpr.class,
@@ -125,7 +125,7 @@ public HardenParseForValueOfChanger(
125125
}
126126

127127
@Override
128-
public ChangesResult onIssueFound(
128+
public ChangesResult onFindingFound(
129129
final CodemodInvocationContext context,
130130
final CompilationUnit cu,
131131
final MethodCallExpr methodCallExpr,

core-codemods/src/main/java/io/codemodder/codemods/OverridesMatchParentSynchronizationCodemod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import io.codemodder.codetf.DetectorRule;
99
import io.codemodder.javaparser.ChangesResult;
1010
import io.codemodder.providers.sonar.ProvidedSonarScan;
11-
import io.codemodder.providers.sonar.RuleIssues;
11+
import io.codemodder.providers.sonar.RuleIssue;
1212
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1313
import io.codemodder.sonar.model.Issue;
1414
import java.util.Optional;
@@ -24,16 +24,16 @@
2424
importance = Importance.MEDIUM,
2525
executionPriority = CodemodExecutionPriority.HIGH)
2626
public final class OverridesMatchParentSynchronizationCodemod
27-
extends SonarPluginJavaParserChanger<SimpleName> {
27+
extends SonarPluginJavaParserChanger<SimpleName, Issue> {
2828

2929
@Inject
3030
public OverridesMatchParentSynchronizationCodemod(
31-
@ProvidedSonarScan(ruleId = "java:S3551") final RuleIssues issues) {
31+
@ProvidedSonarScan(ruleId = "java:S3551") final RuleIssue issues) {
3232
super(issues, SimpleName.class);
3333
}
3434

3535
@Override
36-
public ChangesResult onIssueFound(
36+
public ChangesResult onFindingFound(
3737
CodemodInvocationContext context, CompilationUnit cu, SimpleName methodName, Issue issue) {
3838
Optional<Node> parentNodeRef = methodName.getParentNode();
3939
if (parentNodeRef.isPresent()) {

core-codemods/src/main/java/io/codemodder/codemods/RemoveCommentedCodeCodemod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import io.codemodder.codetf.DetectorRule;
77
import io.codemodder.javaparser.ChangesResult;
88
import io.codemodder.providers.sonar.ProvidedSonarScan;
9-
import io.codemodder.providers.sonar.RuleIssues;
9+
import io.codemodder.providers.sonar.RuleIssue;
1010
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1111
import io.codemodder.sonar.model.Issue;
1212
import javax.inject.Inject;
@@ -22,7 +22,7 @@
2222
reviewGuidance = ReviewGuidance.MERGE_WITHOUT_REVIEW,
2323
importance = Importance.HIGH,
2424
executionPriority = CodemodExecutionPriority.HIGH)
25-
public final class RemoveCommentedCodeCodemod extends SonarPluginJavaParserChanger<Comment> {
25+
public final class RemoveCommentedCodeCodemod extends SonarPluginJavaParserChanger<Comment, Issue> {
2626

2727
/**
2828
* The reason behind this specific region node matcher is that in the reported column by
@@ -36,13 +36,13 @@ public final class RemoveCommentedCodeCodemod extends SonarPluginJavaParserChang
3636

3737
@Inject
3838
public RemoveCommentedCodeCodemod(
39-
@ProvidedSonarScan(ruleId = "java:S125") final RuleIssues issues) {
39+
@ProvidedSonarScan(ruleId = "java:S125") final RuleIssue issues) {
4040

4141
super(issues, Comment.class, regionNodeMatcher, NodeCollector.ALL_COMMENTS);
4242
}
4343

4444
@Override
45-
public ChangesResult onIssueFound(
45+
public ChangesResult onFindingFound(
4646
final CodemodInvocationContext context,
4747
final CompilationUnit cu,
4848
final Comment comment,

core-codemods/src/main/java/io/codemodder/codemods/RemoveRedundantVariableCreationCodemod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import io.codemodder.codetf.DetectorRule;
88
import io.codemodder.javaparser.ChangesResult;
99
import io.codemodder.providers.sonar.ProvidedSonarScan;
10-
import io.codemodder.providers.sonar.RuleIssues;
10+
import io.codemodder.providers.sonar.RuleIssue;
1111
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1212
import io.codemodder.sonar.model.Issue;
1313
import java.util.Optional;
@@ -20,16 +20,16 @@
2020
importance = Importance.LOW,
2121
executionPriority = CodemodExecutionPriority.HIGH)
2222
public final class RemoveRedundantVariableCreationCodemod
23-
extends SonarPluginJavaParserChanger<ObjectCreationExpr> {
23+
extends SonarPluginJavaParserChanger<ObjectCreationExpr, Issue> {
2424

2525
@Inject
2626
public RemoveRedundantVariableCreationCodemod(
27-
@ProvidedSonarScan(ruleId = "java:S1488") final RuleIssues issues) {
27+
@ProvidedSonarScan(ruleId = "java:S1488") final RuleIssue issues) {
2828
super(issues, ObjectCreationExpr.class);
2929
}
3030

3131
@Override
32-
public ChangesResult onIssueFound(
32+
public ChangesResult onFindingFound(
3333
final CodemodInvocationContext context,
3434
final CompilationUnit cu,
3535
final ObjectCreationExpr objectCreationExpr,

core-codemods/src/main/java/io/codemodder/codemods/RemoveUnusedImportCodemod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import io.codemodder.codetf.DetectorRule;
1313
import io.codemodder.javaparser.ChangesResult;
1414
import io.codemodder.providers.sonar.ProvidedSonarScan;
15-
import io.codemodder.providers.sonar.RuleIssues;
15+
import io.codemodder.providers.sonar.RuleIssue;
1616
import io.codemodder.providers.sonar.SonarPluginJavaParserChanger;
1717
import io.codemodder.sonar.model.Issue;
1818
import javax.inject.Inject;
@@ -23,11 +23,11 @@
2323
importance = Importance.LOW,
2424
executionPriority = CodemodExecutionPriority.HIGH)
2525
public final class RemoveUnusedImportCodemod
26-
extends SonarPluginJavaParserChanger<ImportDeclaration> {
26+
extends SonarPluginJavaParserChanger<ImportDeclaration, Issue> {
2727

2828
@Inject
2929
public RemoveUnusedImportCodemod(
30-
@ProvidedSonarScan(ruleId = "java:S1128") final RuleIssues issues) {
30+
@ProvidedSonarScan(ruleId = "java:S1128") final RuleIssue issues) {
3131
super(
3232
issues,
3333
ImportDeclaration.class,
@@ -42,7 +42,7 @@ public RemoveUnusedImportCodemod(
4242
}
4343

4444
@Override
45-
public ChangesResult onIssueFound(
45+
public ChangesResult onFindingFound(
4646
CodemodInvocationContext context, CompilationUnit cu, ImportDeclaration node, Issue issue) {
4747
if (issue.getMessage().contains(node.getNameAsString())) {
4848
return cu.remove(node) ? ChangesResult.changesApplied : ChangesResult.noChanges;

0 commit comments

Comments
 (0)