Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 30 Next »

Table of Contents

Duplication is the worst quality flaw as it includes all the others. Indeed copy/pasting a block of code duplicates: the disregard of coding standards, any potential bugs, and so on.

To help you fight against duplication, SonarQube embeds its own Copy Paste Detection engine. It can detect duplication between blocks:

  • Within a source file
  • Within a project
  • Scattered in different projects

When a change is needed on a piece of code, first check for duplications through the web interface. If there are any:

  • Analyze those duplications and eliminate them by using inheritance or other suitable patterns (perform such action only if you have unit tests on the blocks to change)
  • Or do not forget to replicate your changes wherever it is necessary on the duplicated blocks

Looking For Duplications

Add the Duplications widget (was Comments & Duplications prior to version 3.7) to your dashboard:

From there, you can drill down to the Duplications tab in the component viewer:


How to read the example above: There is duplication between three blocks of 12 lines. The first block in FindbugsVersion starts at line 43, the second block in CheckstyleVersion starts at line 40 and the third block in PmdVersion starts at line 40.

To display the source code, click on the file name.

To visualize the entire block of code, click on the Expand link.

Activating Cross Project Duplication Detection

Log in as a a System administrator, go to Settings > General Settings > Duplications and set the Cross project duplication detection property to true.

Run a new analysis on your projects to detect duplications with other projects.



Note that cross project duplication detection is automatically disabled when analyzing a project with the sonar.branch property set.

Related Topics

See the following blog post: Manage Duplicated Code with Sonar.

  • No labels