diff --git a/src/main/java/apiaddicts/sonar/openapi/checks/format/OAR098LongBasePathCheck.java b/src/main/java/apiaddicts/sonar/openapi/checks/format/OAR098LongBasePathCheck.java index 6556d73..bb9ee57 100644 --- a/src/main/java/apiaddicts/sonar/openapi/checks/format/OAR098LongBasePathCheck.java +++ b/src/main/java/apiaddicts/sonar/openapi/checks/format/OAR098LongBasePathCheck.java @@ -1,26 +1,31 @@ package apiaddicts.sonar.openapi.checks.format; +import apiaddicts.sonar.openapi.checks.BaseCheck; import com.google.common.collect.ImmutableSet; import com.sonar.sslr.api.AstNodeType; -import org.sonar.check.Rule; -import org.apiaddicts.apitools.dosonarapi.api.v2.OpenApi2Grammar; -import org.apiaddicts.apitools.dosonarapi.api.v3.OpenApi3Grammar; -import org.apiaddicts.apitools.dosonarapi.api.v31.OpenApi31Grammar; -import apiaddicts.sonar.openapi.checks.BaseCheck; -import org.apiaddicts.apitools.dosonarapi.sslr.yaml.grammar.JsonNode; - import java.net.MalformedURLException; import java.net.URL; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apiaddicts.apitools.dosonarapi.api.v2.OpenApi2Grammar; +import org.apiaddicts.apitools.dosonarapi.api.v3.OpenApi3Grammar; +import org.apiaddicts.apitools.dosonarapi.api.v31.OpenApi31Grammar; +import org.apiaddicts.apitools.dosonarapi.sslr.yaml.grammar.JsonNode; +import org.sonar.check.Rule; +import org.sonar.check.RuleProperty; @Rule(key = OAR098LongBasePathCheck.KEY) public class OAR098LongBasePathCheck extends BaseCheck { public static final String KEY = "OAR098"; + private static final int LONG_BASE_PATH = 2; + + @RuleProperty(key = "long-base-path", description = "long of the path in the basepath keywork value", defaultValue = "" + LONG_BASE_PATH ) + private static int basePahtLength = LONG_BASE_PATH; + @Override public Set subscribedKinds() { return ImmutableSet.of(OpenApi2Grammar.ROOT, OpenApi3Grammar.SERVER, OpenApi31Grammar.SERVER); @@ -55,7 +60,7 @@ private void visitV3ServerNode(JsonNode node) { private void validatePath(String path, JsonNode node) { List pathParts = Stream.of(path.split("/")).map(String::trim).filter(s -> !s.isEmpty()).collect(Collectors.toList()); - if (pathParts.size() > 2) { + if (pathParts.size() > basePahtLength) { addIssue(KEY, translate("OAR098.error-path-long"), node.value()); } } diff --git a/src/test/java/org/sonar/samples/openapi/checks/format/OAR098LongBasePathCheckTest.java b/src/test/java/org/sonar/samples/openapi/checks/format/OAR098LongBasePathCheckTest.java index e5bfb87..7d43ad2 100644 --- a/src/test/java/org/sonar/samples/openapi/checks/format/OAR098LongBasePathCheckTest.java +++ b/src/test/java/org/sonar/samples/openapi/checks/format/OAR098LongBasePathCheckTest.java @@ -1,13 +1,13 @@ package org.sonar.samples.openapi.checks.format; +import apiaddicts.sonar.openapi.checks.format.OAR098LongBasePathCheck; import org.junit.Before; import org.junit.Test; import org.sonar.api.rule.Severity; import org.sonar.api.rules.RuleType; +import org.sonar.api.server.rule.RuleParamType; import org.sonar.samples.openapi.BaseCheckTest; -import apiaddicts.sonar.openapi.checks.format.OAR098LongBasePathCheck; - public class OAR098LongBasePathCheckTest extends BaseCheckTest { @Before @@ -45,6 +45,7 @@ public void verifyRule() { @Override public void verifyParameters() { - assertNumberOfParameters(0); + assertNumberOfParameters(1); + assertParameterProperties("long-base-path", "2", RuleParamType.INTEGER); } } \ No newline at end of file