문제

코드는 무엇 분석 도구를 사용하시에 자바 프로젝트?

에 관심이 있어요 모든 종류

  • 코드는 정적 분석 도구(FindBugs,PMD,및 다른 사람)
  • 코드 검사 도구(Cobertura,Emma,및 다른 사람)
  • 다른 모든 계측 기반 도구
  • 다른 것,내가 뭔가를 누락하는 경우

해당하는 경우,또한 상태가 무엇을 구축한 도구를 사용하는 방법과 잘 이러한 도구와의 통합을 모두 Ide 및 빌드 도구.

는 경우는 도구에만 사용할 수 있는 특정 방법으로(IDE 플러그인을 하거나,말,빌드 도구 플러그인)는 정보 또한 주목할 가치가있다.

도움이 되었습니까?

해결책

에 대한 정적 분석 도구는 내가 자주 사용하는 CPD, PMD, FindBugs, 고 Checkstyle.

CPD 은 PMD"복사/붙여넣기 탐지기는"도구입니다.용 PMD 을 위해 조금 전에 내가 발견 을 찾는"중복되는 코드"링크PMD 웹 페이지의.

고 싶다는 점이 이러한 도구들도 있습 넘어 확장된 그들의"out-of-the-box"설정의 규칙이 있습니다.기 때문에 그들은 오픈 소스 그래서 당신은 다시 작성할 수 있습니다.이러한 도구와 함께 응용 프로그램 또는"걸"그건 그들이 할 수 있도록 확장됩니다.예를 들어,PMD 와 함께 제공 "designer"도구 을 만들 수 있는 새로운 규칙이 있습니다.또한,Checkstyle 가 DescendantToken 체크인 속성이 있는 것을 허용한 실질적인 사용자 지정입니다.

나는 통합 이러한 도구로 Ant 기반 구축.다음 링크를 따라 이동할 수 있습니다 내 댓글을 구성합니다.

외에도 간단한 통합으로 구축,나는 그것을 찾을 수용을 구성할 수 있소"통합된"에서의 몇 가지 다른 방법이다.즉,보고서 작성 및 경고 억제를 균일입니다.나는 다음과 같은 추가 이러한 측면이 토론(는 아마도"정전분석"태그):어떻게 사람들이 구성하는 이러한 도구를 만드는"통일"솔루션?(나는 이 질문에 별도로 )

첫째,대한 경고 보고,나는 변환 출력하는 경우에는 간단한 형식으로:

/absolute-path/filename:line-number:column-number: warning(tool-name): message

이것은 종종"이맥스 형식으로,"그러나 심지어를 사용하지 않는 경우 Emacs,그것은 합리적인 형식에 대한 균질화하고 보고합니다.예를 들어:

/project/src/com/example/Foo.java:425:9: warning(Checkstyle):Missing a Javadoc comment.

경고 형식으로 변환하여 수행 내 Ant 스크립트와 Ant filterchains.

두 번째는"통합"내가 하는가에 대한 경고 억제.기본적으로,각 도구를 지원하는 의견이나 주석(또는 모두)할 수 있는 장소에서 당신의 코드를 침묵할 경고를 무시해도 됩니다.그러나 이러한 다양한 경고 억제를 요청하지 않는 일관성 있는 보이는 것이 다소 어리석다.면을 억제하는 경고,당신을 억제하는 경고,그렇게 하지 왜 항상"쓰기SuppressWarning?"

예를 들어,PMD 의 기본 구성을 억제하는 경고가 생성에 라인의 코드와 함께 문자열"NOPMD"에 있습니다.또한,PMD 자바를 지원하의 @SuppressWarnings 주석이 있습니다.구성 PMD 사용하의 의견이 포함된"SuppressWarning(PMD."대신에 NOPMD 도록 PMD 숨기기 비슷하게 생겼습니다.내가 채우기에서 특정 위반된 규칙을 사용할 때 의견 스타일로 억제:

// SuppressWarnings(PMD.PreserveStackTrace) justification: (false positive) exceptions are chained

만"SuppressWarnings(PMD."부분은 상당한 주석,하지만 그와 일치 PMD 대한 지원 @SuppressWarning 주석는지 인식하는 개인 규칙에 위반하여 이름:

