해당 글에서는 Java에서 SornarLint에서 발생하는 오류에 대한 해결방법에 대해 알아봅니다.
1) 문제점
💡 "Random" objects should be reused 문제점
- 객체를 재 사용해야 한다는 의미입니다. 이는 일반적으로 프로그래밍에서 객체를 생성하고 사용할 때 발생하는 비용을 줄이기 위해 권장되는 접근 방식입니다. - 객체를 반복적으로 생성하고 버리는 것보다, 이미 생성된 객체를 재사용하여 성능을 향상시킬 수 있습니다. 이를 통해 메모리 사용량을 줄이고 시스템 리소스를 효율적으로 활용할 수 있습니다.
💡 아래와 같이 new Random()으로 객체를 생성해서 만드는 코드 부분에서 해당 Lint 오류가 발생하였습니다.
2) 해결방안
💡 해결방안
- new Random() 형태로 객체를 만드는 방식이 아닌 Random rnd = SecureRandom.getInstanceStrong(); 형태로 구성을 합니다.
- 이는 SecureRandom의 인스턴스를 생성합니다. 기존에 객체를 사용하는 방법 보다 SecureRandom 클래스를 사용하면 보안에 강화된 랜덤 숫자를 생성할 수 있습니다.
💡 getInstanceStrong()
- SecureRandom 클래스의 인스턴스를 반환하는 정적 메서드입니다. 이 코드를 사용하면 안전한 랜덤 숫자 생성기를 생성하여 사용할 수 있습니다. - 또한 getInstanceStrong()메서드를 사용하면 NoSuchAlgorithmException이 발생할 수 있으므로 예외처리를 해주어야 합니다.
StringBuffer getGroupCode(int number) {
StringBuffer buf = new StringBuffer();
try {
Random rnd = SecureRandom.getInstanceStrong();
for (int i = 0; i < number; i++) {
if (rnd.nextBoolean()) {
buf.append((char) (rnd.nextInt(26)) + 97);
} else {
buf.append((rnd.nextInt(10)));
}
}
} catch (Exception e) {
log.debug("Exception :: " + e.getMessage());
}
return buf;
}