내가 javac
의 코드 제거 기능에 대한 정보를 찾는 힘든 시간을 보내고 있습니다 :javac의 코드 제거 기능
난 당신이 다음과 같이있는 경우 if
-statement이 제거됩니다 읽기 :
static final boolean DEBUG = false;
if (DEBUG) System.out.println("Hello World!"); // will be removed
하지만 어떻게 이것에 대해, 예를 들어 :
static final int VALUE = 3;
if (VALUE > 9) System.out.println("VALUE > 9 ???"); // will this be removed?
또는 생 S :
static final SomeEnum VALUE = SomeEnum.FOO;
if (VALUE==SomeEnum.BAR) System.out.println("Bar???"); // will this be removed?
이 (중단 문제에 아마 유사) 모든 죽은 코드를 찾을 수있는 프로그램을 분석하는 것은 매우/어려운 불가능하기 때문에, 나는 처음과 같은 몇 잘 정의 된 구조 (이 있다는 것을 상상 위의 예) javac
은 확실하게 인식하고 제거합니다. 이러한 구조의 포괄적 인 목록이 있습니까?
잘 보셨습니까? 'javap -c'로하면 꽤 명확해질 것입니다 ... –
@JonSkeet 나는이 구조체의리스트를 찾기를 희망하고 있기 때문에 나는 아직하지 않았습니다. 그래서 하나씩 차례로 시도 할 필요가 없습니다. 또한, 아마도 모든 가능성을 생각해 낼 수는 없을 것입니다 ... 그러나 위의 두 가지 예를 들어 보면 물론, 당신이 옳을 것입니다 ... –
기록을 위해 처음 두 개는 제거됩니다. 세 번째 것은 아닙니다. – assylias