@SuppressWarnings("PMD.CompareObjectsWithEquals") // justification: identity comparision intended

마찬가지로,Checkstyle 억제하는 경고를 세대 쌍의 댓글(총계를 표시하지 않습니다 지원 제공).기본적으로 의견을 차례로 Checkstyle 에 문자열이 포함됩 CHECKSTYLE:OFFCHECKSTYLE:ON, 각각 있었다.이러한 변경 구성(Checkstyle 의"SuppressionCommentFilter")을 사용하여 문자열"BEGIN SuppressWarnings(CheckStyle."및"END SuppressWarnings(CheckStyle."만드는 컨트롤 보이 더 좋아 PMD:

// BEGIN SuppressWarnings(Checkstyle.HiddenField) justification: "Effective Java," 2nd ed., Bloch, Item 2
// END SuppressWarnings(Checkstyle.HiddenField)

와 Checkstyle 의견,특정한 확인을 위반(HiddenField) 중요하기 때문에 각 검사는 자체"BEGIN/END"코멘트 쌍입니다.

FindBugs 을 지원한 경고가 생성 억제 @SuppressWarnings 주석,그래서 더 이상의 추가 구성을 달성하기 위해 필요한 일부 수준의 균일성과 함께 다른 도구입니다.불행하게도,Findbugs 가 지원 사용자 지정 @SuppressWarnings 주석이기 때문에 내장 Java @SuppressWarnings 주석가 SOURCE 보존 정책을 충분히 강하지 않을 유지하는 주석에서 클래스 파일 FindBugs 필요합니다.나는 완전히 자격이 FindBugs 경고를 작동시켜와 충돌하지 않도록 Java @SuppressWarnings 주석:

@edu.umd.cs.findbugs.annotations.SuppressWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")

이러한 기술을 만드는 일을 합리적으로 통해 일관된 도구입니다.참고는 각 경고 억제 문자열이 포함되어 있"SuppressWarnings"쉽게를 실행하는 간단한 검색을 찾아 모든 인스턴스에 대한 모든 도구를 통해 전체 코드의 기초입니다.

다른 팁

나는 조합하여 사용 Cobertura,Checkstyle,(Ecl)마 및 Findbugs.

EclEmma멋진 Eclipse 플러그인을 보여주는 코드는 보장을 색칠하여 java 소스에서 편집기(스크린샷 다)-적용 범위에 의해 생성된 실행 JUnit 테스트입니다.이것은 정말 유용할 때 당신은 어떤 것인지 알아보고선에 덮여 있는 특정 클래스,또는 당신이 원하는 경우에만 표시하는 라인으로 덮여 있는 하나의 테스트입니다.이것은 훨씬 더 많은 사용자 친화적이고 보다 유용한 보고서를 생성하고 그를 통해 보고하고 보고서를 참조하는 클래스는 낮은 커버합니다.

이 Checkstyle 및 Findbugs 이클립스 플러그인은 또한,그들은 경고가 생성에서 편집기로 유지할 수 있습니다.

Maven2 에는 보고서 플러그인을 작동하는 위한 도구를 생성하는 보고서를 구축 시간입니다.우리가 사용하는 방법에 따라 달라집 전반적인 프로젝트 보고서는 더 유용하고 싶을 때는 집계 숫자입니다.이들은 생성된 우리의 CI 를 구축,실행하는 사용 연속체.

다음의 모든 우리는 우리가 사용하는 통합 easiy 에서 모두 우리의 Maven2.x 구축과 이클립스/RAD7:

  • 테스트-JUnit/TestNG
  • 코드분석-FindBugs,PMD
  • 코드 검사-클로버

또한,우리의 Maven 빌드를 우리는:

  • JDepend
  • 태그 검사(TODO,FIXME,etc.)

또한,사용하는 경우 Maven2.x,CodeHaus 의 컬렉션을 가지고 있는 편리한 Maven 플러그인에서 그들의 Mojo 프로젝트.

참고:클로버는 out-of-the-box 통합된 대나무의 CI 서버에(이후 그들은 모두 Atlassian products).거기에는 또한 대나무는 플러그인에 대한 FindBugs,PMD,그리고 CheckStyle 지만,언급했듯이 자유는 허드슨 CI 서버는 사람들이 너무.

