Skip to content

Commit a9c8177

Browse files
vilchik-elenapynicolas
authored andcommitted
SONARJS-599 Update message of ConstructorFunctionsForSideEffectsCheck
1 parent 6faec0d commit a9c8177

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

javascript-checks/src/main/java/org/sonar/javascript/checks/ConstructorFunctionsForSideEffectsCheck.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
import org.sonar.api.server.rule.RulesDefinition;
2323
import org.sonar.check.Priority;
2424
import org.sonar.check.Rule;
25+
import org.sonar.javascript.checks.utils.CheckUtils;
26+
import org.sonar.plugins.javascript.api.tree.Tree;
2527
import org.sonar.plugins.javascript.api.tree.Tree.Kind;
28+
import org.sonar.plugins.javascript.api.tree.expression.NewExpressionTree;
2629
import org.sonar.plugins.javascript.api.tree.statement.ExpressionStatementTree;
2730
import org.sonar.plugins.javascript.api.visitors.BaseTreeVisitor;
2831
import org.sonar.squidbridge.annotations.ActivatedByDefault;
@@ -39,12 +42,14 @@
3942
@SqaleConstantRemediation("5min")
4043
public class ConstructorFunctionsForSideEffectsCheck extends BaseTreeVisitor {
4144

42-
private static final String MESSAGE = "Replace by a standard call to the function.";
45+
private static final String MESSAGE = "Either remove this useless object instantiation of \"%s\" or use it";
4346

4447
@Override
4548
public void visitExpressionStatement(ExpressionStatementTree tree) {
46-
if (tree.expression().is(Kind.NEW_EXPRESSION)) {
47-
getContext().addIssue(this, tree, MESSAGE);
49+
Tree expression = tree.expression();
50+
if (expression.is(Kind.NEW_EXPRESSION)) {
51+
String message = String.format(MESSAGE, CheckUtils.asString(((NewExpressionTree) expression).expression()));
52+
getContext().addIssue(this, expression, message);
4853
}
4954

5055
super.visitExpressionStatement(tree);

javascript-checks/src/test/java/org/sonar/javascript/checks/ConstructorFunctionsForSideEffectsCheckTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,15 @@
1919
*/
2020
package org.sonar.javascript.checks;
2121

22+
import java.io.File;
2223
import org.junit.Test;
24+
import org.sonar.javascript.checks.utils.JavaScriptCheckVerifier;
2325
import org.sonar.plugins.javascript.api.tests.TreeCheckTest;
24-
import org.sonar.squidbridge.checks.CheckMessagesVerifier;
2526

2627
public class ConstructorFunctionsForSideEffectsCheckTest extends TreeCheckTest {
2728

2829
@Test
2930
public void test() {
30-
CheckMessagesVerifier.verify(getIssues("src/test/resources/checks/constructorFunctionsForSideEffects.js", new ConstructorFunctionsForSideEffectsCheck()))
31-
.next().atLine(4).withMessage("Replace by a standard call to the function.")
32-
.noMore();
31+
JavaScriptCheckVerifier.verify(new ConstructorFunctionsForSideEffectsCheck(), new File("src/test/resources/checks/constructorFunctionsForSideEffects.js"));
3332
}
3433
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export default new MyConstructor(); // OK
22
var something = new MyConstructor(); // OK
33
something = new MyConstructor(); // OK
4-
new MyConstructor(); // NOK
4+
new MyConstructor(); // Noncompliant {{Either remove this useless object instantiation of "MyConstructor" or use it}}
55
callMethod(new MyConstructor()); // OK
66
new MyConstructor().doSomething(); // OK

0 commit comments

Comments
 (0)