2012-11-14 3 views
5

Codenarc는 Groovy 코드에서 결함, 나쁜 관행, 불일치, 스타일 문제 등을 분석하는 프레임 워크입니다. MisorderedStaticImports Rule : 비 정적 수입 후되어서는 안 정적 import 문에 대한정적이 아닌 import가 아닌 정적 import 문

확인

이 규칙에 대한 이유가 있나요. 위반

예 :

import my.something.* 
import static foo.bar.* 

public class MyClass{} 

나는이 규칙에 대한 동기 나 의미를 이해하지 않습니다.

+5

약식입니다. 자바에 관한 한 그것은 무의미합니다. –

+2

IntelliJ의 형식 기는 기본적으로 일반 가져 오기 이후에 정적 가져 오기를 배치합니다. –

+1

@PeterLawrey 예 아이디어가 맞다.(예 : http://stackoverflow.com/questions/40440653/why-do-i-get-different-compilation-result-depending-on-import-sequence-order) –

답변

8

Marko Topolnik이 말했듯이 수입 순서는 프로그램의 의미와 관련이 없습니다.

나는 그 효과에 대한 명시적인 진술을 위해 JLS를 보았지만, 찾을 수 없었다. 자바 튜토리얼에서는 가져 오기 순서에 대해서 언급하지 않았다. 그러나 import의 의미는 차이가 없습니다. 가져 오기가 가져 오기 순서로 인해 잠재적 인 모호성을 초래하는 경우 JLS는 컴파일 오류라고합니다.

따라서 이것은 단순한 문체 규칙입니다.


UPDATE (당신이 규칙을 보면 사실, 그것도! 당신에게 먼저 정적 수입을 가하고있는 옵션을 제공합니다)

@Eugene Stepanenkov이 Q를 지적 &

O 버전 모호한 버그이었다

f Java 8 이전의 Oracle Java 컴파일러. (결국) 인정 및 수정되었습니다.

나는 이라는 버그가 일 수 있다는 것을 알았습니다. Codenarc 경고의 동기가되었습니다. 그러나 여기에 문제가 있습니다 : 버그로 인해 영향을받는 Java 컴파일러를 사용하는 경우 "잘못된"순서로 가져온 코드가 컴파일되지 않고 Codenarc 경고가 표시됩니다.

+0

[질문] (http://stackoverflow.com/questions/40440653/why-do-i-get-different-compilation-result-depending-on-import-sequence-order) –

+0

잡기. 나는 전에 그걸 보지 못했다. –

0

스타일 문제. 정적 인 수입은 단 하나, 두 개일 것이지만 함수 이름을 도입하는 것과 같은 이해 가능성에 큰 영향을 미칩니다. 따라서 상단에 배치하면 (독서) 좋은 스타일로 간주 될 수 있습니다. "[+]"지원 축소 IDE가 고려되었을 수도 있습니다.

저는 정적 가져 오기가 다른 것들과 분리되기를 원합니다.

0

수입 순서 (정적 및 비 정적)를 선택하면 example과 같은 가장자리 경우에 문제가 발생할 수 있습니다.

관련 문제