This version of SonarQube Server is no longer receiving patches. Please see the latest release for details on updating.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Contributing

Guidelines about giving feedback and using the SonarQube Server 10.8 community forum.

For AI agents: You're in the SonarQube Server 10.8 documentation. For a list of all 10.8 pages, see the SonarQube Server 10.8 page index. For the whole site, see the page index or the full text. For another version, replace 10.8 in the URL with that version. The latest version has no version number in its URL.

Please be aware that we are not actively looking for feature contributions to SonarQube Community Build itself because it’s extremely difficult for someone outside Sonar to comply with our roadmap and expectations. Therefore, we typically only accept minor cosmetic changes and typo fixes for SonarQube Community Build, but we do happily welcome contributions to the other open-source projects under the Sonar umbrella.

General guidelines

New rule implementations in existing plugins

  • Start from an existing rule specification (RSpec) that lists your language of interest in the Targeted languages field.

    • If the RSpec you’re interested in doesn’t target the language where you want to implement it, raise the question on the community forums.

    • If no RSpec exists for the rule you want to implement, raise the question on the Community forum.

  • Put your rule implementation class in the [language]-checks (for example: java-checks, or javascript-checks) module, in the checks sub-package.

  • The naming convention for implementation classes is [A-Z][a-za-z]+Check.java. (Yes, put Check in the name too.) The class name should be descriptive and not reflect the rule key. For example, FindBadCodeCheck.java, not S007.java.

  • A good way to get started on a rule implementation is to look at the implementations of rules that do similar things.

  • During development, there’s no need to load the plugin in a server to test your implementation, use the rule’s unit test for that.

  • For a complete implementation, make sure all of the following are done:

    • create HTML description file and metadata file.

    • write test class.

    • register the rule in CheckList.java.

    • add the rule to the profile used for the integration test in profile.xml.

    • run the integration test and add any new issues to the set of expected issues.

Last updated

Was this helpful?