์•ˆ๋…•ํ•˜์„ธ์š” ์ผ€์ด์น˜์ž…๋‹ˆ๋‹ค.

 

์˜ค๋Š˜์€ ์ˆ˜๋งŽ์€ ์†Œ์Šค ์ •์  ๋ถ„์„ ํˆด ์ค‘์—์„œ ์„ธ๊ฐ€์ง€ ํˆด์— ๋Œ€ํ•œ ๋น„๊ต๋ฅผ ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฏธ ์–ด๋–ค ๋ถ„์ด ๋ถ„์„์„ ํ•ด๋†“์€ ์˜๋ฌธ ์ž๋ฃŒ๊ฐ€ ์žˆ์–ด์„œ ๋ฒˆ์—ญ์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 


   
 Findbugs

 
 PMD
 
 Checkstyle
  ๋ฒ„์ „  3.0.0  5.2.2  6.1.1

  ๋ผ์ด์„ผ์Šค

 Lesser GNU Public License  BSD-style license  Lesser General Public License
  ๋ชฉ์    ์ž ์žฌ์  ๋ฒ„๊ทธ ์ฐพ๊ธฐ
( ์ž๋ฐ” ์†Œ์ŠคํŒŒ์ผ์ด ์•„๋‹Œ  ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ด์šฉ )
   ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋“ค, ๋ฒ„๊ทธ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋ถ€๋ถ„๋“ค,
  ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ตœ์ ํ™”๋˜์ง€ ์•Š์€ ์ฝ”๋“œ๋“ค ๊ฒ€์ƒ‰
  ์ž๋ฐ” ์†Œ์Šค ํŒŒ์ผ์„ ์ฝ์–ด์„œ ์†Œ์Šค ์ฝ”๋“œ ํ‘œ์ค€์— ์œ„๋ฐ˜๋˜๋Š” ๊ฒƒ๋“ค์„ ๊ฒ€์ƒ‰,
 e.g.  Sun Code Conventions, JavaDoc
 ์žฅ์  - ์‹ค์ œ ๊ฒฐํ•จ์„ ์ž˜ ์ฐพ์•„์คŒ
- ์ฐพ์€ ๊ฒฐํ•จ์ด ์—‰๋šฑํ•œ ๊ฒฐํ•จ์ผ ํ™•๋ฅ ์ด ๋‚ฎ์Œ ( ์ •ํ™•์„ฑ์ด ๋†’์Œ )
- ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ฝ์Œ์œผ๋กœ ์†๋„๊ฐ€ ๋น ๋ฆ„
- ์ข…์ข… ์‹ค์ œ ๊ฒฐํ•จ์„ ์ฐพ์•„์คŒ
- finds bad practices
 - ์ •ํ•ด์ค€ ์ฝ”๋”ฉ ๊ทœ์•ฝ์— ์œ„๋ฐ˜๋˜๋Š” ๊ฒƒ๋“ค์„ ๊ฒ€์‚ฌํ•ด์คŒ. ์ง์ ‘ ์ฝ”๋”ฉ ๊ทœ์•ฝ์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ๊ฐ€๋Šฅ.
 ์•ฝ์  - ์ปดํŒŒ์ผ๋œ ํด๋ž˜์Šค ํŒŒ์ผ์—์„œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋ฏ€๋กœ ๋นŒ๋“œ๊ณผ์ •์ด ํ•„์ˆ˜  - ๋ณต์ œ๋œ ์ฝ”๋“œ๋ฅผ ์ฐพ๋Š” ์†๋„๊ฐ€ ๋Š๋ฆผ  - ์‹ค์ œ ๋ฒ„๊ทธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ
 ๊ทœ์น™ ์ˆ˜  408  234  132
๊ทœ์น™ ์นดํ…Œ๊ณ ๋ฆฌ
 Correctness
 Bad practice
 Dodgy code
 Multithreaded Correctness 
 Performance Malicious 
 Code Vulnerability
 Security Experimental
 Internationalization


 JSP 
 - Basic JSF 
 - Basic JSP
 XSL 
 - XPath in XSL
 Java 

 - Design 
 - Coupling 
 - Jakarta Commons Logging 
 - Basic 
 - Strict Exceptions 
 - Security Code Guidelines 
 - Java Logging 
 - Android -Controversial 
 - Comments 
 - Type Resolution 
 - Empty Code 
 - String and StringBuffer 
 - Code Size 
 - Braces 
 - Unused Code 
 - Unnecessary 
 - J2EE 
 - JavaBeans 
 - Migration 
 - Import Statements 
 - JUnit 
 - Naming 
 - Finalizer 
 - Optimization 
 - Clone Implementation
 Ecmascript
 
 - Basic Ecmascript 
 - Unnecessary 
 - Braces 
 XML
 
 - Basic XML
 Annotations
 Block Checks
 Class Design
 Coding
 Duplicate Code
 Headers
 Imports
 Javadoc Comments
 Metrics
 Miscellaneous
 Modifiers
 Naming Conventions
 Regexp
 Size Violations
 Whitespace

