SCW 아이콘
영웅 배경, 구분선 없음
블로그

일반적인 Java 실수를 방지하는 방법

방황 네토
게시됨 Feb 02, 2022
마지막 업데이트: 2026년 3월 9일

더 생산적인 Java 개발자가 되세요

전 세계적으로 9백만 명의 개발자*를 보유한 Java (Oracle Corporation) 는 세계에서 가장 인기 있는 프로그래밍 언어 중 하나입니다.많은 응용 프로그램 프레임워크가 Java를 기반으로 구축되었습니다. Java Runtime Environment (JRE) 는 모든 Java 프로그램이 실행되는 환경인 Java Runtime Environment (JRE) 를 지원하는 다양한 장치에서 프로그램을 실행할 수 있는 매우 다양한 언어이기 때문입니다.개발자 주도 커뮤니티는 매우 활발하며 초보 프로그래머가 이용할 수 있는 심층적인 지원으로 인기가 계속 높아지고 있습니다.

Java는 오랫동안 사용되어 왔기 때문에 커뮤니티에서는 표준, 도구, 코딩 패턴을 개발하고 개발자들이 반복해서 직면하는 일반적인 실수를 완화하는 데 수년을 보냈습니다.커뮤니티가 주도하는 이러한 모든 이니셔티브에는 한 가지 공통된 목표가 있습니다. 바로 개발자가 Java로 애플리케이션을 개발할 때 생산성을 최대한 높일 수 있도록 돕는 것입니다.그러나 응용 프로그램 코드에 모범 사례나 패턴을 적용할 때 책임은 개발자에게 있습니다.모범 사례를 적용하는 방식이 매우 다양하기 때문에 커뮤니티 내에서 의견이 많이 다를 경우 코딩 관행에 대한 표준적인 접근 방식을 취하기가 어렵습니다.개발자들은 온라인 커뮤니티에서 도움을 구하는데, 때로는 의도치 않게 코딩 문제에 대한 안전하지 못한 해결책을 제시하기도 합니다.

개발자가 일반적인 Java 코딩 문제에 대한 보안 솔루션을 구현할 수 있도록 돕기 위해 Sensei를 만들었습니다. Sensei는 전문적인 환경에서 사용자 또는 조직이 정의한 레시피 (또는 규칙) 에 따라 잘못된 코딩 패턴을 수정하는 IntelliJ 플러그인입니다.Sensei를 사용하면 개발자가 클릭 한 번으로 일반적인 Java 실수 (문제) 를 식별하고 수정할 수 있습니다.

Sensei가 일반적인 Java 코딩 실수를 해결하여 개발자 생산성을 높이는 방법을 알아보려면 계속 읽어보세요.

개발자를 좌절시키는 반복되는 실수

이러한 일반적인 실수의 한 가지 예는 래퍼 값의 잘못된 동등성 검사입니다.예상치 못한 결과를 방지하려면 참조 비교 연산자 (= =) 대신 equals 메서드를 사용하여 박스형 프리미티브의 값을 비교해야 합니다.

예를 들어, -128~127 범위의 정수 값에 대해 참조 비교 연산자를 사용하면 (일반적으로) equals 메서드와 동일하게 동작합니다.하지만 이 범위를 벗어나는 값과 동일한 비교를 수행하면 결과가 달라집니다.이는 Java가 앞서 언급한 정수 값 범위에 대해 일정한 풀을 유지하기 때문입니다.equals 메서드를 사용하면 항상 예상 결과를 얻을 수 있으므로 비교하기에 적합한 방법입니다.

이 예제에서는 연산자 (==) 를 잘못 사용하여 동등성을 검사하고 있습니다.

그 결과 다음과 같은 결과가 출력됩니다.

참된

거짓

거짓

참된

비교하는 올바른 방법은 equals 방법을 사용하는 것입니다.

그러면 출력은 다음과 같습니다.

참된

거짓

참된

거짓

