kotlin代码_检查Kotlin代码的质量

kotlin代码

上周,由于Kyiv Kotlin UG,我读了一篇有关Kotlin代码分析的文章。 我偶然发现了许多类似的帖子:它们展示了如何侵入构建版本以生成显示质量问题的文本报告。

冒张扬的风险,我声称这不是适当的软件工程。 这是一次黑客攻击:从长远来看,它没有任何价值。 代码质量是一个严肃的主题,应予以相应对待。 首先,需要对其进行评估,然后必须在项目的整个生命周期中对问题进行存储和比较。 好消息是实现这一目标的工具已经可用,我希望它是每个人构建管道的一部分: SonarQube

德泰

Detekt为Kotlin提供静态代码分析。

之前,我曾尝试启动一项为Kotlin开发SonarQube插件的计划。 它没有流行-并有其他兴趣可以追求。 很好,Detekt做得更好。

在Detekt的Github页面上,功能包括:

  • 您的Kotlin项目的代码气味分析
  • 基于逻辑代码行,McCabe复杂度和代码气味量的复杂度报告
  • 高度可配置(规则集或规则级别)
  • 用Kotlin的`@Suppress和Java的@SuppressWarnings注释抑制发现
  • 指定代码气味阈值以破坏构建或打印警告
  • 对基线进行气味编码并忽略旧项目的列表
  • 可通过自己的规则集和FileProcessListener的扩展

除此之外,它还提供了一个插件以集成到SonarQube中,从而从以后的存储和比较功能中受益。

建立

SonarQube使安装新插件变得容易:嵌入式Marketplace功能列出了所有可用的已发布插件。 只需检查您想要的,就可以完成!

不幸的是,Detekt尚未进入市场。

有一个未解决的问题。 如果您想了解其进度,请订阅。

因此,设置插件是一个手动过程:

  1. 克隆Github仓库
    git clone https://github.com/arturbosch/sonar-kotlin
  2. 编译插件
    mvn package
  3. 将JAR复制到SonarQube插件文件夹( $SONAR_HOME/extensions/plugins

运行检查

像往常一样,运行检查只是标准命令行的问题:

mvn sonar:sonar

我对Kaadin项目进行了分析:

Kaadin代码分析结果

当然,这是带有默认规则的原始分析。 但是,这已经很有意义了。

结论

在JVM生态系统中,许多工具已经可用-是免费的。 我所知道的大多数(如果不是全部)Java项目从很久以前就建立了构建管道:它们签出代码,对其进行编译,运行测试,执行质量检查等。为什么应该通过切换到Kotlin来丢弃那些管道? 通过仅提供缺少的组件,Detekt使得重用一个人的持续集成构建链变得容易。

翻译自: https://blog.frankel.ch/check-quality-kotlin-code/

kotlin代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Kotlin 代码示例,用于检测 WiFi 连接状态的更改: ```kotlin import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.net.NetworkInfo import android.net.NetworkRequest import android.net.wifi.WifiInfo import android.net.wifi.WifiManager import android.os.Build import android.util.Log class WifiStateReceiver : BroadcastReceiver() { private var wifiManager: WifiManager? = null private var connectivityManager: ConnectivityManager? = null private var networkCallback: ConnectivityManager.NetworkCallback? = null override fun onReceive(context: Context, intent: Intent) { wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager if (wifiManager?.isWifiEnabled == true) { Log.d(TAG, "WiFi is enabled.") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { networkCallback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: android.net.Network) { super.onAvailable(network) Log.d(TAG, "WiFi is connected.") } override fun onLost(network: android.net.Network) { super.onLost(network) Log.d(TAG, "WiFi is disconnected.") } } val builder = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) connectivityManager?.registerNetworkCallback(builder.build(), networkCallback!!) } else { context.registerReceiver(this, IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION)) } } else { Log.d(TAG, "WiFi is disabled.") } } companion object { private const val TAG = "WifiStateReceiver" } } ``` 在 `onReceive()` 方法中,我们检查 WiFi 是否已启用。如果是,则根据设备的 Android 版本注册网络回调或广播接收器以监听网络状态更改。 如果 Android 版本大于或等于 N,我们将创建一个 `NetworkRequest` 并将其传递给 `registerNetworkCallback()` 方法以注册网络回调。在回调中,我们将检查网络是否可用,并相应地记录连接或断开连接的状态。 如果 Android 版本低于 N,则我们将注册一个广播接收器以侦听 `WifiManager.NETWORK_STATE_CHANGED_ACTION` 意图。在接收器中,我们将检查网络信息是否可用,并相应地记录连接或断开连接的状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值