우리는 웹 프로젝트를 처음부터 작업하고 있으며 다음과 같은 정적 코드 분석 도구를 살펴보고 있습니다.
- 규칙 (체크 스타일)
- 나쁜 사례 (PMD)
- 잠재적 버그 (FindBugs)
이 프로젝트는 Maven을 기반으로합니다. 목적을 위해 여러 도구를 사용하는 대신 단일 유연한 솔루션을 찾고 SonarQube를 발견했습니다.
SonarQube를 사용하여 Checkstyle, PMD 및 Findbugs의 결과를 얻을 수 있다는 것이 사실입니까?
답변
Sonar는 Java 프로젝트를 위해 기본적으로 Cobertura (코드 적용 범위)와 같은 몇 가지 다른 “플러그인”뿐 아니라 CheckStyle, FindBugs 및 PMD를 실행합니다. 그러나 주요 부가가치는 데이터베이스에 히스토리를 저장한다는 것입니다. 그런 다음 추세 를 볼 수 있습니다 . 코드베이스 를 개선 하고 있습니까 아니면 그 반대입니까? 기억력이있는 도구 만이 그것을 말할 수 있습니다.
CI 시스템에서 Sonar를 실행하여 실행하는 데 시간이 걸리는 작업 (예 : CPD – 복사 붙여 넣기 감지기)도 실행할 수 있도록해야합니다. 그리고 당신은 당신의 역사를 갖게 될 것입니다. 예를 들어 Eclipse 플러그인을 사용하면 위반을 더 빨리 감지 할 수 있습니다. 이는 훌륭 하지만 너무 오래 걸리기 시작하면 덜 자주 실행하거나 덜 “품질 플러그인”(예 : CPD 건너 뛰기 또는 코드 커버리지 분석 건너 뛰기). 그리고 당신은 역사가 없을 것입니다.
또한 Sonar는 “대시 보드”스타일의 시각적 보고서를 생성 합니다. 이해하기 매우 쉽습니다. Jenkins의 Sonar를 사용하면 지난 몇 주 및 몇 달 동안 코드베이스의 품질에 대해 수행 된 작업의 영향을 개발자와 관리자에게 보여줄 수 있습니다.
답변
Sonar는이 3 가지 도구를 플러그인으로 사용하고 이러한 도구의 그래프 등을 표시하여 부가 가치를 제공하는 세 가지 모두의 데이터를 집계합니다. 따라서 그들은 소나를 보완합니다.
답변
예, 아니오. 다른 답변 외에도.
SonarQube는 현재 PMD, Checkstyle 및 Findbug를 폐기하고 자체 기술을 사용하여 Java 코드 ( SonarJava 라고 함 ) 를 분석하는 중 입니다. 예를 들어 오래된 라이브러리를 사용하는 라이브러리 (예 : Java 8의 경우)를 고치거나 업그레이드 (또는 대기)하는 데 시간을 소비하고 싶지 않기 때문입니다.
또한 SonarLint 라는 개인 IDE 용 새 플러그인 세트도 있습니다 .
답변
Sonar는 훌륭하지만 언급 된 도구를 별도로 사용하고 여전히 멋진 그래프를 갖고 싶다면 Jenkins CI 빌드의 일부로 Analysis Collector 플러그인 을 사용할 수 있습니다 . 이것의 약간의 장점은 PMD / Findbugs / Checkstyle 구성을 SCM에 체크인하고 별도의 Sonar 서버에 의존하지 않고 Maven 빌드에 통합 할 수 있다는 것입니다.
답변
Sonar는 이러한 도구 만있는 것 이상입니다. 가장 큰 이점은 무엇이든 쉽게 구성 할 수있는 GUI입니다. 제공하는 통계는 매우 상세합니다 (코드 라인 등). 그리고 테스트 커버리지 등에 대한 훌륭한 지원도 제공합니다. 🙂
여기에서 살펴볼 수 있습니다 :
http://nemo.sonarsource.org/
답변
누군가 규칙을 위반하면 maven 빌드에 실패 할 수 있기 때문에 소나와 함께 이러한 도구를 계속 사용합니다. 소나가 더 회고적인 곳.
답변
… 몇 년 후 : 아닙니다. SonarQube는 자체 분석기로 모든 규칙을 다룰 수 있다고 가정하지만 SonarQube에서 다루지 않는 PMD 또는 CheckStyle의 규칙이 여전히 있습니다. 예를 들어 : PMD ReturnFromFinallyBlock을 참조하십시오.
