728x90
반응형
상황
- SpotBugs로 소스코드보안, 취약점등 정적 분석 결과 DM_BOXED_PRIMITIVE_FOR_PARSING 버그가 발견되었습니다. (우선순위가 무려 High네요..)
처리방법
원인
- boxed primitive(원시 자료형을 래핑한 객체)은 값의 추출을 위해 문자열에서 생성되었을 때 불필요한 객체 생성과 메모리 할당이 발생할 수 있습니다. 이렇게 생성된 boxed primitive은 값을 추출하기 위해 다시 unboxing 과정을 거쳐야 합니다. 이러한 불필요한 작업을 피하고 코드 실행 시간을 줄이기 위해서는 문자열에서 바로 primitive 값을 추출하는 방법을 사용해야 합니다.
오류 예시
Integer boxedInt = Integer.valueOf("123");
int unboxedInt = boxedInt.intValue();
- 이 예제에서 "Integer.valueOf()" 메소드를 사용하여 "123" 문자열에서 Integer 객체를 생성하고, "boxedInt" 변수에 할당합니다. 그런 다음 "intValue()" 메소드를 사용하여 boxedInt 객체에서 int 값을 추출하고, "unboxedInt" 변수에 할당합니다. 이러한 방법은 특별한 이유가 없는 한, 성능 저하와 불필요한 객체 생성을 초래할 수 있습니다.
해결
int parsedInt = Integer.parseInt("123");
- 위의 예제에서 "parseInt()" 메소드를 사용하여 "123" 문자열에서 int 값을 추출하고, "parsedInt" 변수에 할당합니다. 이 방법은 unboxing을 수행하지 않으며, 불필요한 객체 생성 및 메모리 할당을 피할 수 있습니다.
728x90
반응형