SonarQube는 Checkstyle, PMD, FindBugs를 대체합니까?


105

우리는 웹 프로젝트를 처음부터 작업하고 있으며 다음과 같은 정적 코드 분석 도구를 살펴보고 있습니다.

  • 규칙 (체크 스타일)
  • 나쁜 사례 (PMD)
  • 잠재적 버그 (FindBugs)

이 프로젝트는 Maven을 기반으로합니다. 목적을 위해 여러 도구를 사용하는 대신 단일 유연한 솔루션을 찾고 SonarQube를 발견했습니다.

SonarQube를 사용하여 Checkstyle, PMD 및 Findbugs의 결과를 얻을 수 있다는 것이 사실입니까?

답변:


99

Sonar는 Java 프로젝트를 위해 기본적으로 Cobertura (코드 적용 범위)와 같은 몇 가지 다른 "플러그인"뿐 아니라 CheckStyle, FindBugs 및 PMD를 실행합니다. 그러나 주요 부가가치는 데이터베이스에 히스토리를 저장한다는 것입니다. 그런 다음 추세 를 볼 수 있습니다 . 코드베이스 를 개선 하고 있습니까 아니면 그 반대입니까? 기억력이있는 도구 만이 그것을 말할 수 있습니다.

CI 시스템에서 Sonar를 실행하여 실행하는 데 시간이 걸리는 작업 (예 : CPD – 복사 붙여 넣기 감지기)도 실행할 수 있도록해야합니다. 그리고 당신은 당신의 역사를 갖게 될 것입니다. 예를 들어 Eclipse 플러그인을 사용하면 위반을 더 빨리 감지 할 수 있습니다. 이는 훌륭 하지만 너무 오래 걸리기 시작하면 덜 자주 실행하거나 덜 "품질 플러그인"(예 : CPD 건너 뛰기 또는 코드 커버리지 분석 건너 뛰기). 그리고 당신은 역사가 없을 것입니다.

또한 Sonar는 "대시 보드"스타일의 시각적 보고서를 생성 합니다. 이해하기 매우 쉽습니다. Jenkins의 Sonar를 사용하면 지난 몇 주 및 몇 달 동안 코드베이스의 품질에 대해 수행 된 작업의 영향을 개발자와 관리자에게 보여줄 수 있습니다.


브라운 필드 프로젝트의 맥락에서 이러한 혜택에 동의합니다. 무결점 정책을 가진 Greenfield 프로젝트에는 해당 메모리가 필요하지 않습니다. 코드베이스를 항상 100 % 깨끗하게 유지하십시오.
Christian Hujer

48

Sonar는이 3 가지 도구를 플러그인으로 사용하고 이러한 도구의 그래프 등을 표시하여 부가 가치를 제공하는 세 가지 모두의 데이터를 집계합니다. 따라서 그들은 소나를 보완합니다.


1
yup sonar는 세 가지를 모두 사용합니다
frappuccino 2011-06-01

27
이것이 버전 3.x까지 사실 이었지만 Sonar 4.x는 규칙 세트를 확장하고 문제를 해결할 수있는 더 많은 자유를 제공하기 때문에 자체 내부 Squid 분석기를 선호하는 PMD 및 CheckStyle을 사용하지 않고 있습니다. 잠시 동안 이러한 프로젝트를 괴롭 히고 있습니다. 예를 들어, 그들은 이미 150 개가 넘는 PMD 규칙을 더 이상 사용하지 않으며 결국 완전히 제거 할 것입니다.
haylem 2014 년

1
이 규칙을 폐기 한 이유에 대한 흥미로운 게시물 : sonarqube.org/… .
Jhack

33

예, 아니오. 다른 답변 외에도.

SonarQube는 현재 PMD, Checkstyle 및 Findbug를 폐기하고 자체 기술을 사용하여 Java 코드 ( SonarJava 라고 ) 를 분석하는 중 입니다. 예를 들어 오래된 라이브러리를 사용하는 라이브러리 (예 : Java 8의 경우)를 고치거나 업그레이드 (또는 대기)하는 데 시간을 소비하고 싶지 않기 때문입니다.

또한 SonarLint 라는 개인 IDE 용 새 플러그인 세트도 있습니다 .


8

Sonar는 훌륭하지만 언급 된 도구를 별도로 사용하고 여전히 멋진 그래프를 갖고 싶다면 Jenkins CI 빌드의 일부로 Analysis Collector 플러그인 을 사용할 수 있습니다 . 이것의 약간의 장점은 PMD / Findbugs / Checkstyle 구성을 SCM에 체크인하고 별도의 Sonar 서버에 의존하지 않고 Maven 빌드에 통합 할 수 있다는 것입니다.


5

Sonar는 이러한 도구 만있는 것 이상입니다. 가장 큰 이점은 무엇이든 쉽게 구성 할 수있는 GUI입니다. 제공하는 통계는 매우 상세합니다 (코드 라인 등). 그리고 테스트 커버리지 등에 대한 훌륭한 지원도 제공합니다. :)

여기에서 살펴볼 수 있습니다 : http://nemo.sonarsource.org/


3

누군가 규칙을 위반하면 maven 빌드에 실패 할 수 있기 때문에 소나와 함께 이러한 도구를 계속 사용합니다. 소나가 더 회고적인 곳.


3

... 몇 년 후 : 아닙니다. SonarQube는 자체 분석기로 모든 규칙을 다룰 수 있다고 가정하지만 SonarQube에서 다루지 않는 PMD 또는 CheckStyle의 규칙이 여전히 있습니다. 예를 들어 : PMD ReturnFromFinallyBlock을 참조하십시오.


PMD 위반도 누락 된 것 같습니다. 기본 패키지 개인 수준 대신 명시 적 범위 지정을 사용 하시겠습니까?
user7294900


2

적어도 SonarQube 6.3+ 이후로 Findbugs는 (현재) 더 이상 플러그인으로 지원되지 않는 것 같습니다. Sonarsource는 Findbugs 규칙을 자체 Java 플러그인으로 대체하기 위해 노력하고 있습니다.

여기에는 각 규칙의 교체 상태에 대한 목록도 있습니다. http://dist.sonarsource.com/reports/coverage/findbugs.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.