mirai/mirai-console/tools/intellij-plugin
2022-04-24 10:37:10 +01:00
..
.images Move all files into mirai-console subfolder 2021-12-06 14:51:44 +00:00
libs Move all files into mirai-console subfolder 2021-12-06 14:51:44 +00:00
resources New Project Wizard for IDEA 221 (#1979) 2022-04-20 17:03:10 +01:00
run/projects Support serializersModule for PluginData, close #1796. Improve PluginData.value type inference behavior: resolve exact returned type. (#1987) 2022-04-24 10:37:10 +01:00
src Support serializersModule for PluginData, close #1796. Improve PluginData.value type inference behavior: resolve exact returned type. (#1987) 2022-04-24 10:37:10 +01:00
test New Project Wizard for IDEA 221 (#1979) 2022-04-20 17:03:10 +01:00
.gitignore Move all files into mirai-console subfolder 2021-12-06 14:51:44 +00:00
build.gradle.kts New Project Wizard for IDEA 221 (#1979) 2022-04-20 17:03:10 +01:00
gradle.properties idea: Correctly sort versions, fix compatibility issues with some intellij versions. 2022-02-07 16:20:55 +00:00
README.md Move all files into mirai-console subfolder 2021-12-06 14:51:44 +00:00

mirai-console-intellij

IntelliJ 平台的 Mirai 和 Mirai Console 开发辅助插件,支持 IntelliJ IDEA Community/UltimateAndroid Studio。

主要提供一些编辑中的错误诊断。

mirai-core 诊断

Message

UsingStringPlusMessageInspection

  • 检查并报错 String + Message 的使用

String + Message 实际上是 String + Message.toString()Message 会被转为 String 再与 String 相加。

    val str: String = ""
    val plain: PlainText = PlainText("")
    str + plain
//  ^^^
//  使用 String + Message 会导致 Message 被转换为 String 再相加 

提供修复 ConvertToPlainTextFix

// before
str + plain
// after
PlainText(str) + plain

mirai-console 诊断

Plugin

PluginMainServiceNotConfiguredInspection`PluginMainServiceNotConfiguredInspe

检查插件主类服务(即 META-INF/services)配置。在未正确配置时报错并提供自动修复 ConfigurePluginMainServiceFix:

object MyPluginMain : KotlinPlugin()
//     ^^^^^^^^^^^^
//     插件主类服务未配置

自动修复会在 META-INF/services 创建一个 net.mamoe.mirai.console.plugin.jvm.JvmPlugin 文件。

PluginDescription

  • ILLEGAL_PLUGIN_DESCRIPTION: 检查插件 ID, 名称等
  • ILLEGAL_VERSION_REQUIREMENT: 检查插件依赖版本号

PluginData

检查 PluginData.value 的泛型,

  • NOT_CONSTRUCTABLE_TYPE: 在该类型无法被反射构造时报错
  • UNSERIALIZABLE_TYPE: 在该类型无法被序列化时报错
  • READ_ONLY_VALUE_CANNOT_BE_VAR: 检查 ReadOnlyPluginData 中的 var 并提供修复

通常能被反射构造的类型需要有一个公开的所有参数都可选的构造器。在 Java 则需一个公开无参构造器。

Command

  • ILLEGAL_COMMAND_NAME: 检查指令名称
  • ILLEGAL_COMMAND_REGISTER_USE: 检查一些错误的 CommandManager.registerCommand 使用
  • RESTRICTED_CONSOLE_COMMAND_OWNER: 检查错误的 ConsoleCommandOwner 使用
  • ILLEGAL_COMMAND_DECLARATION_RECEIVER: 检查指令定义的接收者参数 (只允许 CommandSender 类型)

Permission

  • ILLEGAL_PERMISSION_NAME: 检查权限名称
  • ILLEGAL_PERMISSION_NAMESPACE: 检查权限命名空间
  • ILLEGAL_PERMISSION_REGISTER_USE: 检查一些错误的 CommandManager.registerCommand 使用