잘 알려진 이 베스트 프랙티스는 꽤 오랫동안 사용되어 왔지만, 가장 적절하지 않은 시기에 제대로 작동하지 않는 레거시 코드에서 제대로 구현되지 않는 경우가 많습니다.그래서 로컬에서 이러한 바람직하지 않은 코딩 패턴을 식별하고 Sensei를 사용하여 클릭 한 번으로 수정 사항을 적용할 수 있는 레시피 (또는 규칙) 를 만들었습니다.

Sensei는 입력 시 원하지 않는 코드를 스캔하고 수정할 수 있는 고도로 사용자 정의 가능한 IDE 플러그인입니다. 수백 개의 다운로드 가능한 코드 변환 및 마이그레이션 레시피 (규칙) 뿐만 아니라 직접 작성할 수 있는 기능이 내장되어 있습니다.개발자는 Sensei를 사용하여 코드를 입력할 때 잘못된 코드 패턴을 수정하여 양질의 코드를 더 빠르게 제공하고 궁극적으로 팀과 프로젝트 전반에서 일관되고 표준적인 방식으로 코드를 작성할 수 있습니다.

Sensei가 이러한 일반적인 Java 문제를 해결하는 방법

Sensei에서는 자신만의 레시피를 만들 수 있으므로 위에서 언급한 실수를 수정하기 위해 레시피를 만들었습니다.

이 예제에서는 박스형 프리미티브 타입에서 비교 연산자 (==) 를 사용하는 위치를 찾으려고 합니다.

센세이 레시피는 다음과 같습니다 (YAML).

위의 내용은 입력할 때 반복되는 잘못된 패턴 또는 전체 파일, 구성된 범위, 전체 코드베이스를 검색할 수 있습니다.패턴이 발견되면 자연스러운 다음 단계는 온라인에서 검색하지 않고도 즉시 수정할 수 있는 것입니다.Sensei를 사용하면 지정된 대로 코드를 추가/편집/삭제할 수 있는 수정 프로그램을 만들 수 있습니다.적합하다고 판단되는 수정 사항을 여러 개 제공하여 개발자가 적합하다고 판단되는 가장 적절한 수정 사항을 선택할 수도 있습니다.

이 예제에서는 연산자 (==) 대신 equals 메서드를 사용하여 비교를 다시 작성하려고 합니다.

사용 가능한 수정 사항은 다음과 같이 설명됩니다.

작동 방식:

간편한 방법으로 표준 코딩 지침 구현

Java Gotchas Cookbook에는 일반적인 실수를 피하고 코드를 깔끔하고 안전하게 유지하는 데 도움이 되는 22가지 레시피가 있습니다.객체 동등성, 예외 처리, 정규 표현식 및 컬렉션과 같은 다양한 Java 언어 기능 및 API의 부정확하거나 안전하지 않은 사용을 감지합니다.Sensei와 이 쿡북을 사용하면 처음부터 더 나은 코드를 작성할 수 있을 뿐만 아니라 고유한 팀, 프로젝트 또는 조직에 맞게 자신만의 레시피를 만들 수도 있습니다.

이는 Sensei를 사용하여 프로젝트를 표준화할 수 있는 다양한 방법 중 하나에 불과합니다.풀 리퀘스트나 직접 코딩할 때 자주 접하는 안티패턴 또는 특정 수동 코드 변환이 있으면 언제든지 찾아볼 수 있습니다.개발자들이 자주 놓치는 코딩 가이드라인이 있다면 가이드라인을 레시피로 변환하여 개발자가 승인된 코드 변환을 자신 있게 적용할 수 있습니다.

지금 Sensei를 설치하고 생산적인 개발 경험을 위해 Java Gotchas Cookbook을 활성화하세요. https://sensei.securecodewarrior.com/cookbooks/scw:java

*2021, 개발자 국가 현황, https://www.developernation.net/developer-reports/de20

리소스 보기
리소스 보기

더 많은 것에 관심이 있으신가요?

더 알아보세요

Secure Code Warrior는 전체 소프트웨어 개발 라이프사이클에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 조직을 위해 여기 있습니다.AppSec 관리자, 개발자, CISO 또는 보안 관련 누구든 관계없이 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.

데모 예약
공유 대상:
링크드인 브랜드사회적x 로고
작성자
방황 네토
게시일: Feb 02, 2022

