private void setDefaultActivation(NewRule rule) { if (activatedByDefault.contains(rule.key())) { // We should NOT call setActivatedByDefault if no default profile was provided: // this is how plugins should use this class when the runtime version of SQ does not support setActivatedByDefault rule.setActivatedByDefault(true); } }
@VisibleForTesting protected void newRule(Class<?> ruleClass, NewRepository repository, JavaSonarWayProfile.Profile profile) { org.sonar.check.Rule ruleAnnotation = AnnotationUtils.getAnnotation(ruleClass, org.sonar.check.Rule.class); if (ruleAnnotation == null) { throw new IllegalArgumentException("No Rule annotation was found on " + ruleClass); } String ruleKey = ruleAnnotation.key(); if (StringUtils.isEmpty(ruleKey)) { throw new IllegalArgumentException("No key is defined in Rule annotation of " + ruleClass); } NewRule rule = repository.rule(ruleKey); if (rule == null) { throw new IllegalStateException("No rule was created for " + ruleClass + " in " + repository.key()); } String rspecKey = rspecKey(ruleClass, rule); RuleMetadata ruleMetadata = readRuleMetadata(rspecKey); addMetadata(rule, ruleMetadata); String ruleHtmlDescription = readRuleHtmlDescription(rspecKey); if (ruleHtmlDescription != null) { rule.setHtmlDescription(ruleHtmlDescription); } // 'setActivatedByDefault' is used by SonarLint standalone, to define which rules will be active boolean activatedInProfile = profile.ruleKeys.contains(ruleKey) || profile.ruleKeys.contains(rspecKey); boolean isSecurityHotspot = ruleMetadata != null && ruleMetadata.isSecurityHotspot(); rule.setActivatedByDefault(activatedInProfile && !isSecurityHotspot); rule.setTemplate(TEMPLATE_RULE_KEY.contains(ruleKey)); }
.setActivatedByDefault(true) .setHtmlDescription("Search for a given tag in Xoo files"); hasTag .setName("Find security hotspots") .setType(RuleType.SECURITY_HOTSPOT) .setActivatedByDefault(false) .setHtmlDescription("Search for Security Hotspots in Xoo files"); hotspot
.setActivatedByDefault(true) .setHtmlDescription("Search for a given tag in Xoo files"); hasTag .setName("Find security hotspots") .setType(RuleType.SECURITY_HOTSPOT) .setActivatedByDefault(false) .setHtmlDescription("Search for Security Hotspots in Xoo files"); hotspot