如何在lintOptions中设置severityOverrides?

时间:2016-02-12 10:28:40

标签: android gradle android-gradle

我有一个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

4 个答案:

答案 0 :(得分:13)

我想分享我正在做的事情。

您可以为要设置的每种类型的标志调用一个方法,而不是设置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,因为它是一个只读属性。

所以,我认为你真的必须调用上面的方法之一(错误,致命等......)来覆盖你想要的属性

答案 1 :(得分:3)

(不是答案答案,但是当我无法让lintOptions.severityOverrides工作时,这就是我用作等效替代品的方式)

在模块的根目录中删除具有相同配置的lint.xml文件。

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

您还可以通过lint.xml获得更丰富的API来调整lint警告。

答案 2 :(得分:2)

  

Map<String, Integer> severityOverrides

您链接的文档表示severityOverrides的类型应为Map<String, Integer>,因为您使用了两个字符串。此外,severityOverrides似乎不是一个方法,而是一个属性,所以你应该省略大括号{},它给你:

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

答案 3 :(得分:0)

按照以下说明尝试

lintOptions {
    severityOverrides
    ["HardcodedText": LintOptions.SEVERITY_ERROR
     , 'SetTextI18n': LintOptions.SEVERITY_ERROR]

    checkReleaseBuilds true
    abortOnError true
    check 'HardcodedText', 'SetTextI18n'

}