코드 검토 - 릴리즈 정보


1.0 알려진 문제점
   1.1 사용자 정의 규칙에 설명 및 예제를 포함할 수 없음
   1.2 코드 검토 세부사항 보기에서 일치 내용이 제거될 수 있음
   1.3 구조 분석(structural analysis) 빠른 수정을 위해 새 클래스를 작성할 수 없음
   1.4 특정 패키지의 소스가 검토되지 않음
   1.5 행 번호가 항상 표시되지는 않음
   1.6 JSDK 또는 J2EE 클래스의 내부 데이터 변수는 데이터 플로우 경로에 표시되지 않아야 함
   1.7 디자인 프린시펄 / 복잡도 규칙에서 깊이를 음수 값으로 설정할 수 있음
   1.8 매개변수에 US ASCII가 아닌 문자를 사용하여 규칙을 작성할 경우 인코딩 문제 발생
   1.9 구조 분석 규칙에 대한 진행 상태가 적절하게 보고되지 않음
   1.10 기본 보기에서 시작/중지 단추가 겹침
   1.11 "Avoid using java.lang.String.compareTo () to compare locale-sensitive strings" 규칙에 대한 빠른 수정에서 올바르지 않은 솔루션을 제안
   1.12 J2EE 템플리트 규칙(Always call [method A] after [method B])의 일부 인스턴스 생성에 문제가 있음
   1.13 J2EE 템플리트 규칙(Always call [methodA] after [methodB])에 문제 발생 가능성이 있음
   1.14 사용자 정의된 Avoid Defining Method 규칙에서의 잘못된 positive
   1.15 메소드 이름 입력 시 메소드를 사용하는 템플리트가 작동하지 않음
   1.16 서버 데이터를 구성하려고 할 때 중요 오류 창이 표시됨

1.0 알려진 문제점

1.1 사용자 정의 규칙에 설명 및 예제를 포함할 수 없음

규칙 템플리트를 사용하여 사용자 정의 규칙을 작성할 때, 설명 및 예제를 포함할 수 없습니다.

1.2 코드 검토 세부사항 보기에서 일치 내용이 제거될 수 있음

순환 종속성(cyclic dependency) 카테고리의 규칙으로 발견된 일치 내용을 실행 취소하면, 코드 검토 세부사항 보기에서 일치 내용이 제거됩니다. 일치 내용이 제거되지 않고 "미해결" 상태로 갱신되어야 합니다. 이 문제를 해결하려면, 순환 종속성 카테고리에서 규칙을 선택한 후 작업공간의 분석을 실행하십시오.

1.3 구조 분석(structural analysis) 빠른 수정을 위해 새 클래스를 작성할 수 없음

일반적으로, 구조 분석 빠른 수정을 사용하여 다음 두 가지 방식으로 코드 문제를 해결할 수 있습니다. 1) 문제가 있는 코드를 이동할 수 있는 기존 클래스를 선택하거나, 2) 문제가 있는 코드를 이동할 수 있는 새 클래스를 작성하십시오. 두 번째 옵션을 선택한 경우, 오류로 빠른 수정이 완료되지 않습니다.

이 문제를 해결하려면, 빠른 수정을 적용하기 전에 새 클래스를 작성하고 코드 검토 리팩터링 마법사에서 해당 클래스를 선택하십시오.

1.4 특정 패키지의 소스가 검토되지 않음

다음 패키지에 포함된 소스는 J2EE 권장 학습(Best Practice) 규칙 중 일부에서 검토되지 않습니다.
1. com.ibm
2. COM.ibm
3. sun
4. sunw
5. java
6. javax
7. org.apache
8. com.sun
9. org.omg
10. org.ietf
11. org.w3c
12. org.xml

1.5 행 번호가 항상 표시되지는 않음

코드 검토 보기에서, J2EE 권장 학습(Best Practice) 규칙으로 발견된 대상 중 일부에 대한 행 번호가 항상 표시되지는 않습니다. 발견 결과를 두 번 누르면 올바른 행 번호가 표시됩니다.

1.6 JSDK 또는 J2EE 클래스의 내부 데이터 변수는 데이터 플로우 경로에 표시되지 않아야 함

데이터 플로우 경로는 규칙 발견 결과에 의해 강조표시된 문제를 야기하는 데이터 변경사항의 종속성 히스토리를 표시합니다. 데이터 플로우 경로는 경로 탭에 표시됩니다. 간혹 데이터 플로우 경로가 JSDK 또는 J2EE 클래스에 있는 내부 데이터 구조를 표시할 경우가 있습니다. 예를 들어, java.lang.Vector 유형의 변수를 수정하였다는 것이 아닌 java.lang.Object[]variable을 수정하였음을 알리는 메시지를 볼 수 있습니다. 이는 java.lang.Vector 구현의 내부 필드이므로 탭에 표시된 이 개인 정보를 보면 혼동될 수 있습니다.

1.7 디자인 프린시펄 / 복잡도 규칙에서 깊이를 음수 값으로 설정할 수 있음