์ถœ์ฒ˜ : http://www.sw-engineering-candies.com/blog-1/comparison-of-findbugs-pmd-and-checkstyle

 

2020๋…„ 5์›” ์—…๋ฐ์ดํŠธ

์‹ค์ œ๋กœ ์„ธ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์„œ ํ…Œ์ŠคํŠธ๋„ ํ•ด๋ณด์•˜๊ณ  FindBugs๋Š” ์‹ค์ œ ์„œ๋น„์Šค์— ๊ธฐ๋Šฅ์œผ๋กœ ์ ์šฉ๋„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์šฐ์„  ์ž ์žฌ์ ์ธ ๋ฒ„๊ทธ ๋ถ„์„์„ ์œ„ํ•ด์„œ๋Š” FindBugs๊ฐ€ ๋‹จ์—ฐ ์ตœ๊ณ ์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฝ”๋”ฉ์ปจ๋ฒค์…˜์„ ์ •ํ•ด๋†“๊ณ  ํ™•์ธํ•˜๊ธฐ์—๋Š” CheckStyle์ด ์ข‹์Šต๋‹ˆ๋‹ค. 

FindBugs์™€ CheckStyle์€ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์  ์ž์ฒด๊ฐ€ ๋‹ค๋ฅธ ํˆด์ด์—ˆ์Šต๋‹ˆ๋‹ค.

PMD๋Š” ์ด๋„์ €๋„ ์•„๋‹Œ ๊ทธ์ €๊ทธ๋Ÿฐ ํˆด๋กœ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค.

 

 

--- ์ดํ•˜ ์ตœ์ดˆ ๋ฐœํ–‰๊ธ€ ---

์ถ”์ฒœ ์‚ฌํ•ญ

ํ•„์š”์— ๋”ฐ๋ผ ํ•˜๋‚˜์”ฉ๋งŒ ์‚ฌ์šฉํ•˜์…”๋„ ๋˜์ง€๋งŒ ์„ธ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ์ข€ ๋” ํ™•์‹คํ•œ ์ •์  ํˆด ๋ถ„์„์„ ํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์„ธ ํˆด์„ ๋ชจ๋‘ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด ์ œ์ผ๋จผ์ € FindBugs๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ณ  ๊ทธ ๋‹ค์Œ PMD ๊ทธ๋ฆฌ๊ณ ๋‚˜์„œ ๋งˆ์ง€๋ง‰์— CheckStyle์„ ์‚ฌ์šฉํ•˜์‹ค ๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฑด ๋‹ค๋ฅธ ๋ถ„์ด ํ•˜์‹  ๋ง์”€์ด๊ณ ์š”....์ „ CheckStyle๋งŒ ์ž ๊น ์จ๋ดค๋Š”๋ฐ์š”, CheckStyle์€ ๋ญ๋ž„๊นŒ ํšŒ์‚ฌ ๋‚ด๋ถ€์˜ ์ฝ”๋”ฉ ์ •์ฑ…์„ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„๋งŒํ•œ ๊ทธ๋Ÿฐ ํˆด์ด๋”๊ตฐ์š”. ๋Œ€์‹  ๋ฃฐ์„ ๋„ˆ๋ฌด ๊ณผํ•˜๊ฒŒ ์ฃผ๋ฉด ๊ฐœ๋ฐœ์ž๋“ค์ด ์ข€ ์‹ซ์–ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“œ๋„ค์š”.

 

์•„๋ž˜ ๋งํฌ๋Š” FindBugs ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•œ ๋ฉ”๋ฆด๋žœ๋“œ ์ฃผ๋ฆฝ๋Œ€ ๊ต์ˆ˜๋‹˜์˜ 1์‹œ๊ฐ„ ๋ถ„๋Ÿ‰์งœ๋ฆฌ ์„ธ๋ฏธ๋‚˜์ž…๋‹ˆ๋‹ค.

๊ด€์‹ฌ์žˆ์œผ์‹  ๋ถ„๋“ค์€ ๋ณด์‹œ๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™๋„ค์š”. ์ฐธ๊ณ ๋กœ ์–ธ์–ด๋Š” ์˜์–ด์ž…๋‹ˆ๋‹ค.

https://www.youtube.com/watch?v=8eZ8YWVl-2s

 

์ด์ƒ ์ผ€์ด์น˜์˜€์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋„ ์ฆํ”„ํ•˜์„ธ์š”~~ ^-^