공유 대상:
링크드인 브랜드사회적x 로고

더 생산적인 Java 개발자가 되세요

전 세계적으로 9백만 명의 개발자*를 보유한 Java (Oracle Corporation) 는 세계에서 가장 인기 있는 프로그래밍 언어 중 하나입니다.많은 응용 프로그램 프레임워크가 Java를 기반으로 구축되었습니다. Java Runtime Environment (JRE) 는 모든 Java 프로그램이 실행되는 환경인 Java Runtime Environment (JRE) 를 지원하는 다양한 장치에서 프로그램을 실행할 수 있는 매우 다양한 언어이기 때문입니다.개발자 주도 커뮤니티는 매우 활발하며 초보 프로그래머가 이용할 수 있는 심층적인 지원으로 인기가 계속 높아지고 있습니다.

Java는 오랫동안 사용되어 왔기 때문에 커뮤니티에서는 표준, 도구, 코딩 패턴을 개발하고 개발자들이 반복해서 직면하는 일반적인 실수를 완화하는 데 수년을 보냈습니다.커뮤니티가 주도하는 이러한 모든 이니셔티브에는 한 가지 공통된 목표가 있습니다. 바로 개발자가 Java로 애플리케이션을 개발할 때 생산성을 최대한 높일 수 있도록 돕는 것입니다.그러나 응용 프로그램 코드에 모범 사례나 패턴을 적용할 때 책임은 개발자에게 있습니다.모범 사례를 적용하는 방식이 매우 다양하기 때문에 커뮤니티 내에서 의견이 많이 다를 경우 코딩 관행에 대한 표준적인 접근 방식을 취하기가 어렵습니다.개발자들은 온라인 커뮤니티에서 도움을 구하는데, 때로는 의도치 않게 코딩 문제에 대한 안전하지 못한 해결책을 제시하기도 합니다.

개발자가 일반적인 Java 코딩 문제에 대한 보안 솔루션을 구현할 수 있도록 돕기 위해 Sensei를 만들었습니다. Sensei는 전문적인 환경에서 사용자 또는 조직이 정의한 레시피 (또는 규칙) 에 따라 잘못된 코딩 패턴을 수정하는 IntelliJ 플러그인입니다.Sensei를 사용하면 개발자가 클릭 한 번으로 일반적인 Java 실수 (문제) 를 식별하고 수정할 수 있습니다.

Sensei가 일반적인 Java 코딩 실수를 해결하여 개발자 생산성을 높이는 방법을 알아보려면 계속 읽어보세요.

개발자를 좌절시키는 반복되는 실수

이러한 일반적인 실수의 한 가지 예는 래퍼 값의 잘못된 동등성 검사입니다.예상치 못한 결과를 방지하려면 참조 비교 연산자 (= =) 대신 equals 메서드를 사용하여 박스형 프리미티브의 값을 비교해야 합니다.

예를 들어, -128~127 범위의 정수 값에 대해 참조 비교 연산자를 사용하면 (일반적으로) equals 메서드와 동일하게 동작합니다.하지만 이 범위를 벗어나는 값과 동일한 비교를 수행하면 결과가 달라집니다.이는 Java가 앞서 언급한 정수 값 범위에 대해 일정한 풀을 유지하기 때문입니다.equals 메서드를 사용하면 항상 예상 결과를 얻을 수 있으므로 비교하기에 적합한 방법입니다.

이 예제에서는 연산자 (==) 를 잘못 사용하여 동등성을 검사하고 있습니다.

그 결과 다음과 같은 결과가 출력됩니다.

참된

거짓

거짓

참된

비교하는 올바른 방법은 equals 방법을 사용하는 것입니다.

그러면 출력은 다음과 같습니다.

참된

거짓

참된

거짓

잘 알려진 이 베스트 프랙티스는 꽤 오랫동안 사용되어 왔지만, 가장 적절하지 않은 시기에 제대로 작동하지 않는 레거시 코드에서 제대로 구현되지 않는 경우가 많습니다.그래서 로컬에서 이러한 바람직하지 않은 코딩 패턴을 식별하고 Sensei를 사용하여 클릭 한 번으로 수정 사항을 적용할 수 있는 레시피 (또는 규칙) 를 만들었습니다.

