Как реализовать динамическую проверку линтинга с помощью аннотации? - PullRequest
0 голосов
/ 28 августа 2018

В AndroidStudio мы могли бы просто использовать @IntegerRes для обозначения параметра Int, который должен быть ресурсом.

Если мы используем Int вместо Resource значения, он будет жаловаться динамически (пока мы кодируем, прежде чем мы скомпилируем)

Expected resource of type integer less... (⌘F1) 
Ensures that resource id's passed to APIs are of the right type; for example, calling Resources.getColor(R.string.name) is wrong.

Нажмите на @IntegerRes, чтобы увидеть код ниже.

/**
 * Denotes that an integer parameter, field or method return value is expected
 * to be an integer resource reference (e.g. {@code android.R.integer.config_shortAnimTime}).
 */
@Documented
@Retention(CLASS)
@Target({METHOD, PARAMETER, FIELD, LOCAL_VARIABLE})
public @interface IntegerRes {
}

Я хочу посмотреть, как эта аннотация обрабатывается динамически, чтобы я мог сделать свою аннотацию. Где я могу найти источник этого кода? (Я думал, что весь код Android с открытым исходным кодом)

1 Ответ

0 голосов
/ 28 августа 2018

Они с открытым исходным кодом: https://android.googlesource.com/platform/tools/base/+/master/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks

И есть много статей о том, как реализовать пользовательские проверки пуха. Как этот , который даже связывает репозиторий с дополнительными примерами .

Поскольку кажется, что вы не можете потратить время на использование ресурсов, которые я предоставил, здесь проверяются аннотации к параметрам, например, действительно ли аннотированный параметр @ColorInt получает действительный цвет:

https://android.googlesource.com/platform/tools/base/+/master/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/SupportAnnotationDetector.java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...