디자인 프린시펄 규칙 카테고리에서 복잡성 규칙 깊이를 설정할 수 있습니다. 예를 들어, 규칙 "Avoid nesting more than 1 class(es)"를 "Avoid nesting more than 3 class(es)"로 설정할 수 있습니다. 규칙이 올바르게 작동하도록 하려면 깊이에 양수를 사용해야 합니다. 그러나 복잡성 규칙은 현재 깊이가 양수로 설정되는지 확인하지 않습니다. 이 문제를 예방하려면, 0이나 음수와 같은 유효하지 않은 숫자를 입력하지 마십시오.

1.8 매개변수에 US ASCII가 아닌 문자를 사용하여 규칙을 작성할 경우 인코딩 문제 발생

매개변수에 US ASCII가 아닌 문자를 사용하여 템플리트로부터 규칙을 작성할 경우 인코딩 문제가 발생합니다. 예를 들어, 로컬 문자를 사용하는 유형 또는 메소드를 선택할 경우에 이런 문제가 발생합니다. 이 인코딩 문제로 인해, 이러한 특성과 US ASCII가 아닌 문자를 사용하여 작성한 규칙을 실행할 경우 예외가 발생됩니다.

1.9 진행 상태가 구조 분석 규칙에 대해 적절하게 보고되지 않음

코드 검토 진행 상태가 구조 분석 규칙에 대해 적절하게 보고되지 않습니다(즉, 진행 대화 상자는 항상 100%의 진행률을 보고합니다). 코드 검토가 완료되기를 기다려야 합니다.

1.10 기본 보기에서 시작/중지 단추가 겹침

간혹 코드 검토를 시작할 때 시작/중지 단추가 서로 겹친 아이콘으로 표시됩니다.

1.11 "Avoid using java.lang.String.compareTo () to compare locale-sensitive strings" 규칙에 대한 빠른 수정에서 올바르지 않은 솔루션을 제안

"Avoid using java.langString.compareTo () to compare locale-sensitive strings" 규칙에 대한 빠른 수정에서 규칙의 대상이 되는 문제를 해결할 수 있는 두 가지 솔루션을 제안합니다. <Use com.ibm.icu.text.Collator 사용>을 제안하는 솔루션은 올바르지 않습니다. 솔루션은 <Use java.text.Collator>여야 합니다.

1.12 J2EE 템플리트 규칙(Always call [method A] after [method B])의 일부 인스턴스 생성에 문제가 있음

J2EE 규칙 템플리트 "Always call [methodA] after [methodB]"를 사용하여 새 규칙을 작성할 경우 작업공간에서 기본값으로 [methodB]가 생성자(constructor)이고 코드 검토 시 규칙이 실행되면, 규칙 발견 결과가 생성되지 않습니다.

1.13 J2EE 템플리트 규칙(Always call [methodA] after [methodB])에 문제 발생 가능성이 있음

"Always call [methodA] after [methodB]" J2EE 권장 학습(Best Practice) 템플리트 규칙으로 특정 오브젝트 인스턴스에 대해 새 규칙을 작성할 때, 규칙을 정의하는 그 다음의 특정 경우에서 올바르지 않은 규칙 발견 결과가 생성될 수 있습니다. "Always call [methodA] after [methodB]" 패턴에서 메소드를 선택할 경우(J2EE 코드에서, 메소드의 오브젝트 인스턴스가 분석된 Servlet의 라이프 사이클보다 큰 라이프 사이클을 가지고 있는 경우), 규칙 발견 결과가 올바르지 않은 것을 발견할 수도 있습니다. 예를 들어, 다음 코드를 고려해 보십시오.

public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {

// 일부 코드..... final ServletOutputStream outStream = response.getOutputStream(); //... 이후로 response.flushBuffer에 대한 호출이 없습니다. }

이 때 사용자가 작성하는 규칙은 "Always call ServletResponse.flushBuffer() after ServletResponse.getOutputStream()"입니다. 응답 오브젝트가 Servlet 자체보다 큰 라이프 사이클을 가지고 있는 인스턴스이므로 코드 검토 분석에서 문제가 발생할 수 있습니다. 현재 Servlet 문제점의 대상이 되는 다른 Servlet에서 일부 발견 결과를 볼 수도 있습니다. 그러한 특정 오브젝트 인스턴스에 대해 규칙을 작성하면 문제가 발생한다는 점에 유의하십시오.

1.14 사용자 정의된 Avoid Defining Method 규칙에서의 잘못된 positive

규칙 템플리트 "Avoid Defining Method"를 사용하여 새 규칙을 작성하고 완전한 이름을 사용하여 메소드를 선택할 경우, 메소드 및 매개변수의 이름만 코드 검토에서 사용됩니다. 규칙 템플리트의 초점은 메소드 서명에 있으므로, 패키지와 클래스 이름 정보는 의미가 없습니다.

1.15 메소드 이름 입력 시 메소드를 사용하는 템플리트가 작동하지 않음

제공한 규칙 템플리트에서 새 규칙을 작성할 경우, 메소드 이름을 입력하지 마십시오. 브라우저를 사용하여 메소드를 선택하십시오.

1.16 서버 데이터를 구성하려고 할 때 중요 오류 창이 표시됨

서버 데이터를 구성할 때 중요 오류 창이 표시될 경우, .java 파일 해당 페이지(페이지 코드)를 닫고 데이터 구성을 다시 시도하십시오.

기본 Readme 파일로 돌아가기