[완료]자바 정적 분석기(코드 검사툴) findbug, pmd, hammurapi등의 툴 사용해보신분 있으세요?

sakazin의 이미지

Findbug, PMD, Hammurapi등과 같은 툴은 자바코드 정적 분석기이죠~

쉽게말해서 코드 내에 불필요코드, 복잡한 코드,결점 코드, 에러날 가능성이 있는 코드등을 검사해줍니다~

저 위에 세개의 툴이 대표적인 자바 검사툴인데, 물론 coverity의 prevent또한 java를 지원하는 버젼이 이미 나왔죠..

어떤걸 사용해야할지 잘 감이 안잡히네요
여러개의 툴을 보기쉽게 비교해놓은 자료같은거 없을까요??

구글링을 해봤는데 한참 이전자료가 나오거나, 논문들이 나오긴하는데
실험적 데이타를 기준으로해서.. 음.. 자료가 부족한거같네요.

혹시 이에대해서 비교분석자료 같은거 있으신분 있나요? 혹은..

나름 알기쉽게 개념정리가 되어계신분 설명좀 부탁드려요~
이런 상황엔 이게 좋다. 이런 상황엔 저게 좋다. 이런식으로라도

그럼 즐거운 주말 보내시길 바랍니다. ㅋ.ㅋ

kwon37xi의 이미지

Hammurapi는 안서봐서 좀 써봐야겠네요.

Findbug와 PMD는 함께쓰는겁니다.
서로 배타적인게 아니라..
역할이 다르거든요.

Findbug는 소스에서 버그 패턴 찾아주는 거고, PMD도 약간은 비슷할 수 있지만 소스에서 좋지 못한 형태의 소스 찾아주는건데요.
경험상으로 봤을 때, 딴건 몰라도 Findbug 쓰면 효율이 많이 높아집니다.
꼭 하나만 써야겠다면 Findbug 써보세요.

neocoin의 이미지

저도 Java를 사용할때는 FindBugs 와 PMD를 코딩의 보조적인 수단으로 사용하곤 했습니다.

보조적인 수단으로만 사용해서, 그냥 상식적인 경험만 공유합니다.

단순하게는, FindBugs 는 바이트코드 분석기고, PMD는 룰기반의 소스 코드 분석기 입니다.

그래서 FindBugs 는 컴파일 이후의 class 파일을 분석해서 바이트 코드상 진입하지 않는 로직이나, null 포인터를 잘못쓰거나 하는 부분들을 지적해 줍니다.
(한달에 한번 정도는 놓치는 실수를 잡을수 있었습니다.)

kwon37xi 말씀대로 PMD는 Java 소스 파일을 분석하고 미리 입력된 패턴에서 Bad Smell을 찾아냅니다.

둘다 좋은게, 계속 피해야할 패턴을 학습하게 해주었습니다. 특히, 둘다 Eclipse와 잘 통합되어 있어서 별 노력 들이지 않고 사용할 수 있었습니다. 더군다나 무료이구요.

컴퓨터 파워가 충분하다면 둘다 사용하시는거 추천합니다.

sakazin의 이미지

두개가 비슷하긴 한데 역할이 다른 툴이었네요.
무지한 저를 깨우쳐주셔서 감사합니다.

Findbugs와 PMD가 어떤식으로 결함을 찾아내는지에대해 좀더 자세하게 찾아봐야겠네요.

좋은 답변 감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.