2014-11-14 1 views
0

Название подводит итог очень хорошо.make Gradle build fail в режиме деблокирования с кодом, который не учитывает аннотации @Intdef

Я использую аннотацию @Intdef для того, чтобы определить, какие константы можно использовать в качестве параметров или возвращаемых значений в некоторых методах, например, так:

@Retention(RetentionPolicy.SOURCE) 
@IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS}) 
public @interface NavigationMode {} 

public static final int NAVIGATION_MODE_STANDARD = 0; 
public static final int NAVIGATION_MODE_LIST = 1; 
public static final int NAVIGATION_MODE_TABS = 2; 

@NavigationMode 
public int getNavigationMode() { 
    return NAVIGATION_MODE_LIST; 
} 

public void setNavigationMode(@NavigationMode int mode) { 
    mNavigationMode = mode; 
} 

В качестве теста, я добавил этот призыв:

setNavigationMode(5); 

Android Студия показывает это как ошибку, которая является большим, но я также хотел бы сделать Gradle построить проверить это правило ворса для версии релиза (я не хочу, чтобы удлинить отладки строят пух проверка, хотя) ,

Итак, я добавил это к моему build.gradle:

Однако Gradle компилирует этот проект без обнаружения этой ошибки.
Я ничего не теряю?

ответ

3

С версией 1.3.0-beta1 плагина android gradle у нас теперь есть проверка Lint для аннотаций IntDef.

+0

я на версии 2.0 Gradle плагин, и это до сих пор не работает (?) lintOptions { abortOnError правда фатальным 'ResourceType' } –

2

В comment on this Google+ post Tor Norbye объясняет, что ResourceType чеки строятся поверх IntelliJ и не работают с линией в настоящее время. Это возможно в будущем.

+0

они делают теперь :-) – Teovald