22

In Sonar 4.5.6 (with default settings) I am seeing Duplicated Blocks message as

enter image description here

My java code for which I am getting the message is like below:-

package com.jabong.orchestratorservice.adapter.order.endpoints;

import com.jabong.orchestratorservice.adapter.order.request.UpdateOrderStatusReadyShipRequest;

public class UpdateOrderReadyShipEndPoint extends BaseOrderEndPoint {
    private final static String API_NAME = "setStatusToReadyToShip";

    @Override
    public String getSourceEndPoint() {
    return new StringBuilder("direct:").append(API_NAME).toString();
    }

    @Override
    public String getDestinationEndPoint() {
    return new StringBuilder("bean:orderHelper?method=").append(API_NAME).toString();
    }

    @Override
    protected String getName() {
    return API_NAME;
    }

    @Override
    protected String getApiInputClassName() {
    return UpdateOrderStatusReadyShipRequest.class.getName();
    }
}

UpdateOrderStatusReadyShipRequest also does not import UpdateOrderReadyShipEndPoint

package com.jabong.orchestratorservice.adapter.order.request;

public class UpdateOrderStatusReadyShipRequest extends BaseOrderRequest {

Can some let me know what does this mean?

G. Ann - SonarSource Team
  • 22,346
  • 4
  • 40
  • 76
tuk
  • 5,941
  • 14
  • 79
  • 162

2 Answers2

37

The Duplicate Blocks rule raises issues at the file level. So it's not trying to tell you that your import statement is duplicated, but that somewhere in the file is a duplicate block. If you'll scroll down, you should see a vertical yellow/orange bar in the left margin. It marks the duplicate block. Click on the bar to get details of where the block is duplicated.

EDIT In more recent versions the duplication marker is brown or gray.

eddex
  • 1,622
  • 1
  • 15
  • 37
G. Ann - SonarSource Team
  • 22,346
  • 4
  • 40
  • 76
  • 6
    I had same issue on my project. Abstract class implemented with two other classes with same overrides. Sonar issued this as same block. But actually it was not. Anyway I get rid of it by replacing method order in one of that classes. Funny, isn't it? :) – Tolgahan Albayrak Oct 15 '16 at 14:03
  • 1
    @G. Ann - SonarSource Team Where Can I find the logic of this rule common-java:DuplicatedBlocks ? – beinghuman May 15 '18 at 11:22
  • It's in SonarQube itself – G. Ann - SonarSource Team May 15 '18 at 12:17
  • @G. Ann - SonarSource Team .Would be quite interesting to know how this works.This rule is in sonarqube and rest of the rules starting with squid-xxxx are in sonar-java.Is Sonar using some external library to check code duplication? – beinghuman May 15 '18 at 17:14
  • @G. Ann - SonarSource Team Thank you for the hint ,I have figured out how copy code is working. – beinghuman May 18 '18 at 09:24
  • what to do in case of similar type of private variables and there getter/setter which are marked as duplicate blocks? – Rohit Verma Sep 11 '18 at 05:54
21

You have to look (scroll down) your code. There will be a duplication marker in brown/gray like this:

enter image description here

Carlos Cruz
  • 405
  • 3
  • 6