当前位置: 首页 > 知识库问答 >
问题:

如何避免静态编程语言中后期字段的部分覆盖

狄赞
2023-03-14

我有一个用Kotlin编写的Android服务,我用Guice注入它。它有不能为null的lateinit字段,但它们必须是lateinit,因为我不能使用构造函数注入。

这些线条周围的内容:

class VibrationService : Service() {
    @Inject
    private lateinit var pm: PowerManager
    private lateinit var wakeLock: WakeLock

    override fun onCreate() {
        AlarmApplication.guice().injectMembers(this)
        wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "VibrationService")
        wakeLock.acquire()
    }
}

现在,当我创建 JaCoCo 报告时,访问任何延迟字段的所有行都标记为部分覆盖。我认为 Kotlin 编译器对字节码进行了一些检查,以确保字段在被访问之前被初始化。

有什么方法可以禁用这些检查吗?我想要100%的保险:-)

共有1个答案

马峻
2023-03-14

使用新的kotlinx-kover Gradle插件,它与JaCoCo和IntelliJ兼容。< br >它解决了< code >内联函数的问题。希望它也能解决你的问题。

kotlin prettyprint-override">plugins {
     id("org.jetbrains.kotlinx.kover") version "0.5.0"
}

一旦应用,插件可以开箱即用,无需额外配置。

观看其YouTube发布视频,并从本期YouTube跟踪其路线图。

 类似资料:
  • 我是Kotlin开发的新手,我不知道如何处理这个问题。我将以下Kotlin数据类映射到MongoDB集合(Spring data MongoDB): 我想覆盖默认的 id 获取器并返回一个字符串而不是对象 Id。似乎“id”字段名称无法更改,因为我收到消息“不允许自定义id属性的字段名称!自定义名称不会被考虑!“,因此我无法使用始终建议的_id解决方案。 如何才能做到这一点?我错过了什么吗?

  • 在Kotlin中,我覆盖了这两个Google登录功能: 检查与谷歌的连接是否失败。 问题是,有时当我关闭包含用户帐户的对话框时,该对话框会在活动启动时弹出 像这样: 我得到了一个带有以下logcat的<code>IllegalArgumentException</code> E/AndroidRuntime:致命异常:主进程:com.dancam.subscriptions,PID:6346 Ja

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。

  • 当使用Java和JUnit 5时,我可以使用如下非静态字段注册扩展: 当我尝试使用Kotlin (1.4.10)时,我似乎无法让它工作。我试过举个例子: 但它失败了: 当我试着运行它的时候。 如果我尝试添加一个< code>@JvmField注释: 它失败,而是出现编译时错误: 我能做的是将它移动到一个同伴对象: 现在它可以工作了。但是我不能在伴随对象中声明,因为构造函数的输入()还不可用。我只是

  • 我正在尝试用Java编写下面用Kotlin编写的代码。我无法创建DefaultElementsAdapter,因为我无法获得正确的语法。 我无法获得正确的Java代码 Kotlin班是这样的 我正在尝试使用图书馆https://github.com/m7mdra/HtmlRecycler