Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* SonarQube JavaScript Plugin
* Copyright (C) 2011-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.javascript.checks.verifier;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Ordering;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.javascript.checks.verifier.TestIssue.Location;
import org.sonar.javascript.se.SeCheck;
import org.sonar.javascript.se.SeChecksDispatcher;
import org.sonar.javascript.visitors.JavaScriptVisitorContext;
import org.sonar.plugins.javascript.api.JavaScriptCheck;
import org.sonar.plugins.javascript.api.visitors.Issue;
import org.sonar.plugins.javascript.api.visitors.IssueLocation;
import org.sonar.plugins.javascript.api.visitors.LineIssue;
import org.sonar.plugins.javascript.api.visitors.PreciseIssue;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;
public class JavaScriptCheckVerifier {
private JavaScriptCheckVerifier() {
}
/**
* Example:
*
* JavaScriptCheckVerifier.issues(new MyCheck(), myFile))
* .next().atLine(2).withMessage("This is message for line 2.")
* .next().atLine(3).withMessage("This is message for line 3.").withCost(2.)
* .next().atLine(8)
* .noMore();
*
*/
public static CheckMessagesVerifier issues(JavaScriptCheck check, File file) {
return CheckMessagesVerifier.verify(TreeCheckTest.getIssues(file.getAbsolutePath(), check));
}
/**
* To use this message you should provide a comment on each line of the source file where you expect an issue.
* For example:
*
* var x = 1; // Noncompliant {{A message for this line.}}
*
* function foo() { // Noncompliant [[effortToFix=2]] [[secondary=+0,+1]] [[sc=5;ec=6;el=+0]]
* }
*
* How to write these comments:
*
*
Put a comment starting with "Noncompliant" if you expect an issue on this line.
*
If for some reason you can't put comment on a line with issue, put "@+N" just after "Noncompliant" for issue located N lines after the one with comment
*
In double curly braces {{MESSAGE}} provide expected message.
*
In double brackets provide expected effort to fix (cost) with effortToFix keyword.
*
In double brackets provide precise location description with sc, ec, el keywords respectively for start column, end column and end line.
*
Since version 2.13 to specify precise location you can provide separate comment on next line which contains
* symbol ^ under each character of issue location.
*
* x = a && a; // Noncompliant
* // ^^
*
*
Since version 2.15 to specify precise secondary location you can provide separate comment on next line which contains
* symbol ^ under each character of secondary issue location.
* Start comment with "S" symbol and put after "^" ID of issue (specify it in double square brackets).
* You can optionally provide message of secondary location.
*
*
* x = a && a; // Noncompliant [[id=SomeID]]
* //S ^^ SomeID {{secondary message}}
*
*
In double brackets provide secondary locations with secondary keyword.
*
To specify the line you can use relative location by putting + or -.
*
All listed elements are optional (except "Noncompliant").