Skip to content

Commit

Permalink
[69] NullPointer exception in eco code java Sonar plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
rrousset-michelin committed Oct 3, 2024
1 parent 55781ac commit e43b26d
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- [#49](https://github.com/green-code-initiative/ecoCode-java/pull/49) Add test to ensure all Rules are registered
- [#336](https://github.com/green-code-initiative/ecoCode/issues/336) [Adds Maven Wrapper](https://github.com/green-code-initiative/ecoCode-java/pull/67)
- [#69](https://github.com/green-code-initiative/ecoCode-java/pull/69) correction of NullPointer in EC79 rule

### Deleted

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ public void visitNode(Tree tree) {
@Override
public void leaveNode(Tree tree) {
if (tree.is(Tree.Kind.TRY_STATEMENT)) {
if(!withinTry.isEmpty()) {
withinTry.pop();
}
List<Tree> secondaryTrees = toReport.pop();
if (!secondaryTrees.isEmpty()) {
reportIssue(tree, MESSAGE_RULE);
Expand Down
45 changes: 45 additions & 0 deletions src/test/files/FreeResourcesOfAutoCloseableInterface2.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package files;

import java.io.FileWriter;
import java.io.IOException;

/*
* ecoCode - Java language - Provides rules to reduce the environmental footprint of your Java programs
* Copyright © 2023 Green Code Initiative (https://www.ecocode.io)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
public class FreeResourcesOfAutoCloseableInterface2 {

/**
* The first methods adds a "try" in the stack used to follow if the code is in a try
*/
public void callingMethodWithTheTry() throws IOException {
try {
calledMethodWithoutTry();
} finally {
// Empty block of code
}
}

/**
* The "try" should have been poped from the stack before entering here
*/
private void calledMethodWithoutTry() throws IOException {
FileWriter myWriter = new FileWriter("somefilepath");
myWriter.write("something");
myWriter.flush();
myWriter.close();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,11 @@ void test_no_java_version() {
.withCheck(new FreeResourcesOfAutoCloseableInterface())
.verifyIssues();
}
@Test
void test_when_try_before_auto_closeable_but_different_hierarchy_of_code() {
CheckVerifier.newVerifier()
.onFile("src/test/files/FreeResourcesOfAutoCloseableInterface2.java")
.withCheck(new FreeResourcesOfAutoCloseableInterface())
.verifyNoIssues();
}
}

0 comments on commit e43b26d

Please sign in to comment.