간단한 CLI Java linter가 있습니까? [닫은]


88

나는 git에 대한 커밋 후크 또는 자동화 된 빌드 스크립트에서 호출 할 수있는 Eclipse와는 별 개인 CLI에서 실행할 수있는 Java linter를 찾으려고했습니다. 그런 것이 존재합니까?

이상적으로는 사용하지 않는 가져 오기 및 변수를 확인해야하며, 스타일 지침을 따르고, 예외가 적절하게 사용됩니다. 이러한 기능의 일부 하위 집합이 현재 우리가 가지고있는 것보다 더 좋을 수 있습니다.


2
//, 소프트웨어 추천 요청이 아닙니까?
Nathan Basanese

3
여기에서 물어봐야할지 메타로 물어봐야할지 모르겠지만, 추천을 요청하는 이와 같은 질문에 무슨 문제가 있습니까? 물론이 질문에 대한 단일하고 객관적인 답변은 없지만 많은 기술적 질문에 대해서도 마찬가지입니다. 이 질문은 "린터가없고 어떤 도구가 현재 사용 가능하고 널리 사용되고 있는지 모르겠습니다."로 다시 표현 될 수 있습니다. 도움이 될까요? 나는 다른 곳보다 StackOverflow에서 큐 레이트되고 순위가 매겨지고 날짜가 기록 된 Q / A를 찾는 편이 낫습니다. 이런 종류의 질문을 가진 사람들은 여기가 아니라면 어디로 가야합니까?
Kyle Krull

답변:


81
  • 기존 버그를 찾기위한 SpotBugs (이전 Findbugs ). 아주 좋아!
  • 버그로 이어질 수있는 패턴을 찾기위한 PMD (예 : 사용하지 않는 변수)
  • Checkstyle 기준과 규칙을 코딩 적용하려면 (예 : 공백, 자바 독)
  • 오류 발생 가능성이 애플리케이션의 컴파일 단계에 바로 연결됩니다.

이러한 모든 도구에는 일부 중복 규칙이 있습니다. 다른 많은 유사한 도구가 있지만 가장 인기 있고 지원되는 도구입니다.


Findbugs와 PMD가 다른 일을한다고 말 하시겠습니까? 지난번에 이것을 조사했을 때 나는 그것들이 우리가 하나만 필요로 할 정도로 충분히 유사하다는 결론을 내 렸습니다 (그리고 PMD를 선택했습니다). 우리는 또한 Checkstyle을 실행했고, 그렇습니다. PMD와 Checkstyle도 겹치는 것을 발견했습니다.
Tom Anderson

@TomAnderson-나는 그들이 분명히 다른 일을한다고 말할 것입니다. 둘 다에 가치가 있습니다 (분명히 겹침도 있습니다).
jtahlborn 2013

예, 매우 다른 목표입니다. Findbugs는 때로는 심층 분석을 통해 실제 버그를 찾으려고합니다. PMD는 때때로 버그를 유발하는 것으로 알려진 패턴을 찾습니다. 개인적으로 저는 겹치는 부분이 적기 때문에 FindBugs와 Checkstyle을 사용합니다.
mikeslattery 2013

pmd에는 pmd와 cpd라는 두 가지 유형의 검사가 있다는 것을 언급 할 수 있습니다.
jtahlborn 2013

4
Findbugs는 이제 SpotBugs입니다 ( GitHub에서 )
Matruskan

12

또한 다른 많은 도구를 결합하고 이에 대한 멋진보기를 제공하는 Sonar를 확인하십시오 .

Checkstyle, FindBugs, PMD, Clirr, fb-contrib의 규칙.


커밋 후 후크에 추가하는 방법을 정확히 모르지만 http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven 이 좋은 시작점이 될 수 있습니다 (특히 maven을 사용하는 경우).

http://docs.codehaus.org/display/SONAR/Continuous+Integration에 나열된 접근 방식 중 하나를 사용하는 것도 고려해 수 있습니다. 전체 팀을위한 더 나은 도구를 찾고있는 것 같기 때문입니다 ( " 이러한 기능은 무엇인지 더 잘 될 것입니다 우리가 지금이 없다! - 아무것도 "


2
+1 질문을받은 지 4 년 후 SonarQube는 더 활동적이고 현대적이며 완전 해 보입니다. 이 도구는 위에서 언급 한 결합하는 데 사용하지만, 지금은 그들이 기본적으로 중복 방지 구현 blog.sonarsource.com/...
user2518618

-1

이것이 바로 제가 작업중인 것입니다. Java 코드의 품질을 확인하는 데 사용되는 CLI 친화적 인 도구입니다. 또한 대화 형 양식도 있습니다. 단일 쿼리 (단일 경고를 확인하기 위해) 또는 모든 쿼리를 함께 실행할 수 있습니다.

도구는 초기 단계에 있지만 거의 매일 작업하고 있습니다. 여기에서 사용할 수 있습니다.

https://github.com/ftomassetti/effectivejava

그것에 대해 어떻게 생각하는지 알려 주시고 언제든지 질문하십시오.


3
이 프로젝트의 마지막 커밋은 2 년 전입니다. 이것이 더 이상 활발히 개발되고 있는지 확실하지 않습니다.
Daniel Eagle

전혀 그렇지 않다. 하지만 JavaParser 작업을 시작했습니다. 이 프로젝트는 그 위에 빌드 할 수있는 CLI ma를 제공하지 않습니다.
Federico Tomassetti
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.