Browse Source

SONAR-12499 - Increase the size of security standard facets returned in issue search

tags/9.4.0.54424
Léo Geoffroy 2 years ago
parent
commit
965034a2fb

+ 2
- 1
server/sonar-server-common/src/main/java/org/sonar/server/rule/index/RuleIndex.java View File

@@ -63,6 +63,7 @@ import org.sonar.server.es.SearchOptions;
import org.sonar.server.es.StickyFacetBuilder;
import org.sonar.server.es.newindex.DefaultIndexSettings;
import org.sonar.server.es.textsearch.JavaTokenizer;
import org.sonar.server.security.SecurityStandards;

import static com.google.common.base.Preconditions.checkArgument;
import static java.lang.Boolean.FALSE;
@@ -506,7 +507,7 @@ public class RuleIndex {
Collection<String> categories = query.getSonarsourceSecurity();
aggregations.put(FACET_SONARSOURCE_SECURITY,
stickyFacetBuilder.buildStickyFacet(FIELD_RULE_SONARSOURCE_SECURITY, FACET_SONARSOURCE_SECURITY,
FACET_DEFAULT_SIZE, filterSecurityCategories(),
SecurityStandards.SQCategory.values().length, filterSecurityCategories(),
(categories == null) ? (new String[0]) : categories.toArray()));
}
}

+ 25
- 0
server/sonar-server-common/src/test/java/org/sonar/server/rule/index/RuleIndexTest.java View File

@@ -21,10 +21,15 @@ package org.sonar.server.rule.index;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import org.assertj.core.api.Assertions;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.impl.utils.AlwaysIncreasingSystem2;
@@ -40,6 +45,7 @@ import org.sonar.server.es.Facets;
import org.sonar.server.es.SearchIdResult;
import org.sonar.server.es.SearchOptions;
import org.sonar.server.qualityprofile.index.ActiveRuleIndexer;
import org.sonar.server.security.SecurityStandards;

import static com.google.common.collect.ImmutableSet.of;
import static java.util.Arrays.asList;
@@ -505,6 +511,25 @@ public class RuleIndexTest {
assertThat(results.getUuids()).containsOnly(rule1.getUuid(), rule3.getUuid());
}

@Test
public void search_by_security_sonarsource_return_complete_list_of_facets() {

List<RuleDefinitionDto> rules = new ArrayList<>();

//Creation of one rule for each standard security category defined (except other)
for (Map.Entry<SecurityStandards.SQCategory, Set<String>> sqCategorySetEntry : SecurityStandards.CWES_BY_SQ_CATEGORY.entrySet()) {
rules.add(createRule(setSecurityStandards(of("cwe:" + sqCategorySetEntry.getValue().iterator().next())), r -> r.setType(SECURITY_HOTSPOT)));
}
index();

RuleQuery query = new RuleQuery();
SearchIdResult<String> results = underTest.search(query, new SearchOptions().addFacets("sonarsourceSecurity"));

assertThat(results.getFacets().get("sonarsourceSecurity"))
.as("It should have as many facets returned as there are rules defined, and it is not truncated")
.hasSize(rules.size());
}

@Test
public void compare_to_another_profile() {
String xoo = "xoo";

Loading…
Cancel
Save