You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中SonarLint规则kotlin:S1125是否为误报?

这属于SonarLint的误报

你的代码逻辑完全合理:Android 13(API 33,TIRAMISU)及以上版本要求POST_NOTIFICATION作为运行时权限,必须检查授权状态;而Android 12及以下版本不需要申请该权限,直接返回true是符合业务场景的。

SonarLint的kotlin:S1125规则在这里属于误判——它仅从语法层面识别到else分支返回了布尔字面量true,但没有理解这个返回值是对应特定Android版本的业务逻辑,并非无意义的冗余代码。

处理方案

你有两种选择:

  1. 保留原有代码,忽略误报
    通过添加// NOSONAR注释标记该代码,让SonarLint跳过对这一行的规则检查:

    fun hasNotificationPermission(context: Context): Boolean {
        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
            ContextCompat.checkSelfPermission(context, POST_NOTIFICATION) ==
                    PackageManager.PERMISSION_GRANTED
        else
            true // Android 12 and below has no runtime permission thus return true // NOSONAR
    }
    
  2. 调整代码写法,规避误报
    将条件合并为逻辑或表达式,既保留原逻辑,又让SonarLint识别到代码的合理性:

    fun hasNotificationPermission(context: Context): Boolean {
        return Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU || 
               ContextCompat.checkSelfPermission(context, POST_NOTIFICATION) == PackageManager.PERMISSION_GRANTED
    }
    

内容的提问来源于stack exchange,提问作者Bitwise DEVS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:46:15