我注意到Android Studio会验证代码中@Nullable
是否被忽略:
离。
@Nullable MyObject getMyObject();
...
MyObject o = getMyObject();
o.method();
^
Method invocation 'method' may produce 'java.lang.NullPointerException'
这是由NullableProblems
IntelliJ警告强制执行的。
我想通过lint规则在构建时从gradle强制执行此规则。有没有人碰巧知道是否可以通过gradle启用类似的东西?
答案 0 :(得分:9)
如果有问题的检查是lint,那么有一种方法可以在lintOptions
内配置build.gradle
,以强制构建失败,如this question here的答案
但是,您所讨论的检查是由Android Studio中的IDE本身提供的。根据{{3}},目前无法停止这些检查的构建。这是IntelliJ提供的静态代码分析的this canonical answer from a IntelliJ developer。在文档中解释的分析中,具体名称是" Constant conditions&例外":
此检查分析方法控制和数据流,以报告始终为真或假的可能条件,静态证明其值为常量的表达式,以及可能导致违约性合同违规的情况。 标记为@Nullable或@NotNull的变量,方法参数和返回值被视为可空(或分别为非空),并在分析期间用于检查可空性合同,例如,报告可能的NullPointerException错误。
我认为您可以做的最好的事情就是更改其严重性,使其显示为警告(IDE中的红色下划线)。这样做,转到首选项/检查/可能的错误,并改变"恒定条件&的严重性。例外"警告:
如果您忽略警告,您的项目仍将构建,但它看起来不太好看:
您必须对其进行设置,以便您的团队共享相同的Android Studio代码检查设置。您可以使用。
执行此操作另请注意,您也可以启用“提交更改/执行代码分析”复选框,这将在团队提交之前强制进行代码分析。
当您单击提交时,它会先执行分析并找到您一直在讨论的警告:
请注意,如果NPE在项目中出现问题,强制团队使用此类检查可能不是最佳选择。相反,您可以尝试选择公开讨论返回null
生成的问题和可能的解决方案。 Google Guava wiki中的是一个很好的起点。
答案 1 :(得分:1)
如果您希望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