wsSupport.checkCanEdit(dbSession, organization, profile);
wsSupport.checkNotBuiltInt(profile);
RuleQuery ruleQuery = ruleQueryFactory.createRuleQuery(dbSession, request);
- ruleQuery.setIsExternal(false);
+ ruleQuery.setIncludeExternal(false);
result = qProfileRules.bulkActivateAndCommit(dbSession, profile, ruleQuery, request.param(PARAM_TARGET_SEVERITY));
}
OrganizationDto organization = wsSupport.getOrganization(dbSession, profile);
wsSupport.checkCanEdit(dbSession, organization, profile);
RuleQuery ruleQuery = ruleQueryFactory.createRuleQuery(dbSession, request);
- ruleQuery.setIsExternal(false);
+ ruleQuery.setIncludeExternal(false);
result = ruleActivator.bulkDeactivateAndCommit(dbSession, profile, ruleQuery);
}
writeResponse(result, response);
QueryBuilders.termQuery(FIELD_RULE_IS_TEMPLATE, Boolean.toString(isTemplate)));
}
- Boolean isExternal = query.isExternal();
+ Boolean isExternal = query.includeExternal();
if (isExternal != null) {
filters.put(FIELD_RULE_IS_EXTERNAL,
QueryBuilders.termQuery(FIELD_RULE_IS_EXTERNAL, Boolean.toString(isExternal)));
private String internalKey;
private String ruleKey;
private OrganizationDto organization;
- private Boolean isExternal;
+ private Boolean includeExternal;
@CheckForNull
public QProfileDto getQProfile() {
return this;
}
- @CheckForNull
- public Boolean isExternal() {
- return isExternal;
+ public Boolean includeExternal() {
+ return includeExternal;
}
- public RuleQuery setIsExternal(@Nullable Boolean b) {
- this.isExternal = b;
+ public RuleQuery setIncludeExternal(@Nullable Boolean b) {
+ this.includeExternal = b;
return this;
}
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_COMPARE_TO_PROFILE;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_INHERITANCE;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_IS_TEMPLATE;
-import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_IS_EXTERNAL;
+import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_INCLUDE_EXTERNAL;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_LANGUAGES;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_ORGANIZATION;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_QPROFILE;
*/
public RuleQuery createRuleSearchQuery(DbSession dbSession, Request request) {
RuleQuery query = createRuleQuery(dbSession, request);
- query.setIsExternal(request.mandatoryParamAsBoolean(PARAM_IS_EXTERNAL));
+ query.setIncludeExternal(request.mandatoryParamAsBoolean(PARAM_INCLUDE_EXTERNAL));
return query;
}
public static final String PARAM_INHERITANCE = "inheritance";
public static final String PARAM_ACTIVE_SEVERITIES = "active_severities";
public static final String PARAM_IS_TEMPLATE = "is_template";
- public static final String PARAM_IS_EXTERNAL = "is_external";
+ public static final String PARAM_INCLUDE_EXTERNAL = "include_external";
public static final String PARAM_TEMPLATE_KEY = "template_key";
public static final String PARAM_ORGANIZATION = "organization";
public static final String PARAM_COMPARE_TO_PROFILE = "compareToProfile";
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_ACTIVE_SEVERITIES;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_AVAILABLE_SINCE;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_COMPARE_TO_PROFILE;
+import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_INCLUDE_EXTERNAL;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_INHERITANCE;
-import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_IS_EXTERNAL;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_IS_TEMPLATE;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_LANGUAGES;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_ORGANIZATION;
static void defineIsExternalParam(WebService.NewAction action) {
action
- .createParam(PARAM_IS_EXTERNAL)
- .setDescription("Filter external engine rules")
+ .createParam(PARAM_INCLUDE_EXTERNAL)
+ .setDescription("Include external engine rules in the results")
.setDefaultValue(false)
.setBooleanPossibleValues()
.setSince("7.2");
import org.junit.rules.ExpectedException;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rule.RuleStatus;
+import org.sonar.api.rule.Severity;
+import org.sonar.api.rules.RuleType;
import org.sonar.api.utils.System2;
import org.sonar.api.utils.internal.AlwaysIncreasingSystem2;
import org.sonar.db.DbTester;
import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.qualityprofile.QProfileDto;
import org.sonar.db.rule.RuleDefinitionDto;
+import org.sonar.db.rule.RuleDto;
import org.sonar.db.rule.RuleMetadataDto;
+import org.sonar.db.rule.RuleDto.Scope;
import org.sonar.server.es.EsTester;
import org.sonar.server.es.Facets;
import org.sonar.server.es.SearchIdResult;
import org.sonar.server.qualityprofile.index.ActiveRuleIndexer;
import static com.google.common.collect.ImmutableSet.of;
+import static com.google.common.collect.Sets.newHashSet;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.Collections.emptySet;
assertThat(results).containsOnly(rule.getId());
}
+ @Test
+ public void search_external_rule() {
+
+ RuleDefinitionDto rule = new RuleDefinitionDto()
+ .setId(123)
+ .setRuleKey("S001")
+ .setRepositoryKey("external_xoo")
+ .setName("xoo:S001")
+ .setSeverity(Severity.BLOCKER)
+ .setStatus(RuleStatus.READY)
+ .setIsTemplate(false)
+ .setIsExternal(true)
+ .setType(RuleType.BUG)
+ .setScope(Scope.ALL)
+ .setCreatedAt(1500000000000L)
+ .setUpdatedAt(1600000000000L);
+
+ db.rules().insert(rule);
+ index();
+
+ assertThat(underTest.search(new RuleQuery().setQueryText("external_xoo:S001"), new SearchOptions()).getIds())
+ .containsExactlyInAnyOrder(rule.getId());
+ }
+
@Test
public void search_content_by_query() {
RuleDefinitionDto rule1 = createJavaRule(rule -> rule.setRuleKey("123").setDescription("My great rule CWE-123 which makes your code 1000 times better!"));
// find all
RuleQuery query = new RuleQuery();
- SearchIdResult<Integer> results = underTest.search(query, new SearchOptions());
+ SearchIdResult<Integer> results = underTest.search(query, new SearchOptions());
assertThat(results.getIds()).hasSize(2);
// Only template
results = underTest.search(query, new SearchOptions());
assertThat(results.getIds()).containsOnly(ruleIsTemplate.getId(), ruleNoTemplate.getId());
}
-
+
@Test
public void search_by_is_external() {
RuleDefinitionDto ruleIsNotExternal = createRule(setIsExternal(false));
assertThat(results.getIds()).hasSize(2);
// Only external
- query = new RuleQuery().setIsExternal(true);
+ query = new RuleQuery().setIncludeExternal(true);
results = underTest.search(query, new SearchOptions());
assertThat(results.getIds()).containsOnly(ruleIsExternal.getId());
// Only not external
- query = new RuleQuery().setIsExternal(false);
+ query = new RuleQuery().setIncludeExternal(false);
results = underTest.search(query, new SearchOptions());
assertThat(results.getIds()).containsOnly(ruleIsNotExternal.getId());
// null => no filter
- query = new RuleQuery().setIsExternal(null);
+ query = new RuleQuery().setIncludeExternal(null);
results = underTest.search(query, new SearchOptions());
assertThat(results.getIds()).containsOnly(ruleIsExternal.getId(), ruleIsNotExternal.getId());
}
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_AVAILABLE_SINCE;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_COMPARE_TO_PROFILE;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_INHERITANCE;
-import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_IS_EXTERNAL;
+import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_INCLUDE_EXTERNAL;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_IS_TEMPLATE;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_LANGUAGES;
import static org.sonar.server.rule.ws.RulesWsParameters.PARAM_ORGANIZATION;
assertThat(result.isAscendingSort()).isTrue();
assertThat(result.getAvailableSinceLong()).isNull();
assertThat(result.getInheritance()).isNull();
- assertThat(result.isExternal()).isNull();
+ assertThat(result.includeExternal()).isNull();
assertThat(result.isTemplate()).isNull();
assertThat(result.getLanguages()).isNull();
assertThat(result.getQueryText()).isNull();
PARAM_AVAILABLE_SINCE, "2016-01-01",
PARAM_INHERITANCE, "INHERITED,OVERRIDES",
PARAM_IS_TEMPLATE, "true",
- PARAM_IS_EXTERNAL, "false",
+ PARAM_INCLUDE_EXTERNAL, "false",
PARAM_LANGUAGES, "java,js",
TEXT_QUERY, "S001",
PARAM_ORGANIZATION, organization.getKey(),
ASCENDING, "false");
assertResult(result, qualityProfile, compareToQualityProfile);
- assertThat(result.isExternal()).isFalse();
+ assertThat(result.includeExternal()).isFalse();
}
@Test
- public void is_external_is_mandatory_for_rule_search_query() {
+ public void include_external_is_mandatory_for_rule_search_query() {
dbTester.qualityProfiles().insert(organization);
dbTester.qualityProfiles().insert(organization);
Request request = new SimpleGetRequest();
expectedException.expect(IllegalArgumentException.class);
- expectedException.expectMessage("The 'is_external' parameter is missing");
+ expectedException.expectMessage("The 'include_external' parameter is missing");
underTest.createRuleSearchQuery(dbTester.getSession(), request);
}
PARAM_AVAILABLE_SINCE, "2016-01-01",
PARAM_INHERITANCE, "INHERITED,OVERRIDES",
PARAM_IS_TEMPLATE, "true",
- PARAM_IS_EXTERNAL, "true",
+ PARAM_INCLUDE_EXTERNAL, "true",
PARAM_LANGUAGES, "java,js",
TEXT_QUERY, "S001",
PARAM_ORGANIZATION, organization.getKey(),
ASCENDING, "false");
assertResult(result, qualityProfile, compareToQualityProfile);
- assertThat(result.isExternal()).isNull();
+ assertThat(result.includeExternal()).isNull();
}
private void assertResult(RuleQuery result, QProfileDto qualityProfile, QProfileDto compareToQualityProfile) {
.setParam("facets", request.getFacets() == null ? null : request.getFacets().stream().collect(Collectors.joining(",")))
.setParam("inheritance", request.getInheritance() == null ? null : request.getInheritance().stream().collect(Collectors.joining(",")))
.setParam("is_template", request.getIsTemplate())
- .setParam("is_external", request.getIsExternal())
+ .setParam("include_external", request.getIncludeExternal())
.setParam("languages", request.getLanguages() == null ? null : request.getLanguages().stream().collect(Collectors.joining(",")))
.setParam("organization", request.getOrganization())
.setParam("p", request.getP())
private List<String> f;
private List<String> facets;
private List<String> inheritance;
- private String isExternal;
+ private String includeExternal;
private String isTemplate;
private List<String> languages;
private String organization;
* <li>"no"</li>
* </ul>
*/
- public SearchRequest setIsExternal(String isExternal) {
- this.isExternal = isExternal;
+ public SearchRequest setIncludeExternal(String includeExternal) {
+ this.includeExternal = includeExternal;
return this;
}
- public String getIsExternal() {
- return isExternal;
+ public String getIncludeExternal() {
+ return includeExternal;
}
/**
List<org.sonarqube.ws.Rules.Rule> rulesList = tester.wsClient().rules()
.search(new org.sonarqube.ws.client.rules.SearchRequest()
.setRuleKey(key)
- .setIsExternal(Boolean.toString(true)))
+ .setIncludeExternal(Boolean.toString(true)))
.getRulesList();
assertThat(rulesList).isEmpty();
List<org.sonarqube.ws.Rules.Rule> rulesList = tester.wsClient().rules()
.search(new org.sonarqube.ws.client.rules.SearchRequest()
.setRuleKey(key)
- .setIsExternal(Boolean.toString(true)))
+ .setIncludeExternal(Boolean.toString(true)))
.getRulesList();
assertThat(rulesList).hasSize(1);