refactor: explicit locked detekt config (#729)

Migrate detekt to a convention plugin in `buildSrc`, switch the project
to a fully explicit YAML config (`buildUponDefaultConfig = false`), fix
the real findings that this stricter setup revealed, and remove
`@Suppress` annotations that became unnecessary after the rule changes.

## Motivation and Context
- Explicit visibility into the rule set
- Lock against detekt version upgrades

## Breaking Changes
None

## Types of changes
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update

## Checklist
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
This commit is contained in:
Pavel Gorgulov 2026-04-29 12:31:49 +02:00 • committed by GitHub
commit 64804a05c2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 1106 additions and 507 deletions

View file

@ -16,7 +16,6 @@ import java.util.Optional
@ExtendWith(RetryExtension::class)
public annotation class Retry(val times: Int = 3, val delayMs: Long = 1000)
@Suppress("ForbiddenVoid") // needed for Java API interop
public class RetryExtension : InvocationInterceptor {
override fun interceptTestMethod(
invocation: Invocation<Void>,

View file

@ -18,7 +18,6 @@ public object TypeScriptRunner {
* @param logPrefix Prefix for log lines
* @return The started Process
*/
@Suppress("LongParameterList")
public fun run(
typescriptDir: File,
scriptPath: String,
@ -54,7 +53,6 @@ public object TypeScriptRunner {
* @param typescriptDir The directory containing package.json
* @throws RuntimeException if npm install fails
*/
@Suppress("ReturnCount")
public fun installDependencies(typescriptDir: File) {
require(typescriptDir.isDirectory()) { "Type script directory does not exist: ${typescriptDir.absolutePath}" }
println("Installing TypeScript dependencies in ${typescriptDir.absolutePath}")

View file

@ -14,7 +14,6 @@ import kotlin.time.Duration.Companion.seconds
*/
public fun killProcessOnPort(port: Int) {
val killCommand = if (isWindows) {
@Suppress("MaxLineLength")
listOf(
"cmd.exe",
"/c",