Sensei는 입력 시 원하지 않는 코드를 스캔하고 수정할 수 있는 고도로 사용자 정의 가능한 IDE 플러그인입니다. 수백 개의 다운로드 가능한 코드 변환 및 마이그레이션 레시피 (규칙) 뿐만 아니라 직접 작성할 수 있는 기능이 내장되어 있습니다.개발자는 Sensei를 사용하여 코드를 입력할 때 잘못된 코드 패턴을 수정하여 양질의 코드를 더 빠르게 제공하고 궁극적으로 팀과 프로젝트 전반에서 일관되고 표준적인 방식으로 코드를 작성할 수 있습니다.

Sensei가 이러한 일반적인 Java 문제를 해결하는 방법

Sensei에서는 자신만의 레시피를 만들 수 있으므로 위에서 언급한 실수를 수정하기 위해 레시피를 만들었습니다.

이 예제에서는 박스형 프리미티브 타입에서 비교 연산자 (==) 를 사용하는 위치를 찾으려고 합니다.

센세이 레시피는 다음과 같습니다 (YAML).

위의 내용은 입력할 때 반복되는 잘못된 패턴 또는 전체 파일, 구성된 범위, 전체 코드베이스를 검색할 수 있습니다.패턴이 발견되면 자연스러운 다음 단계는 온라인에서 검색하지 않고도 즉시 수정할 수 있는 것입니다.Sensei를 사용하면 지정된 대로 코드를 추가/편집/삭제할 수 있는 수정 프로그램을 만들 수 있습니다.적합하다고 판단되는 수정 사항을 여러 개 제공하여 개발자가 적합하다고 판단되는 가장 적절한 수정 사항을 선택할 수도 있습니다.

이 예제에서는 연산자 (==) 대신 equals 메서드를 사용하여 비교를 다시 작성하려고 합니다.

사용 가능한 수정 사항은 다음과 같이 설명됩니다.

작동 방식:

간편한 방법으로 표준 코딩 지침 구현

Java Gotchas Cookbook에는 일반적인 실수를 피하고 코드를 깔끔하고 안전하게 유지하는 데 도움이 되는 22가지 레시피가 있습니다.객체 동등성, 예외 처리, 정규 표현식 및 컬렉션과 같은 다양한 Java 언어 기능 및 API의 부정확하거나 안전하지 않은 사용을 감지합니다.Sensei와 이 쿡북을 사용하면 처음부터 더 나은 코드를 작성할 수 있을 뿐만 아니라 고유한 팀, 프로젝트 또는 조직에 맞게 자신만의 레시피를 만들 수도 있습니다.

이는 Sensei를 사용하여 프로젝트를 표준화할 수 있는 다양한 방법 중 하나에 불과합니다.풀 리퀘스트나 직접 코딩할 때 자주 접하는 안티패턴 또는 특정 수동 코드 변환이 있으면 언제든지 찾아볼 수 있습니다.개발자들이 자주 놓치는 코딩 가이드라인이 있다면 가이드라인을 레시피로 변환하여 개발자가 승인된 코드 변환을 자신 있게 적용할 수 있습니다.

지금 Sensei를 설치하고 생산적인 개발 경험을 위해 Java Gotchas Cookbook을 활성화하세요. https://sensei.securecodewarrior.com/cookbooks/scw:java

*2021, 개발자 국가 현황, https://www.developernation.net/developer-reports/de20

리소스 보기
리소스 보기

보고서를 다운로드하려면 아래 양식을 작성하세요.

귀하의 동의를 구하여 당사 제품 및/또는 관련 보안 코딩 주제에 대한 정보를 보내드릴 수 있도록 하겠습니다. 당사는 항상 귀하의 개인정보를 최대한의 주의를 기울여 취급하며, 마케팅 목적으로 다른 회사에 절대 판매하지 않습니다.

제출
scw 성공 아이콘
scw 오류 아이콘
양식을 제출하려면 'Analytics' 쿠키를 활성화하십시오. 완료되면 언제든지 다시 비활성화할 수 있습니다.

