两个 IDEA 项目之间的不同检查行为

Different inspection behavior between two IDEA projects

我几天前在 IDEA 2016.3.3 中创建的项目中出现了一个奇怪的检查问题,当我遇到这个问题时升级到 2016.3.5。即使在使缓存失效并重新启动后,问题仍然存在于旧项目中。我无法在 2016.3.5 创建的新项目中重现它。

两个项目具有相同的 minSdkVersiontargetSdkVersioncompileSdkVersionbuildToolsVersion还有什么可能导致检查行为出现这种差异?

我在两个项目中创建了相同的 class:

public class PermissionWeirdness {    
    public void foo() {
        bar();
        baz();
    }

    @RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION)
    private void bar() {}

    @RequiresPermission(Manifest.permission.GET_ACCOUNTS)
    private void baz() {}
}

真实项目与我在示例项目中重现问题的尝试之间的区别在于清单。 危险权限的检查行为会发生变化,但仅当它们在清单中列出时才会发生变化。警告消息发生变化,@RequiresPermission 不再级联。

我最初认为这是 Android Studio bug 177281, but that issue was more general. Not cascading for dangerous permissions may have been intentional, but I've reported it as a bug because 如果用户从 运行 应用程序撤消权限的回归。