detekt IntelliJ 插件使用教程
1. 项目的目录结构及介绍
detekt IntelliJ 插件的目录结构如下:
detekt-intellij-plugin/
├── build.gradle.kts
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts
└── src
├── main
│ ├── kotlin
│ │ └── io
│ │ └── github
│ │ └── detekt
│ │ └── plugin
│ │ ├── DetektAnnotator.kt
│ │ ├── DetektAutoCorrectAction.kt
│ │ ├── DetektBundle.kt
│ │ ├── DetektConfigurationPanel.kt
│ │ ├── DetektInspection.kt
│ │ ├── DetektPlugin.kt
│ │ ├── DetektProjectComponent.kt
│ │ ├── DetektSettings.kt
│ │ ├── DetektStartupActivity.kt
│ │ ├── DetektToolWindow.kt
│ │ ├── DetektWrapper.kt
│ │ └── actions
│ │ ├── DetektAutoCorrectAction.kt
│ │ └── DetektRunAction.kt
│ └── resources
│ ├── META-INF
│ │ └── plugin.xml
│ └── icons
│ └── detekt.svg
└── test
└── kotlin
└── io
└── github
└── detekt
└── plugin
└── DetektPluginTest.kt
目录结构介绍
build.gradle.kts
: 项目的构建脚本。gradle
: 包含 Gradle 包装器的相关文件。settings.gradle.kts
: 项目的设置脚本。src/main/kotlin
: 包含插件的主要代码。DetektAnnotator.kt
: 用于代码注解的类。DetektAutoCorrectAction.kt
: 自动修正代码的类。DetektBundle.kt
: 资源文件的类。DetektConfigurationPanel.kt
: 配置面板的类。DetektInspection.kt
: 代码检查的类。DetektPlugin.kt
: 插件的主类。DetektProjectComponent.kt
: 项目组件的类。DetektSettings.kt
: 设置的类。DetektStartupActivity.kt
: 启动活动的类。DetektToolWindow.kt
: 工具窗口的类。DetektWrapper.kt
: 包装器的类。actions
: 包含动作相关的类。
src/main/resources
: 包含插件的资源文件。META-INF/plugin.xml
: 插件的描述文件。icons/detekt.svg
: 插件的图标文件。
src/test/kotlin
: 包含插件的测试代码。
2. 项目的启动文件介绍
项目的启动文件主要是 DetektPlugin.kt
,它是插件的主类,负责初始化和注册插件的各种组件。
package io.github.detekt.plugin
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.StartupActivity
import org.jetbrains.annotations.NotNull
class DetektPlugin : StartupActivity {
override fun runActivity(@NotNull project: Project) {
val settings = ServiceManager.getService(project, DetektSettings::class.java)
if (settings.isEnabled) {
DetektProjectComponent.getInstance(project).initComponent()
}
}
}
启动文件介绍
DetektPlugin.kt
: 实现了StartupActivity
接口,负责在项目启动时初始化插件。runActivity
方法:在项目启动时调用,初始化插件的各个组件。