더 생산적인 Java 개발자가 되세요

전 세계적으로 9백만 명의 개발자*를 보유한 Java (Oracle Corporation) 는 세계에서 가장 인기 있는 프로그래밍 언어 중 하나입니다.많은 응용 프로그램 프레임워크가 Java를 기반으로 구축되었습니다. Java Runtime Environment (JRE) 는 모든 Java 프로그램이 실행되는 환경인 Java Runtime Environment (JRE) 를 지원하는 다양한 장치에서 프로그램을 실행할 수 있는 매우 다양한 언어이기 때문입니다.개발자 주도 커뮤니티는 매우 활발하며 초보 프로그래머가 이용할 수 있는 심층적인 지원으로 인기가 계속 높아지고 있습니다.

Java는 오랫동안 사용되어 왔기 때문에 커뮤니티에서는 표준, 도구, 코딩 패턴을 개발하고 개발자들이 반복해서 직면하는 일반적인 실수를 완화하는 데 수년을 보냈습니다.커뮤니티가 주도하는 이러한 모든 이니셔티브에는 한 가지 공통된 목표가 있습니다. 바로 개발자가 Java로 애플리케이션을 개발할 때 생산성을 최대한 높일 수 있도록 돕는 것입니다.그러나 응용 프로그램 코드에 모범 사례나 패턴을 적용할 때 책임은 개발자에게 있습니다.모범 사례를 적용하는 방식이 매우 다양하기 때문에 커뮤니티 내에서 의견이 많이 다를 경우 코딩 관행에 대한 표준적인 접근 방식을 취하기가 어렵습니다.개발자들은 온라인 커뮤니티에서 도움을 구하는데, 때로는 의도치 않게 코딩 문제에 대한 안전하지 못한 해결책을 제시하기도 합니다.

개발자가 일반적인 Java 코딩 문제에 대한 보안 솔루션을 구현할 수 있도록 돕기 위해 Sensei를 만들었습니다. Sensei는 전문적인 환경에서 사용자 또는 조직이 정의한 레시피 (또는 규칙) 에 따라 잘못된 코딩 패턴을 수정하는 IntelliJ 플러그인입니다.Sensei를 사용하면 개발자가 클릭 한 번으로 일반적인 Java 실수 (문제) 를 식별하고 수정할 수 있습니다.

Sensei가 일반적인 Java 코딩 실수를 해결하여 개발자 생산성을 높이는 방법을 알아보려면 계속 읽어보세요.

개발자를 좌절시키는 반복되는 실수

이러한 일반적인 실수의 한 가지 예는 래퍼 값의 잘못된 동등성 검사입니다.예상치 못한 결과를 방지하려면 참조 비교 연산자 (= =) 대신 equals 메서드를 사용하여 박스형 프리미티브의 값을 비교해야 합니다.

예를 들어, -128~127 범위의 정수 값에 대해 참조 비교 연산자를 사용하면 (일반적으로) equals 메서드와 동일하게 동작합니다.하지만 이 범위를 벗어나는 값과 동일한 비교를 수행하면 결과가 달라집니다.이는 Java가 앞서 언급한 정수 값 범위에 대해 일정한 풀을 유지하기 때문입니다.equals 메서드를 사용하면 항상 예상 결과를 얻을 수 있으므로 비교하기에 적합한 방법입니다.

이 예제에서는 연산자 (==) 를 잘못 사용하여 동등성을 검사하고 있습니다.

그 결과 다음과 같은 결과가 출력됩니다.

참된

거짓

거짓

참된

비교하는 올바른 방법은 equals 방법을 사용하는 것입니다.

그러면 출력은 다음과 같습니다.

참된

거짓

참된

거짓

잘 알려진 이 베스트 프랙티스는 꽤 오랫동안 사용되어 왔지만, 가장 적절하지 않은 시기에 제대로 작동하지 않는 레거시 코드에서 제대로 구현되지 않는 경우가 많습니다.그래서 로컬에서 이러한 바람직하지 않은 코딩 패턴을 식별하고 Sensei를 사용하여 클릭 한 번으로 수정 사항을 적용할 수 있는 레시피 (또는 규칙) 를 만들었습니다.

