import javax.annotation.Nullable;
import org.apache.commons.lang.BooleanUtils;
import org.jetbrains.annotations.NotNull;
+import org.sonar.api.code.CodeCharacteristic;
import org.sonar.api.resources.Qualifiers;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rules.RuleType;
.filter(s -> !s.equals(STATUS_TO_REVIEW))
.filter(s -> !s.equals(STATUS_REVIEWED))
.collect(ImmutableList.toImmutableList());
+ public static final Set<String> CHARACTERISTICS = Arrays.stream(CodeCharacteristic.values())
+ .map(Enum::name)
+ .collect(Collectors.toSet());
public static final Set<String> ISSUE_TYPE_NAMES = Arrays.stream(RuleType.values())
.filter(t -> t != RuleType.SECURITY_HOTSPOT)
.map(Enum::name)
assertThat(issuesList.stream().filter(f -> f.getCharacteristic() == Common.RuleCharacteristic.ROBUST)).hasSize(1);
}
+ @Test
+ public void handle_whenCharacteristicsFacetAsked_shouldAlwaysReturnCompleteListOfCharacteristics() {
+ SearchWsResponse searchWsResponse = ws.newRequest()
+ .setParam(FACETS, "characteristics")
+ .executeProtobuf(SearchWsResponse.class);
+
+ assertThat(searchWsResponse.getFacets().getFacetsCount()).isEqualTo(1);
+ assertThat(searchWsResponse.getFacets().getFacets(0).getValuesCount()).isEqualTo(CodeCharacteristic.values().length);
+ }
+
@Test
public void search_by_characteristic_when_characteristic_set() {
RuleDto rule1 = newIssueRule(XOO_X1, r -> r.setCharacteristic(CodeCharacteristic.PORTABLE));
import static org.sonar.server.es.SearchOptions.MAX_PAGE_SIZE;
import static org.sonar.server.issue.index.IssueIndex.FACET_ASSIGNED_TO_ME;
import static org.sonar.server.issue.index.IssueIndex.FACET_PROJECTS;
+import static org.sonar.server.issue.index.IssueQueryFactory.CHARACTERISTICS;
import static org.sonar.server.issue.index.IssueQueryFactory.ISSUE_STATUSES;
import static org.sonar.server.issue.index.IssueQueryFactory.UNKNOWN;
import static org.sonar.server.security.SecurityStandards.SANS_TOP_25_INSECURE_INTERACTION;
action.createParam(PARAM_CHARACTERISTICS)
.setDescription("Comma-separated list of characteristics.")
.setSince("10.1")
- .setPossibleValues(Arrays.stream(CodeCharacteristic.values()).map(Enum::name).toList())
+ .setPossibleValues(CHARACTERISTICS)
.setExampleValue(format(COMMA_SEPERATED_PARAMS_FORMAT, CodeCharacteristic.CLEAR, CodeCharacteristic.COMPLIANT));
action.createParam(PARAM_OWASP_ASVS_LEVEL)
.setDescription("Level of OWASP ASVS categories.")
addMandatoryValuesToFacet(facets, PARAM_SCOPES, ISSUE_SCOPES);
addMandatoryValuesToFacet(facets, PARAM_LANGUAGES, request.getLanguages());
addMandatoryValuesToFacet(facets, PARAM_TAGS, request.getTags());
- addMandatoryValuesToFacet(facets, PARAM_CHARACTERISTICS, request.getCharacteristics());
+ addMandatoryValuesToFacet(facets, PARAM_CHARACTERISTICS, CHARACTERISTICS);
setTypesFacet(facets);