답변:
Sonar는 Java 프로젝트를 위해 기본적으로 Cobertura (코드 적용 범위)와 같은 몇 가지 다른 "플러그인"뿐 아니라 CheckStyle, FindBugs 및 PMD를 실행합니다. 그러나 주요 부가가치는 데이터베이스에 히스토리를 저장한다는 것입니다. 그런 다음 추세 를 볼 수 있습니다 . 코드베이스 를 개선 하고 있습니까 아니면 그 반대입니까? 기억력이있는 도구 만이 그것을 말할 수 있습니다.
CI 시스템에서 Sonar를 실행하여 실행하는 데 시간이 걸리는 작업 (예 : CPD – 복사 붙여 넣기 감지기)도 실행할 수 있도록해야합니다. 그리고 당신은 당신의 역사를 갖게 될 것입니다. 예를 들어 Eclipse 플러그인을 사용하면 위반을 더 빨리 감지 할 수 있습니다. 이는 훌륭 하지만 너무 오래 걸리기 시작하면 덜 자주 실행하거나 덜 "품질 플러그인"(예 : CPD 건너 뛰기 또는 코드 커버리지 분석 건너 뛰기). 그리고 당신은 역사가 없을 것입니다.
또한 Sonar는 "대시 보드"스타일의 시각적 보고서를 생성 합니다. 이해하기 매우 쉽습니다. Jenkins의 Sonar를 사용하면 지난 몇 주 및 몇 달 동안 코드베이스의 품질에 대해 수행 된 작업의 영향을 개발자와 관리자에게 보여줄 수 있습니다.
Sonar는이 3 가지 도구를 플러그인으로 사용하고 이러한 도구의 그래프 등을 표시하여 부가 가치를 제공하는 세 가지 모두의 데이터를 집계합니다. 따라서 그들은 소나를 보완합니다.
Sonar는 훌륭하지만 언급 된 도구를 별도로 사용하고 여전히 멋진 그래프를 갖고 싶다면 Jenkins CI 빌드의 일부로 Analysis Collector 플러그인 을 사용할 수 있습니다 . 이것의 약간의 장점은 PMD / Findbugs / Checkstyle 구성을 SCM에 체크인하고 별도의 Sonar 서버에 의존하지 않고 Maven 빌드에 통합 할 수 있다는 것입니다.
Sonar는 이러한 도구 만있는 것 이상입니다. 가장 큰 이점은 무엇이든 쉽게 구성 할 수있는 GUI입니다. 제공하는 통계는 매우 상세합니다 (코드 라인 등). 그리고 테스트 커버리지 등에 대한 훌륭한 지원도 제공합니다. :)
여기에서 살펴볼 수 있습니다 : http://nemo.sonarsource.org/
... 몇 년 후 : 아닙니다. SonarQube는 자체 분석기로 모든 규칙을 다룰 수 있다고 가정하지만 SonarQube에서 다루지 않는 PMD 또는 CheckStyle의 규칙이 여전히 있습니다. 예를 들어 : PMD ReturnFromFinallyBlock을 참조하십시오.
적어도 SonarQube 6.3+ 이후로 Findbugs는 (현재) 더 이상 플러그인으로 지원되지 않는 것 같습니다. Sonarsource는 Findbugs 규칙을 자체 Java 플러그인으로 대체하기 위해 노력하고 있습니다.
여기에는 각 규칙의 교체 상태에 대한 목록도 있습니다. http://dist.sonarsource.com/reports/coverage/findbugs.html