Sensei는 입력 시 원하지 않는 코드를 스캔하고 수정할 수 있는 고도로 사용자 정의 가능한 IDE 플러그인입니다. 수백 개의 다운로드 가능한 코드 변환 및 마이그레이션 레시피 (규칙) 뿐만 아니라 직접 작성할 수 있는 기능이 내장되어 있습니다.개발자는 Sensei를 사용하여 코드를 입력할 때 잘못된 코드 패턴을 수정하여 양질의 코드를 더 빠르게 제공하고 궁극적으로 팀과 프로젝트 전반에서 일관되고 표준적인 방식으로 코드를 작성할 수 있습니다.

Sensei가 이러한 일반적인 Java 문제를 해결하는 방법

Sensei에서는 자신만의 레시피를 만들 수 있으므로 위에서 언급한 실수를 수정하기 위해 레시피를 만들었습니다.

이 예제에서는 박스형 프리미티브 타입에서 비교 연산자 (==) 를 사용하는 위치를 찾으려고 합니다.

센세이 레시피는 다음과 같습니다 (YAML).

위의 내용은 입력할 때 반복되는 잘못된 패턴 또는 전체 파일, 구성된 범위, 전체 코드베이스를 검색할 수 있습니다.패턴이 발견되면 자연스러운 다음 단계는 온라인에서 검색하지 않고도 즉시 수정할 수 있는 것입니다.Sensei를 사용하면 지정된 대로 코드를 추가/편집/삭제할 수 있는 수정 프로그램을 만들 수 있습니다.적합하다고 판단되는 수정 사항을 여러 개 제공하여 개발자가 적합하다고 판단되는 가장 적절한 수정 사항을 선택할 수도 있습니다.

이 예제에서는 연산자 (==) 대신 equals 메서드를 사용하여 비교를 다시 작성하려고 합니다.

사용 가능한 수정 사항은 다음과 같이 설명됩니다.

작동 방식:

간편한 방법으로 표준 코딩 지침 구현

Java Gotchas Cookbook에는 일반적인 실수를 피하고 코드를 깔끔하고 안전하게 유지하는 데 도움이 되는 22가지 레시피가 있습니다.객체 동등성, 예외 처리, 정규 표현식 및 컬렉션과 같은 다양한 Java 언어 기능 및 API의 부정확하거나 안전하지 않은 사용을 감지합니다.Sensei와 이 쿡북을 사용하면 처음부터 더 나은 코드를 작성할 수 있을 뿐만 아니라 고유한 팀, 프로젝트 또는 조직에 맞게 자신만의 레시피를 만들 수도 있습니다.

이는 Sensei를 사용하여 프로젝트를 표준화할 수 있는 다양한 방법 중 하나에 불과합니다.풀 리퀘스트나 직접 코딩할 때 자주 접하는 안티패턴 또는 특정 수동 코드 변환이 있으면 언제든지 찾아볼 수 있습니다.개발자들이 자주 놓치는 코딩 가이드라인이 있다면 가이드라인을 레시피로 변환하여 개발자가 승인된 코드 변환을 자신 있게 적용할 수 있습니다.

지금 Sensei를 설치하고 생산적인 개발 경험을 위해 Java Gotchas Cookbook을 활성화하세요. https://sensei.securecodewarrior.com/cookbooks/scw:java

*2021, 개발자 국가 현황, https://www.developernation.net/developer-reports/de20

웨비나 보기
시작하기
더 알아보세요

아래 링크를 클릭하고 이 리소스의 PDF를 다운로드하십시오.

Secure Code Warrior는 전체 소프트웨어 개발 라이프사이클에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 조직을 위해 여기 있습니다.AppSec 관리자, 개발자, CISO 또는 보안 관련 누구든 관계없이 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.

보고서 보기데모 예약
리소스 보기
공유 대상:
링크드인 브랜드사회적x 로고
더 많은 것에 관심이 있으신가요?

공유 대상:
링크드인 브랜드사회적x 로고
작성자
방황 네토
게시일: Feb 02, 2022

