2017-11-28 12 views
-1

저는 Sonarqube를 VSTS와 함께 사용하고 있습니다. 그러나 두 가지 방법이 동일하면 어떤 이유로 중복 코드가보고됩니다 (즉, 메시지가 PR에 추가됨). 그러나 이러한 방법이 거의 동일하다고 가정 해 보겠습니다.중복 코드가 감지되지 않습니다.

public void A(int a) { 
    if(a == 0) 
     return; 
    // code from B 
} 

public void B(int a) { 
    // some code 
} 

다음은보고되지 않습니다. SonarQube에서이 유형의 코드 복제본에 대한 설명을 추가 할 수 있습니까?

답변

2

이 가능인지 아닌지 모르겠어요,하지만 나쁜 생각이 될 수있는 이유는 여기에 두 가지 이유는 다음과 같습니다

  1. 에 대한 확실한 차단이 없다 얼마나 작은 "복제"코드 의 조각 될 수 있습니다. 많은 다른 장소에 같은 세 줄의 코드가 표시되면 정말로 플래그를 지정 하시겠습니까?
  2. 첫 번째 관련 : 둘러싼 블록과 같은 "앵커"없이 중복 된 코드를 찾는 일은 계산적으로 비용이 많이 들며 특히 섹션이 길이가 될 수있는 경우 특히 그렇습니다. 중복 검사는 모든 행에서 시작하여 많은 크기의 "덩어리"를 검사하여 다른 곳에서 반복되는지 확인해야합니다. 이것은 현재하고있는 것보다 훨씬 더 많은 작업입니다.
+0

AFAIK, 기본적으로 SonarQube는 블록을 복제본으로 표시하려면 최소 10 LoC가 필요합니다. –

+0

그리고 SonarQube 포털에 들어가면 위의 것을 포함하여 중복 된 내용이 표시됩니다. 그러나 PR에서 그들을보고하지 않을 것이다. –

+0

@artur 아, 알겠습니다. 이 경우 나는 무엇을 시도해야할지 모른다. 미안해. 도울 수 없어. –