Class RulesDefinition.Rule

  • Direct Known Subclasses:
    Enclosing interface:

    public abstract static class RulesDefinition.Rule
    extends java.lang.Object
    • Constructor Detail

      • Rule

        public Rule()
    • Method Detail

      • pluginKey

        public abstract java.lang.String pluginKey()
        6.6 the plugin the rule was declared in
      • key

        public abstract java.lang.String key()
      • name

        public abstract java.lang.String name()
      • scope

        public abstract RuleScope scope()
      • severity

        public abstract java.lang.String severity()
      • htmlDescription

        public abstract java.lang.String htmlDescription()
      • markdownDescription

        public abstract java.lang.String markdownDescription()
      • template

        public abstract boolean template()
      • activatedByDefault

        public abstract boolean activatedByDefault()
        Should this rule be enabled by default. For example in SonarLint standalone.
      • debtSubCharacteristic

        public abstract java.lang.String debtSubCharacteristic()
        in 5.5. SQALE Quality Model is replaced by SonarQube Quality Model. null is always returned. See
        See Also:
      • effortToFixDescription

        public abstract java.lang.String effortToFixDescription()
        since 5.5, replaced by gapDescription()
      • gapDescription

        public abstract java.lang.String gapDescription()
      • tags

        public abstract java.util.Set<java.lang.String> tags()
      • securityStandards

        public abstract java.util.Set<java.lang.String> securityStandards()
      • deprecatedRuleKeys

        public abstract java.util.Set<RuleKey> deprecatedRuleKeys()
        Deprecated rules keys for this rule.

        If you want to rename the key of a rule or change its repository or both, register the rule's previous repository and key (see addDeprecatedRuleKey). This will allow SonarQube to support "issue re-keying" for this rule.

        If the repository and/or key of an existing rule is changed without declaring deprecated keys, existing issues for this rule, created under the rule's previous repository and/or key, will be closed and new ones will be created under the issue's new repository and/or key.

        Several deprecated keys can be provided to allow SonarQube to support several key (and/or repository) changes across multiple versions of a plugin.
        Consider the following use case scenario:

        • Rule Foo:A is defined in version 1 of the plugin
           NewRepository newRepository = context.createRepository("Foo", "my_language");
           NewRule r = newRepository.createRule("A");
        • Rule's key is renamed to B in version 2 of the plugin
           NewRepository newRepository = context.createRepository("Foo", "my_language");
           NewRule r = newRepository.createRule("B")
             .addDeprecatedRuleKey("Foo", "A");
        • All rules, including Foo:B, are moved to a new repository Bar in version 3 of the plugin
           NewRepository newRepository = context.createRepository("Bar", "my_language");
           NewRule r = newRepository.createRule("B")
             .addDeprecatedRuleKey("Foo", "A")
             .addDeprecatedRuleKey("Bar", "B");
        With all deprecated keys defined in version 3 of the plugin, SonarQube will be able to support "issue re-keying" for this rule in all cases:
        • plugin upgrade from v1 to v2,
        • plugin upgrade from v2 to v3
        • AND plugin upgrade from v1 to v3

        Finally, repository/key pairs must be unique across all rules and their deprecated keys.
        This implies that no rule can use the same repository and key as the deprecated key of another rule. This uniqueness applies across plugins.

        Note that, even though this method returns a Set, its elements are ordered according to calls to addDeprecatedRuleKey. This allows to describe the history of a rule's repositories and keys over time. Oldest repository and key must be specified first.

        See Also:
        RulesDefinition.NewRule.addDeprecatedRuleKey(String, String)