如何为@Nullable注释启用Android lint检查?

我注意到Android Studio将validation@Nullable是否未忽略@Nullable

恩。

 @Nullable MyObject getMyObject(); ... MyObject o = getMyObject(); o.method(); 

^ Method invocation 'method' may produce 'java.lang.NullPointerException'

这是由NullableProblems IntelliJ警告强制执行的。

我想通过lint规则在构建时从gradle强制执行此规则。 有没有人碰巧知道是否有可能通过gradle启用类似的东西?

如果有问题的检查是lint,那么有一种方法可以在build.gradle中配置build.gradle以强制构建失败,就像这里这个问题的答案一样

但是,您正在讨论的检查由Android Studio中的IDE本身提供。 目前没有办法停止这些检查的构建,因为IntelliJ开发人员的这个规范答案以下是IntelliJ提供的静态代码分析文档的链接 。 在文档中解释的分析中,具体名称是“常量条件和例外”:

此检查分析方法控制和数据流,以报告始终为真或假的可能条件,静态certificate其值为常量的expression式,以及可能导致违约性合同违规的情况。 标记为@Nullable或@NotNull的variables,方法参数和返回值被视为可空(或分别为非空),并在分析期间用于检查可空性合同,例如报告可能的NullPointerException错误。

我认为您可以做的最好的事情就是更改其严重性,使其显示为警告(IDE中的红色下划线)。 这样做,转到Preferences / Inspections / Probable Bugs并将“Constant conditions&exceptions”的严重性更改为警告:

Android Studio中Inspections的可能错误部分

如果您忽略警告,您的项目仍将构建,但它看起来不会很好:

调用时使用红色下划线获取@Nullable方法的结果

您必须对其进行设置,以便您的团队共享相同的Android Studio代码检查设置。 您可以使用设置存储库执行此操作 。

另请注意,您也可以启用“提交更改/执行代码分析”checkbox,这将在团队提交之前强制进行代码分析。

在Android Studio中提交更改对话框

单击“提交”时,它首先执行分析并find您一直在讨论的警告:

Android Studio中的代码分析对话框

另请注意,如果NPE在项目中出现问题, 强迫团队使用此类检查可能不是最佳选择。 相反,您可以尝试选择,例如公开讨论返回null生成的问题和可能的解决方案。 这篇关于在Google Guava wiki中避免null的优秀文章是一个很好的起点。

如果您希望lint在源代码中破坏某些规则时抛出错误,您肯定可以以源编译暂停的方式配置项目。 我本来可以编写整个过程,但这个链接或多或少总结了整个过程 – http://www.kiodev.com/android-studio-lint-options/

另请浏览Android链接文档 – https://developer.android.com/studio/write/lint.html

注意:Android Studio菜单中的Analyze选项主要使用Lint和内置的Intellij Idea Code inspection