From 5c7f6ec574efe66d6044abbfccaf009dc11f2467 Mon Sep 17 00:00:00 2001 From: schalkms <30376729+schalkms@users.noreply.github.com> Date: Thu, 20 Oct 2022 22:26:32 +0200 Subject: [PATCH] Remove --print-ast CLI flag as PsiViewer provides the same features (#5418) --- .github/CONTRIBUTING.md | 6 +- .../gitlab/arturbosch/detekt/cli/CliArgs.kt | 7 --- .../gitlab/arturbosch/detekt/cli/CliRunner.kt | 2 - .../io/gitlab/arturbosch/detekt/cli/Main.kt | 2 - .../detekt/cli/runners/AstPrinter.kt | 25 --------- .../gitlab/arturbosch/detekt/cli/MainSpec.kt | 2 - .../detekt/cli/runners/AstPrinterSpec.kt | 56 ------------------- 7 files changed, 2 insertions(+), 98 deletions(-) delete mode 100644 detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/runners/AstPrinter.kt delete mode 100644 detekt-cli/src/test/kotlin/io/gitlab/arturbosch/detekt/cli/runners/AstPrinterSpec.kt diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 9220c80d393..bc258de7a10 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -25,10 +25,8 @@ When implementing a new rule, do not forget to perform the following steps: - Run `./gradlew generateDocumentation` to add your rule and its config options to the `default-detekt-config.yml`. - Run `./gradlew build`. This will execute tests locally. -The following remarks might help you during the implementation: -- To print the AST of sources, you can pass the `--print-ast` flag to the CLI. This will print each - Kotlin files AST. This can be helpful when implementing and debugging rules. -- To view the AST (PSI) of your source code, you can use the [PSI Viewer plugin](https://plugins.jetbrains.com/plugin/227-psiviewer) for IntelliJ. +To view the AST (PSI) of your source code, you can use the [PSI Viewer plugin](https://plugins.jetbrains.com/plugin/227-psiviewer) for IntelliJ. +This can be helpful when implementing and debugging rules. The general policy regarding contributed rules is as follows: - PRs will stay open for at least two days so that other users can give feedback. diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt index c2f8c02073f..3dbac38bac1 100644 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt +++ b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliArgs.kt @@ -149,13 +149,6 @@ class CliArgs { ) var runRule: String? = null - @Parameter( - names = ["--print-ast"], - description = "Prints the AST for given [input] file. Must be no directory.", - hidden = true - ) - var printAst: Boolean = false - /* The following @Parameters are used for type resolution. When additional parameters are required the names should mirror the names found in this file (e.g. "classpath", "language-version", "jvm-target"): diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliRunner.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliRunner.kt index 9f17fa60be6..3ea466745ef 100644 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliRunner.kt +++ b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/CliRunner.kt @@ -5,7 +5,6 @@ import io.github.detekt.tooling.api.DetektCli import io.github.detekt.tooling.api.UnexpectedError import io.github.detekt.tooling.internal.DefaultAnalysisResult import io.github.detekt.tooling.internal.EmptyContainer -import io.gitlab.arturbosch.detekt.cli.runners.AstPrinter import io.gitlab.arturbosch.detekt.cli.runners.ConfigExporter import io.gitlab.arturbosch.detekt.cli.runners.Runner import io.gitlab.arturbosch.detekt.cli.runners.VersionPrinter @@ -21,7 +20,6 @@ class CliRunner : DetektCli { val specialRunner = when { arguments.showVersion -> VersionPrinter(outputChannel) arguments.generateConfig -> ConfigExporter(arguments, outputChannel) - arguments.printAst -> AstPrinter(arguments, outputChannel) else -> null } diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt index 18d211adca9..9deb791870d 100644 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt +++ b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/Main.kt @@ -7,7 +7,6 @@ import io.github.detekt.tooling.api.MaxIssuesReached import io.github.detekt.tooling.api.UnexpectedError import io.github.detekt.tooling.api.exitCode import io.github.detekt.tooling.internal.NotApiButProbablyUsedByUsers -import io.gitlab.arturbosch.detekt.cli.runners.AstPrinter import io.gitlab.arturbosch.detekt.cli.runners.ConfigExporter import io.gitlab.arturbosch.detekt.cli.runners.Executable import io.gitlab.arturbosch.detekt.cli.runners.Runner @@ -55,7 +54,6 @@ fun buildRunner( return when { arguments.showVersion -> VersionPrinter(outputPrinter) arguments.generateConfig -> ConfigExporter(arguments, outputPrinter) - arguments.printAst -> AstPrinter(arguments, outputPrinter) else -> Runner(arguments, outputPrinter, errorPrinter) } } diff --git a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/runners/AstPrinter.kt b/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/runners/AstPrinter.kt deleted file mode 100644 index c53054a3edb..00000000000 --- a/detekt-cli/src/main/kotlin/io/gitlab/arturbosch/detekt/cli/runners/AstPrinter.kt +++ /dev/null @@ -1,25 +0,0 @@ -package io.gitlab.arturbosch.detekt.cli.runners - -import io.github.detekt.parser.KtCompiler -import io.gitlab.arturbosch.detekt.cli.CliArgs -import java.nio.file.Files - -class AstPrinter( - private val arguments: CliArgs, - private val outPrinter: Appendable -) : Executable { - - override fun execute() { - val optionalInput = arguments.inputPaths.singleOrNull() - val input = requireNotNull(optionalInput) { - "More than one input path specified. Printing AST is only supported for single files." - } - - require(Files.isRegularFile(input)) { - "Input path $input must be a kotlin file and not a directory." - } - - val ktFile = KtCompiler().compile(null, input) - outPrinter.appendLine(ElementPrinter.dump(ktFile)) - } -} diff --git a/detekt-cli/src/test/kotlin/io/gitlab/arturbosch/detekt/cli/MainSpec.kt b/detekt-cli/src/test/kotlin/io/gitlab/arturbosch/detekt/cli/MainSpec.kt index 3cd86067fc0..a393b8f3e53 100644 --- a/detekt-cli/src/test/kotlin/io/gitlab/arturbosch/detekt/cli/MainSpec.kt +++ b/detekt-cli/src/test/kotlin/io/gitlab/arturbosch/detekt/cli/MainSpec.kt @@ -5,7 +5,6 @@ package io.gitlab.arturbosch.detekt.cli import io.github.detekt.test.utils.NullPrintStream import io.github.detekt.test.utils.StringPrintStream import io.github.detekt.test.utils.resourceAsPath -import io.gitlab.arturbosch.detekt.cli.runners.AstPrinter import io.gitlab.arturbosch.detekt.cli.runners.ConfigExporter import io.gitlab.arturbosch.detekt.cli.runners.Runner import io.gitlab.arturbosch.detekt.cli.runners.VersionPrinter @@ -28,7 +27,6 @@ class MainSpec { return listOf( arguments(arrayOf("--generate-config"), ConfigExporter::class), arguments(arrayOf("--run-rule", "RuleSet:Rule"), Runner::class), - arguments(arrayOf("--print-ast"), AstPrinter::class), arguments(arrayOf("--version"), VersionPrinter::class), arguments(emptyArray(), Runner::class), ) diff --git a/detekt-cli/src/test/kotlin/io/gitlab/arturbosch/detekt/cli/runners/AstPrinterSpec.kt b/detekt-cli/src/test/kotlin/io/gitlab/arturbosch/detekt/cli/runners/AstPrinterSpec.kt deleted file mode 100644 index 748ea3a3ab1..00000000000 --- a/detekt-cli/src/test/kotlin/io/gitlab/arturbosch/detekt/cli/runners/AstPrinterSpec.kt +++ /dev/null @@ -1,56 +0,0 @@ -package io.gitlab.arturbosch.detekt.cli.runners - -import io.github.detekt.test.utils.NullPrintStream -import io.github.detekt.test.utils.resourceAsPath -import io.gitlab.arturbosch.detekt.cli.CliArgs -import org.assertj.core.api.Assertions.assertThat -import org.assertj.core.api.Assertions.assertThatIllegalArgumentException -import org.junit.jupiter.api.Nested -import org.junit.jupiter.api.Test -import java.io.ByteArrayOutputStream -import java.io.PrintStream - -class AstPrinterSpec { - - val path = resourceAsPath("cases").toString() - - @Nested - inner class `successful AST printing` { - - @Test - fun `should print the AST as string`() { - val output = ByteArrayOutputStream() - val args = CliArgs() - args.input = resourceAsPath("cases/Poko.kt").toString() - val printer = AstPrinter(args, PrintStream(output)) - - printer.execute() - - assertThat(output.toString()).isNotEmpty() - } - } - - @Test - fun `throws an exception when declaring multiple input files`() { - val multiplePaths = "$path,$path" - val args = CliArgs() - args.input = multiplePaths - val printer = AstPrinter(args, NullPrintStream()) - - assertThatIllegalArgumentException() - .isThrownBy { printer.execute() } - .withMessage("More than one input path specified. Printing AST is only supported for single files.") - } - - @Test - fun `throws an exception when trying to print the AST of a directory`() { - val args = CliArgs() - args.input = path - val printer = AstPrinter(args, NullPrintStream()) - - assertThatIllegalArgumentException() - .isThrownBy { printer.execute() } - .withMessageStartingWith("Input path ") - .withMessageEndingWith(" must be a kotlin file and not a directory.") - } -}