내가 사용하는 정적분석에 내장 IntelliJ IDEA.완벽한 통합이다.

내가 사용하는 코드 범위에 내장 된 Intellij IDEA(에 따라 엠마).다시,완벽합니다.

이러한 통합 솔루션입니다 믿을 수 있고,강력하고 사용하기 쉬운에 비해를 맞추는 도구에서 다양한 공급 업체입니다.

Checkstyle 또 다른 하나는 내가 사용했던 이전의 회사는...그것은 주로 스타일을 확인,하지만 그것을 할 수있는 몇 가지 정도.또한, 코드 검사,하지만 알고 있어야지 무료 도구입니다.

우리가 사용하는 FindBugs 및 Checkstyle 뿐만 아니라 클로버를 위해 코드 범위.

나는 것이 중요하다고 생각 어떤 종류의 정적 분석을 지원하고,귀하의 개발이다.불행하게도 그것은 여전히 널리 퍼져 있는 이러한 툴은 중요합니다.

우리가 사용하는 FindBugs 및 JDepend 통합 Ant.우리가 사용하는 JUnit 그러나 우리는 사용하지 않는 모든 범위는 도구입니다.

나는 그것을 사용하지 않을 통합하는 합리적 응용 프로그램 개발자(IDE 나를 사용하여 개발하 J2EE 응용 프로그램)좋아하기 때문에 나는 어떻게 깔끔한 외모를 실행할 때 javac Windows console.P

나는 행운이 함께 Cobertura.그것은 코드 검사 도구를 실행할 수 있습을 통해 귀하의 개미 스크립트의 일부분으로 정상적인 구축하고 통합 될 수있는 허드슨.

우리의 팀은 사용 PMD 및 Cobertura,실제로 우리의 프로젝트 maven 프로젝트 및 거기에 아주 간단한 포함하는 플러그인에 대한 코드를 분석합니다.진짜 문제는 것에 대한 특정 프로젝트는 분석을 사용할 필요가 내 생각은 그것을 사용할 수 없습니다 같은 플러그인에 대한 각 프로젝트입니다.

의 프로젝트에 우리가 사용하는 수중 음파 탐지기에 앞 checkstyle,pmd....과 함께 CI(대나무,허드슨)우리는 또한 좋은 역사를 우리의 근원이 품질과 무엇을 연출하는 우리 이동합니다.나는 다음과 같 수중 음파 탐지기 때문에,당신은 하나의 중앙에서 도구를 CI 스택을 그것은 당신을 위해,당신 수 있는 쉬운 사용자 지정한 규칙에 대한 각 프로젝트입니다.

구조 101 에 좋은 코드를 분석하고를 찾는 순환 패키지의 종속성입니다.

내가 찾는 것은 여러 답변에 대해 배우고 새로운 도구를 통합하고 이에 대한 지식을 하는 질문/쓰레드로 동작하므로,내가 될 것입니다 의심의 여지가 1 사실 이 질문에 대답.

나의 답변하는 내 자신의 문제는 우리가 사용:

  • Findbugs 을 찾기 위해 일반적인 오류가 나쁜/코딩-실행에서 maven,또한 쉽게 통합 Eclipse
  • Cobertura 에 대한 우리의 범위를 보고서에서 실행-maven

허드슨한 작업 스캐너는 플러그인이 표시됩니다수의 도도하고 FIXMEs 뿐만 아니라,쇼 그들이 어디에 있는 원본 파일이 있습니다.

모 통합 Maven1.x 에서 우리의 케이스와 연결 허드슨은,실행되는 우리의 빌드에서 체크인뿐만 아니라 여분의 것들을 즐기고 주간.허드슨은 트렌드 그래프리 JUnit 테스트,보험,findbugs 열뿐만 아니라,작업입니다.도 있는 허드슨 플러그인 보고서 및 그래프리 컴파일에 경고를 기록합니다.우리는 또한 몇 가지 성능 테스트의 자신의 그래프의 성능과 메모리를 사용하여 시간에 사용 허드슨 플롯 플러그인뿐만 아니라.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top