공유 대상:
링크드인 브랜드사회적x 로고

더 생산적인 Java 개발자가 되세요

전 세계적으로 9백만 명의 개발자*를 보유한 Java (Oracle Corporation) 는 세계에서 가장 인기 있는 프로그래밍 언어 중 하나입니다.많은 응용 프로그램 프레임워크가 Java를 기반으로 구축되었습니다. Java Runtime Environment (JRE) 는 모든 Java 프로그램이 실행되는 환경인 Java Runtime Environment (JRE) 를 지원하는 다양한 장치에서 프로그램을 실행할 수 있는 매우 다양한 언어이기 때문입니다.개발자 주도 커뮤니티는 매우 활발하며 초보 프로그래머가 이용할 수 있는 심층적인 지원으로 인기가 계속 높아지고 있습니다.

Java는 오랫동안 사용되어 왔기 때문에 커뮤니티에서는 표준, 도구, 코딩 패턴을 개발하고 개발자들이 반복해서 직면하는 일반적인 실수를 완화하는 데 수년을 보냈습니다.커뮤니티가 주도하는 이러한 모든 이니셔티브에는 한 가지 공통된 목표가 있습니다. 바로 개발자가 Java로 애플리케이션을 개발할 때 생산성을 최대한 높일 수 있도록 돕는 것입니다.그러나 응용 프로그램 코드에 모범 사례나 패턴을 적용할 때 책임은 개발자에게 있습니다.모범 사례를 적용하는 방식이 매우 다양하기 때문에 커뮤니티 내에서 의견이 많이 다를 경우 코딩 관행에 대한 표준적인 접근 방식을 취하기가 어렵습니다.개발자들은 온라인 커뮤니티에서 도움을 구하는데, 때로는 의도치 않게 코딩 문제에 대한 안전하지 못한 해결책을 제시하기도 합니다.

개발자가 일반적인 Java 코딩 문제에 대한 보안 솔루션을 구현할 수 있도록 돕기 위해 Sensei를 만들었습니다. Sensei는 전문적인 환경에서 사용자 또는 조직이 정의한 레시피 (또는 규칙) 에 따라 잘못된 코딩 패턴을 수정하는 IntelliJ 플러그인입니다.Sensei를 사용하면 개발자가 클릭 한 번으로 일반적인 Java 실수 (문제) 를 식별하고 수정할 수 있습니다.

Sensei가 일반적인 Java 코딩 실수를 해결하여 개발자 생산성을 높이는 방법을 알아보려면 계속 읽어보세요.

개발자를 좌절시키는 반복되는 실수

이러한 일반적인 실수의 한 가지 예는 래퍼 값의 잘못된 동등성 검사입니다.예상치 못한 결과를 방지하려면 참조 비교 연산자 (= =) 대신 equals 메서드를 사용하여 박스형 프리미티브의 값을 비교해야 합니다.

예를 들어, -128~127 범위의 정수 값에 대해 참조 비교 연산자를 사용하면 (일반적으로) equals 메서드와 동일하게 동작합니다.하지만 이 범위를 벗어나는 값과 동일한 비교를 수행하면 결과가 달라집니다.이는 Java가 앞서 언급한 정수 값 범위에 대해 일정한 풀을 유지하기 때문입니다.equals 메서드를 사용하면 항상 예상 결과를 얻을 수 있으므로 비교하기에 적합한 방법입니다.

이 예제에서는 연산자 (==) 를 잘못 사용하여 동등성을 검사하고 있습니다.

그 결과 다음과 같은 결과가 출력됩니다.

참된

거짓

거짓

참된

비교하는 올바른 방법은 equals 방법을 사용하는 것입니다.

그러면 출력은 다음과 같습니다.

참된

거짓

참된

거짓

잘 알려진 이 베스트 프랙티스는 꽤 오랫동안 사용되어 왔지만, 가장 적절하지 않은 시기에 제대로 작동하지 않는 레거시 코드에서 제대로 구현되지 않는 경우가 많습니다.그래서 로컬에서 이러한 바람직하지 않은 코딩 패턴을 식별하고 Sensei를 사용하여 클릭 한 번으로 수정 사항을 적용할 수 있는 레시피 (또는 규칙) 를 만들었습니다.

