2년전 C++ 업무에서 JAVA 로 전향하고 JAVA 에서는 메모리 관리를 개발자가 따로 안해도 JVM 에서 알아서 메모리 관리를 한다고 얄팍한 생각을 하면서 업무를 진행한 적이 있었다.
허나 이러한 얄팍한 생각은 몇 일 뒤... JAVA 에서 메모리릭을 경험하고 사라졌다.
<메모리릭을 경험한 필자의 상태> 부제 - 요행을 바라면 안됬어ㅠㅠ.jpg
사소한 메모리릭을 제거 하기 위해서 꼼꼼한 개발자는 코드의 로직과 사용법을 최적화 작업을 한다. JAVA 쪽에서 숙련되지 않기도 하고 게으른 개발자 이어서 정정 분석 툴로 꼼꼼함을 살리기 위해 정적 분석툴을 찾아 보았다.
FindBugs
웹 사이트 - http://findbugs.sourceforge.net/
버전 - 3.0.0
라이센스 - Lesser GNU Public License
목적 - 잠재적 버그 찾기(자바 소스파일이 아닌 바이트 코드를 이용)
장점 - 실제 결함을 잘 찾아줌 - 찾은 결함이 엉뚱한 결함일 확율이 낮음(정확성이 높음) - 바이트 코드를 읽음으로 속도가 빠름
단점 - 컴파일된 클래스 파일에서 바이트 코드를 읽어서 사용해야하므로 빌드 과정이 필수
규칙 수 - 408
규칙 카테코리 - Correctness Bad practice Dodge code Multithreaded Correctness Performance Malicious Code Vulnerability Security Experimental Internationalization
PMD
웹 사이트 - https://pmd.github.io
버전 - 5.2.2
라이센스 - BSD-style license
목적 - 잠재적인 문제들, 버그 가능성이 있는 부분 사용되지 않았거나 최적화되지 않은 코드들 검색 중복코드 검출
장점 - 종종 실제 결함을 찾아줌 - finds bad practices
단점 - 복제된 코드를 찾는 속도가 느림
규칙 수 - 234
규칙 카테고리
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
CheckStyle
웹 사이트 - http://checkstyle.sourceforge.net
버전 - 6.1.1
라이센스 - Lesser General Public
목적 - 자바 소스 파일을 읽어서 소스 코드 표준에 위반되는 것들을 검색 e.g. Sun Code Conventions, JavaDoc
장점 - 정해준 코딩 규약에 위반되는 것들을 검사해줌, 직접 코딩 규약을 만들어 사용가능
단점 - 실제 버그를 찾을 수 없음
규칙 수 - 132
규칙 카테고리 -
Annotations
Block Checks
Class Design
Coding
Duplicate Code
Headers
Imports
Javadoc Comments
Metrics
Miscellaneous
Modifiers
Naming Conventions
Regexp
Size Violations
Whitespace
GITHUB - 무료 EBOOK LINK (0) | 2020.01.14 |
---|---|
BAMBOO 소개 (0) | 2018.12.15 |
CI 기능 및 특징 (0) | 2018.12.15 |
Commit failed - exit code 128 received, with output: (0) | 2018.12.03 |
소프트웨어 형상 관리(SCM) (2) | 2018.09.05 |
댓글 영역