Подтвердить что ты не робот

Как установить severityOverrides в lintOptions?

У меня есть проект Android, определяющий

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        // Android plugin for gradle
        // http://google.github.io/android-gradle-dsl
        classpath 'com.android.tools.build:gradle:1.5.0'

        // ...

В моем приложении я хочу установить

android {
    // ...

    lintOptions {
        // http://google.github.io/android-gradle-dsl/1.5/com.android.build.gradle.internal.dsl.LintOptions.html#com.android.build.gradle.internal.dsl.LintOptions:severityOverrides
        severityOverrides {
            ["MissingTranslation": "warning"]
        }

        // ...

но я получаю ошибку

Ошибка: (34, 0) Gradle Метод DSL не найден: 'severityOverrides()' Возможные причины: "android" проекта может использовать версию Gradle, которая не содержит метод.

Каков правильный способ установки severityOverrides?


Версии, которые компилировались, но не имеют желаемого эффекта на этапе сборки :app:lintVitalRelease:

import com.android.builder.model.LintOptions
// ...
severityOverrides ["MissingTranslation": LintOptions.SEVERITY_WARNING]

и

import com.android.builder.model.LintOptions
// ...
severityOverrides.MissingTranslation = LintOptions.SEVERITY_WARNING
4b9b3361

Ответ 1

Я хотел бы поделиться тем, что я делаю.

Вместо того, чтобы задавать значение severityOverrides, вы можете вызвать один метод для каждого типа флага, который вы хотите установить.

lintOptions {
    ignore "RtlEnabled", "RtlHardcoded", "RtlSymmetry" ....
    warning "RtlEnabled", "RtlHardcoded", "RtlSymmetry" ....
    error "RtlEnabled", "RtlHardcoded", "RtlSymmetry" ....
    fatal "RtlEnabled", "RtlHardcoded", "RtlSymmetry" ....
    informational "RtlEnabled", "RtlHardcoded", "RtlSymmetry" ....
}

В вашем случае вы можете:

lintOptions {
    warning "MissingTranslation"
}

Я не уверен, что вы можете вручную установить severityOverrides, поскольку это свойство только для чтения.

Итак, я думаю, вы действительно должны назвать один из вышеперечисленных методов (ошибка, фатальный и т.д.), чтобы переопределить свойство, которое вы хотите

Ответ 2

(Не ответ-ответ, но это то, что я использовал в качестве эквивалентной замены, когда я не мог заставить lintOptions.severityOverrides работать)

Отбросьте файл lint.xml с той же конфигурацией в корне модуля.

<?xml version="1.0" encoding="UTF-8" ?>
<lint>
    <issue id="MissingTranslation" severity="warning" />
</lint>

Вы также получаете более богатый API для настройки предупреждений lint через lint.xml.

Ответ 3

Map<String, Integer> severityOverrides

В документах, которые вы указали, указано, что тип для серьезности перенаправления должен быть Map<String, Integer>, когда вы используете две строки. Кроме того, severityOverrides не похоже на метод, а на свойство вместо этого, поэтому вы должны оставить фигурные скобки {} Что дает вам:

import com.android.builder.model.LintOptions
lintOptions {
    severityOverrides ["MissingTranslation": LintOptions.SEVERITY_WARNING]
}