Java 제품의 빌드 시스템에 정적 분석 도구를 도입하고 있습니다. 우리는 Maven2를 사용 하고 있으므로 Checkstyle 과 PMD 통합은 무료입니다. 그러나 기본 스타일 규칙을 적용하는 측면에서이 두 도구간에 기능이 크게 겹치는 것처럼 보입니다.
이 두 가지를 모두 활용하면 이점이 있습니까? 하나가 작동한다면 두 가지 도구를 유지하고 싶지 않습니다. 하나를 선택하면 어떤 것을 사용해야하며 그 이유는 무엇입니까?
FindBugs도 사용할 계획입니다. 우리가 살펴 봐야 할 다른 정적 분석 도구가 있습니까?
업데이트 : PMD가 CheckStyle보다 선호된다는 것이 합의 된 것 같습니다. 두 가지를 모두 사용해야하는 확실한 이유가없고 2 세트의 규칙 파일을 유지하고 싶지 않으므로 PMD만을 목표로 할 것입니다. 또한 FindBugs를 도입 할 예정이며, 결국에는 Macker가 아키텍처 규칙을 시행 할 것입니다.
답변
반드시 FindBugs를 사용해야 합니다. 내 경험상 오 탐률은 매우 낮으며,보고하는 최소한의 경고도 어느 정도 해결할 가치가 있습니다.
Checkstyle 대 PMD는 스타일에만 관심이 있기 때문에 Checkstyle을 사용하지 않을 것입니다. 제 경험상 Checkstyle은 완전히 무관 한 수많은 것들을보고 할 것입니다. 반면 PMD는 의심스러운 코딩 관행을 지적 할 수 있으며 그 결과는 일반적으로 더 관련성이 높고 유용합니다.
답변
두 소프트웨어 모두 유용합니다. Checkstyle은 코딩 스타일 ( 예 : 중괄호, 이름 지정 등) 을 확인하여 프로그래밍하는 동안 도움이 될 것입니다 . 단순하지만 매우 다양합니다!
PMD는 클래스를 디자인하는 동안이나 복제 기능을 올바르게 구현하는 것과 같은 더 특별한 문제에 대해 더 복잡한 규칙을 확인하여 도움을 줄 것입니다. 간단히 말해 PMD는 프로그래밍 스타일 을 확인합니다.
그러나 두 소프트웨어 모두 유사한 규칙으로 인해 때때로 잘못 설명됩니다. 잘못된 구성으로 두 번 또는 두 번의 반대되는 사항을 확인할 수 있습니다. 즉, “쓸모없는 생성자 제거”와 “항상 하나의 생성자”입니다.
답변
하나를 선택하면 어떤 것을 사용해야하며 그 이유는 무엇입니까?
이러한 도구는 경쟁적이지 않지만 보완 적이며 동시에 사용해야합니다.
규칙 유형 (Checkstyle)은 일관성없는 코드를 이해하는 데 시간과 에너지를 소비하는 대신 사람들이 함께 작업하고 창의성을 발휘할 수 있도록하는 접착제입니다.
체크 스타일 예 :
- 공용 메소드에 javadoc이 있습니까?
- 프로젝트가 Sun 명명 규칙을 따르고 있습니까?
- 코드가 일관된 형식으로 작성 되었습니까?
PMD는 나쁜 관행을 상기시킵니다.
- 아무것도하지 않고 예외 잡기
- 데드 코드
- 너무 많은 복잡한 방법
- 인터페이스 대신 구현 직접 사용
- not equals (Object object) 메서드없이 hashcode () 메서드 구현
출처 :
http://www.sonarsource.org/what-makes-checkstyle-pmd-findbugs-and-macker-complementary/
답변
우리는 둘 다 사용합니다 :
- 팀의 모든 사람이 비슷한 방식으로 코드를 작성하는지 확인하는 체크 스타일
- 문제가있는 코드 영역과 다음 리팩토링 대상을 찾기위한 PMD
답변
기본 사용 장소가 Eclipse에서 개발하는 동안이면 인스턴스화의 CodePro가 가장 좋습니다. 이전에는 상용 도구 였지만 이제 Google이 인스턴스화를 구입했기 때문에 CodePro analytix는 현재 무료입니다.
http://code.google.com/javadevtools/download-codepro.html을 확인하세요 .
답변
Checkstyle, PMD 및 Findbugs 규칙 목록을 검토 한 경우 세 가지 모두 귀중한 결과물을 제공하고 세 가지 모두 어느 정도 겹치며 테이블에 고유 한 고유 규칙을 가져 오는 것을 확인했습니다. 이것이 Sonar와 같은 도구가 세 가지를 모두 사용하는 이유입니다.
즉, Findbugs는 가장 구체적인 또는 틈새 규칙 (예 : “IllegalMonitorStateException의 중복 잡기”-얼마나 자주 발생할 가능성이 있습니까?)이 있으므로 구성이 거의 또는 전혀없이 사용할 수 있으며 경고를 심각하게 받아 들여야합니다. Checkstyle 및 PMD를 사용하면 규칙이 더 일반적이고 스타일과 관련되어 있으므로 사용자 지정 구성 파일과 함께 만 사용하여 관련없는 피드백의 눈사태로부터 팀을 보호해야합니다 ( “5 행에 탭 문자”, “6 행에 탭 문자”, “7 행에 탭 문자”… 그림이 표시됩니다.) 또한 자체 고급 규칙 (예 : Checkstyle DescendentToken) 을 작성할 수있는 강력한 도구를 제공합니다. .
세 가지를 모두 사용할 때 (특히 Sonar와 같은 도구를 사용하는 경우) 중복을 방지하기 위해주의를 기울이면서 (특히 Sonar와 같은 도구를 사용하는 경우) 모두 별도로 구성해야합니다 (모든 도구가 hashCode ()가 예를 들어 overridden 및 equals () not).
요약하면, 정적 코드 분석이 중요하다고 생각하고 세 가지 중 하나가 제공하는 값을 거부하는 것은 의미가 없지만 세 가지를 모두 사용하려면 유용한 피드백을 제공하도록 구성하는 데 시간을 투자해야합니다.
답변
Sonar (http://www.sonarsource.org/)는 코드 품질을 관리하는 데 매우 유용한 개방형 플랫폼이며 Checkstyle, PMD, Findbugs 등을 포함합니다.
이것은 또한 세 가지 도구 모두가 존재할 권리가 있음을 나타냅니다 …