Sensei는 입력 시 원하지 않는 코드를 스캔하고 수정할 수 있는 고도로 사용자 정의 가능한 IDE 플러그인입니다. 수백 개의 다운로드 가능한 코드 변환 및 마이그레이션 레시피 (규칙) 뿐만 아니라 직접 작성할 수 있는 기능이 내장되어 있습니다.개발자는 Sensei를 사용하여 코드를 입력할 때 잘못된 코드 패턴을 수정하여 양질의 코드를 더 빠르게 제공하고 궁극적으로 팀과 프로젝트 전반에서 일관되고 표준적인 방식으로 코드를 작성할 수 있습니다.

Sensei가 이러한 일반적인 Java 문제를 해결하는 방법

Sensei에서는 자신만의 레시피를 만들 수 있으므로 위에서 언급한 실수를 수정하기 위해 레시피를 만들었습니다.

이 예제에서는 박스형 프리미티브 타입에서 비교 연산자 (==) 를 사용하는 위치를 찾으려고 합니다.

센세이 레시피는 다음과 같습니다 (YAML).

위의 내용은 입력할 때 반복되는 잘못된 패턴 또는 전체 파일, 구성된 범위, 전체 코드베이스를 검색할 수 있습니다.패턴이 발견되면 자연스러운 다음 단계는 온라인에서 검색하지 않고도 즉시 수정할 수 있는 것입니다.Sensei를 사용하면 지정된 대로 코드를 추가/편집/삭제할 수 있는 수정 프로그램을 만들 수 있습니다.적합하다고 판단되는 수정 사항을 여러 개 제공하여 개발자가 적합하다고 판단되는 가장 적절한 수정 사항을 선택할 수도 있습니다.

이 예제에서는 연산자 (==) 대신 equals 메서드를 사용하여 비교를 다시 작성하려고 합니다.

사용 가능한 수정 사항은 다음과 같이 설명됩니다.

작동 방식:

간편한 방법으로 표준 코딩 지침 구현

Java Gotchas Cookbook에는 일반적인 실수를 피하고 코드를 깔끔하고 안전하게 유지하는 데 도움이 되는 22가지 레시피가 있습니다.객체 동등성, 예외 처리, 정규 표현식 및 컬렉션과 같은 다양한 Java 언어 기능 및 API의 부정확하거나 안전하지 않은 사용을 감지합니다.Sensei와 이 쿡북을 사용하면 처음부터 더 나은 코드를 작성할 수 있을 뿐만 아니라 고유한 팀, 프로젝트 또는 조직에 맞게 자신만의 레시피를 만들 수도 있습니다.

이는 Sensei를 사용하여 프로젝트를 표준화할 수 있는 다양한 방법 중 하나에 불과합니다.풀 리퀘스트나 직접 코딩할 때 자주 접하는 안티패턴 또는 특정 수동 코드 변환이 있으면 언제든지 찾아볼 수 있습니다.개발자들이 자주 놓치는 코딩 가이드라인이 있다면 가이드라인을 레시피로 변환하여 개발자가 승인된 코드 변환을 자신 있게 적용할 수 있습니다.

지금 Sensei를 설치하고 생산적인 개발 경험을 위해 Java Gotchas Cookbook을 활성화하세요. https://sensei.securecodewarrior.com/cookbooks/scw:java

*2021, 개발자 국가 현황, https://www.developernation.net/developer-reports/de20

목차

PDF 다운로드
리소스 보기
더 많은 것에 관심이 있으신가요?

더 알아보세요

Secure Code Warrior는 전체 소프트웨어 개발 라이프사이클에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 조직을 위해 여기 있습니다.AppSec 관리자, 개발자, CISO 또는 보안 관련 누구든 관계없이 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.

데모 예약다운로드
공유 대상:
링크드인 브랜드사회적x 로고
리소스 허브

시작하는 데 도움이 되는 리소스

더 많은 게시물
리소스 허브

시작하는 데 도움이 되는 리소스

더 많은 게시물