From 90beb06d4dc28187c26f03b8bd1993b2b9ddd1bc Mon Sep 17 00:00:00 2001 From: Vfrolov Date: Thu, 1 Apr 2021 11:41:13 +0300 Subject: [PATCH 01/27] Update ktlint.version from 0.39.0 to 0.41.0 ### What's done: * Updates ktlint.version from 0.39.0 to 0.41.0 --- .../diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt | 4 ++-- .../org/cqfn/diktat/plugin/gradle/DiktatGradlePlugin.kt | 4 ++++ .../org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt | 3 ++- .../org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt | 2 +- .../org/cqfn/diktat/ruleset/rules/chapter3/EmptyBlock.kt | 4 ---- .../main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt | 1 + pom.xml | 2 +- 7 files changed, 11 insertions(+), 9 deletions(-) diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index 05d20ee902..d571c31b43 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -4,7 +4,6 @@ import org.cqfn.diktat.plugin.gradle.DiktatGradlePlugin.Companion.DIKTAT_CHECK_T import org.gradle.buildinit.plugins.internal.modifiers.BuildInitDsl import org.gradle.internal.impldep.org.junit.rules.TemporaryFolder import org.gradle.testkit.runner.TaskOutcome -import org.jetbrains.kotlin.com.intellij.util.ObjectUtils.assertNotNull import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach @@ -56,7 +55,8 @@ class DiktatGradlePluginFunctionalTest { val diktatCheckBuildResult = result.task(":$DIKTAT_CHECK_TASK") requireNotNull(diktatCheckBuildResult) Assertions.assertEquals(TaskOutcome.FAILED, diktatCheckBuildResult.outcome) - val file = assertNotNull(testProjectDir.root.walkTopDown().filter { it.name == "test.txt" }.first()) + val file = testProjectDir.root.walkTopDown().filter { it.name == "test.txt" }.first() + Assertions.assertNotNull(file) Assertions.assertTrue( file.readLines().any { it.contains("[FILE_NAME_MATCH_CLASS]") } ) diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePlugin.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePlugin.kt index 8223efec9d..a914ac9ccc 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePlugin.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePlugin.kt @@ -5,6 +5,7 @@ import generated.KTLINT_VERSION import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.artifacts.ExternalModuleDependency +import org.gradle.api.attributes.Bundling /** * Plugin that configures diktat and registers tasks to run diktat @@ -35,6 +36,9 @@ class DiktatGradlePlugin : Plugin { "module" to "ktlint-ruleset-standard" ) ) + attributes { + it.attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling::class.java, Bundling.EXTERNAL)) + } })) configuration.dependencies.add(project.dependencies.create("org.cqfn.diktat:diktat-rules:$DIKTAT_VERSION")) } diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt index ac809fff15..200bd12bc2 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt @@ -157,7 +157,8 @@ open class DiktatJavaExecTaskBase @Inject constructor( pattern.relativeTo(project.projectDir) } else { pattern - }.path + } + .invariantSeparatorsPath add((if (negate) "!" else "") + path) } diff --git a/diktat-gradle-plugin/src/test/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt b/diktat-gradle-plugin/src/test/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt index fa1c8a2840..559b272965 100644 --- a/diktat-gradle-plugin/src/test/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt +++ b/diktat-gradle-plugin/src/test/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt @@ -197,7 +197,7 @@ class DiktatJavaExecTaskTest { project.file("diktat-analysis.yml").createNewFile() } - private fun combinePathParts(vararg parts: String) = parts.joinToString(File.separator) + private fun combinePathParts(vararg parts: String) = parts.joinToString("/") companion object { private const val DIKTAT_CHECK_TASK = "diktatCheck" diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter3/EmptyBlock.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter3/EmptyBlock.kt index 8a1dd69960..19f4973aa5 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter3/EmptyBlock.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter3/EmptyBlock.kt @@ -9,14 +9,10 @@ import org.cqfn.diktat.ruleset.utils.* import com.pinterest.ktlint.core.ast.ElementType import com.pinterest.ktlint.core.ast.ElementType.CALL_EXPRESSION -import com.pinterest.ktlint.core.ast.ElementType.DOT_QUALIFIED_EXPRESSION -import com.pinterest.ktlint.core.ast.ElementType.FILE import com.pinterest.ktlint.core.ast.ElementType.FUNCTION_LITERAL import com.pinterest.ktlint.core.ast.ElementType.IDENTIFIER import com.pinterest.ktlint.core.ast.ElementType.LAMBDA_EXPRESSION -import com.pinterest.ktlint.core.ast.ElementType.LPAR import com.pinterest.ktlint.core.ast.ElementType.RBRACE -import com.pinterest.ktlint.core.ast.ElementType.VALUE_ARGUMENT import com.pinterest.ktlint.core.ast.ElementType.VALUE_ARGUMENT_LIST import com.pinterest.ktlint.core.ast.ElementType.VALUE_PARAMETER import com.pinterest.ktlint.core.ast.ElementType.WHITE_SPACE diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt index abeb23661b..dc41d95c89 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt @@ -27,6 +27,7 @@ import sun.reflect.ReflectionFactory /** * A class that wraps kotlin compiler's code parser and converts source code into AST */ +@Suppress("EMPTY_BLOCK_STRUCTURE_ERROR") class KotlinParser { private val project: Project by lazy { val compilerConfiguration = CompilerConfiguration() diff --git a/pom.xml b/pom.xml index 86ef0ee257..1f76afe143 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 1.4.31 true 1.1.0 - 0.39.0 + 0.41.0 5.7.1 30.1.1-jre 1.7.30 From 5b70a0f03848ebb44d6145ed79d57597cbfb8abf Mon Sep 17 00:00:00 2001 From: Cheshiriks Date: Sun, 4 Apr 2021 17:09:41 +0300 Subject: [PATCH 02/27] Update ktlint.version from 0.39.0 to 0.41.0 ### What's done: * Updates ktlint.version from 0.39.0 to 0.41.0 --- README.md | 2 ++ .../diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt | 2 +- .../main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6cdd05fe59..a2507aaf51 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,8 @@ To run diktat in **only-check** mode use command `$ mvn diktat:check@diktat`. To run diktat in **autocorrect** mode use command `$ mvn diktat:fix@diktat`. ## Run with Gradle using diktat-gradle-plugin +Requires a gradle version no lower than 5.3. + This plugin is available since version 0.1.5. You can see how the plugin is configured in our examples: [build.gradle.kts](examples/gradle-kotlin-dsl/build.gradle.kts). Add this plugin to your `build.gradle.kts`: ```kotlin diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index d571c31b43..df47bfea81 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -169,7 +169,7 @@ class DiktatGradlePluginFunctionalTest { @Test fun `should execute diktatCheck with gradle older than 6_4`() { val result = runDiktat(testProjectDir, shouldSucceed = false, arguments = listOf("--info")) { - withGradleVersion("5.0") + withGradleVersion("5.3") } val diktatCheckBuildResult = result.task(":$DIKTAT_CHECK_TASK") diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt index dc41d95c89..abeb23661b 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt @@ -27,7 +27,6 @@ import sun.reflect.ReflectionFactory /** * A class that wraps kotlin compiler's code parser and converts source code into AST */ -@Suppress("EMPTY_BLOCK_STRUCTURE_ERROR") class KotlinParser { private val project: Project by lazy { val compilerConfiguration = CompilerConfiguration() From a84726971e4b3226611696ecab735612f04144ab Mon Sep 17 00:00:00 2001 From: Vfrolov Date: Tue, 6 Apr 2021 12:39:04 +0300 Subject: [PATCH 03/27] Update ktlint.version from 0.39.0 to 0.41.0 ### What's done: * Updates ktlint.version from 0.39.0 to 0.41.0 --- .../org/cqfn/diktat/test/ConfigReaderTest.kt | 1 + .../gradle/DiktatGradlePluginFunctionalTest.kt | 15 ++++++++++++++- .../plugin/gradle/DiktatJavaExecTaskBase.kt | 5 ++++- .../cqfn/diktat/ruleset/generation/Generation.kt | 6 +++++- .../cqfn/diktat/ruleset/smoke/DiktatSmokeTest.kt | 5 ++++- .../ruleset/smoke/RulesConfigValidationTest.kt | 5 ++++- pom.xml | 5 +++++ 7 files changed, 37 insertions(+), 5 deletions(-) diff --git a/diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt b/diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt index 8d3287aa42..43d02d390e 100644 --- a/diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt +++ b/diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt @@ -7,6 +7,7 @@ import org.cqfn.diktat.common.config.rules.getCommonConfiguration import org.cqfn.diktat.common.config.rules.kotlinVersion import org.junit.jupiter.api.Test +@Suppress("MISSING_KDOC_TOP_LEVEL", "MISSING_KDOC_CLASS_ELEMENTS") class ConfigReaderTest { @Test fun `testing json reading`() { diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index df47bfea81..91e39f4064 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -7,7 +7,10 @@ import org.gradle.testkit.runner.TaskOutcome import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test +import org.junit.jupiter.api.condition.DisabledOnOs +import org.junit.jupiter.api.condition.OS import java.io.File class DiktatGradlePluginFunctionalTest { @@ -28,6 +31,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @Disabled fun `should execute diktatCheck on default values`() { val result = runDiktat(testProjectDir, shouldSucceed = false) @@ -40,6 +44,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @Disabled fun `should have json reporter files`() { buildFile.appendText( """${System.lineSeparator()} @@ -63,6 +68,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @Disabled fun `should execute diktatCheck with explicit inputs`() { buildFile.appendText( """${System.lineSeparator()} @@ -82,6 +88,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @Disabled fun `should execute diktatCheck with excludes`() { buildFile.appendText( """${System.lineSeparator()} @@ -99,6 +106,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @Disabled fun `should not run diktat with ktlint's default includes when no files match include patterns`() { buildFile.appendText( """${System.lineSeparator()} @@ -122,6 +130,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @Disabled fun `should not run diktat with ktlint's default includes when no files match include patterns - 2`() { buildFile.appendText( """${System.lineSeparator()} @@ -144,6 +153,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @DisabledOnOs(OS.WINDOWS) fun `should execute diktatCheck with absolute paths`() { val path = testProjectDir.root .resolve("src/**/*.kt") @@ -153,10 +163,11 @@ class DiktatGradlePluginFunctionalTest { """${System.lineSeparator()} diktat { inputs = files("$path") + debug = true } """.trimIndent() ) - val result = runDiktat(testProjectDir, shouldSucceed = false) + val result = runDiktat(testProjectDir, shouldSucceed = false, arguments = listOf("--info")) val diktatCheckBuildResult = result.task(":$DIKTAT_CHECK_TASK") requireNotNull(diktatCheckBuildResult) @@ -167,6 +178,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @Disabled fun `should execute diktatCheck with gradle older than 6_4`() { val result = runDiktat(testProjectDir, shouldSucceed = false, arguments = listOf("--info")) { withGradleVersion("5.3") @@ -181,6 +193,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @Disabled fun `should respect ignoreFailures setting`() { buildFile.appendText( """${System.lineSeparator()} diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt index 200bd12bc2..0c9284867f 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt @@ -153,12 +153,15 @@ open class DiktatJavaExecTaskBase @Inject constructor( GradleVersion.version(gradleVersionString) >= GradleVersion.version("6.4") private fun MutableList.addPattern(pattern: File, negate: Boolean = false) { + log.info("pattern - pattern - pattern: $pattern") val path = if (pattern.isAbsolute) { - pattern.relativeTo(project.projectDir) + pattern.relativeTo(project.projectDir).normalize() } else { pattern } .invariantSeparatorsPath + log.info("path - path - path: $path") + log.info("projectDir - projectDir - projectDir: ${project.projectDir}") add((if (negate) "!" else "") + path) } diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/generation/Generation.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/generation/Generation.kt index 65a54a33e5..62282fb6c9 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/generation/Generation.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/generation/Generation.kt @@ -16,6 +16,9 @@ import com.squareup.kotlinpoet.TypeSpec import java.io.File +import kotlin.io.path.ExperimentalPathApi +import kotlin.io.path.createTempFile + /** * The comment that will be added to the generated sources file. */ @@ -56,13 +59,14 @@ private fun generateWarningNames() { kotlinFile.writeTo(File("diktat-rules/src/main/kotlin")) // fixme: need to add it to pom } +@OptIn(ExperimentalPathApi::class) private fun validateYear() { val files = File("diktat-rules/src/test/resources/test/paragraph2/header") files .listFiles() .filterNot { it.name.contains("CopyrightDifferentYearTest.kt") } .forEach { file -> - val tempFile = createTempFile() + val tempFile = createTempFile().toFile() tempFile.printWriter().use { writer -> file.forEachLine { line -> writer.println(when { diff --git a/diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/DiktatSmokeTest.kt b/diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/DiktatSmokeTest.kt index 1bd5a84e29..ab8f5be7ed 100644 --- a/diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/DiktatSmokeTest.kt +++ b/diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/DiktatSmokeTest.kt @@ -28,6 +28,8 @@ import org.junit.jupiter.api.Test import java.time.LocalDate +import kotlin.io.path.ExperimentalPathApi +import kotlin.io.path.createTempFile import kotlinx.serialization.encodeToString typealias ruleToConfig = Map> @@ -37,6 +39,7 @@ typealias ruleToConfig = Map> * Note: ktlint uses initial text from a file to calculate line and column from offset. Because of that line/col of unfixed errors * may change after some changes to text or other rules. */ +@OptIn(ExperimentalPathApi::class) class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin", { DiktatRuleSetProvider(configFilePath) }, { lintError, _ -> unfixedLintErrors.add(lintError) }, @@ -59,7 +62,7 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin", rulesConfig.add(RulesConfig(warning, enabled = true, configuration = configuration)) } } - createTempFile() + createTempFile().toFile() .also { configFilePath = it.absolutePath } diff --git a/diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/RulesConfigValidationTest.kt b/diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/RulesConfigValidationTest.kt index 39ec8c226b..e5de33f855 100644 --- a/diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/RulesConfigValidationTest.kt +++ b/diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/RulesConfigValidationTest.kt @@ -12,13 +12,16 @@ import org.junit.jupiter.api.assertThrows import java.io.File import java.lang.IllegalArgumentException +import kotlin.io.path.ExperimentalPathApi +import kotlin.io.path.createTempFile +@OptIn(ExperimentalPathApi::class) class RulesConfigValidationTest { private lateinit var file: File @BeforeEach fun setUp() { - file = createTempFile() + file = createTempFile().toFile() } @AfterEach diff --git a/pom.xml b/pom.xml index 5b11fe6191..39861e2d7c 100644 --- a/pom.xml +++ b/pom.xml @@ -81,6 +81,11 @@ kotlinpoet ${kotlinpoet.version} + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + org.jetbrains.kotlin kotlin-stdlib-jdk8 From e0ce704985e5791b7885009ba8514ce5e5d90ebc Mon Sep 17 00:00:00 2001 From: Vfrolov Date: Wed, 7 Apr 2021 18:46:41 +0300 Subject: [PATCH 04/27] Update ktlint.version from 0.39.0 to 0.41.0 ### What's done: * Updates ktlint.version from 0.39.0 to 0.41.0 --- .../org/cqfn/diktat/test/ConfigReaderTest.kt | 1 - .../rules/chapter2/kdoc/KdocMethods.kt | 27 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt b/diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt index 43d02d390e..8d3287aa42 100644 --- a/diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt +++ b/diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt @@ -7,7 +7,6 @@ import org.cqfn.diktat.common.config.rules.getCommonConfiguration import org.cqfn.diktat.common.config.rules.kotlinVersion import org.junit.jupiter.api.Test -@Suppress("MISSING_KDOC_TOP_LEVEL", "MISSING_KDOC_CLASS_ELEMENTS") class ConfigReaderTest { @Test fun `testing json reading`() { diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter2/kdoc/KdocMethods.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter2/kdoc/KdocMethods.kt index fda5c905e0..3ed2cfead7 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter2/kdoc/KdocMethods.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter2/kdoc/KdocMethods.kt @@ -56,6 +56,13 @@ import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag import org.jetbrains.kotlin.psi.KtThrowExpression import org.jetbrains.kotlin.psi.psiUtil.referenceExpression +import java.nio.file.FileSystems +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.PathMatcher +import java.nio.file.Paths +import java.util.stream.Collectors +import java.io.IOException /** * This rule checks that whenever the method has arguments, return value, can throw exceptions, @@ -78,7 +85,13 @@ class KdocMethods(configRules: List) : DiktatRule( override fun logic(node: ASTNode) { if (node.elementType == FUN && node.getFirstChildWithType(MODIFIER_LIST).isAccessibleOutside() && !node.isOverridden()) { val config = configRules.getCommonConfiguration() - val filePath = node.getRootNode().getFilePath() + val path = node.getRootNode().getFilePath() + + val dir = Paths.get(path).toAbsolutePath().toString().substringBeforeLast('\\') + val matcher: PathMatcher = FileSystems.getDefault().getPathMatcher("glob:.*$path") + val pathList: List = find(dir, matcher) + val filePath = if (pathList.size == 1) pathList[0].toString() else "" + val isTestMethod = node.hasTestAnnotation() || isLocatedInTest(filePath.splitPathToDirs(), config.testAnchors) if (!isTestMethod && !node.isStandardMethod() && !node.isSingleLineGetterOrSetter()) { checkSignatureDescription(node) @@ -88,6 +101,18 @@ class KdocMethods(configRules: List) : DiktatRule( } } + private fun find(searchDirectory: String, matcher: PathMatcher): List { + try { + Files.walk(Paths.get(searchDirectory)).use { files -> + return files + .filter { path -> matcher.matches(path) } + .collect(Collectors.toList()) + } + } catch (e: IOException) { + return listOf() + } + } + @Suppress("UnsafeCallOnNullableType", "AVOID_NULL_CHECKS") private fun checkSignatureDescription(node: ASTNode) { val kdoc = node.getFirstChildWithType(KDOC) From d5f7f9acbc5b5941a801a20fb75c592a96da8036 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Wed, 4 Aug 2021 18:08:20 +0300 Subject: [PATCH 05/27] Update ktlint to 0.42.0 ### What's done: * Update ktlint version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8de204669a..4213d8fcba 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 1.5.21 true 1.2.2 - 0.41.0 + 0.42.0 5.7.2 30.1.1-jre 1.7.31 From f83cda5089b21559eb84c1bb8ff824d52e620225 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Wed, 4 Aug 2021 19:49:30 +0300 Subject: [PATCH 06/27] Update DiktatJavaExecTaskBase.kt --- .../org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt index 01e012c7ee..1c3ba6fa55 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt @@ -155,15 +155,12 @@ open class DiktatJavaExecTaskBase @Inject constructor( GradleVersion.version(gradleVersionString) >= GradleVersion.version("6.4") private fun MutableList.addPattern(pattern: File, negate: Boolean = false) { - log.info("pattern - pattern - pattern: $pattern") val path = if (pattern.isAbsolute) { pattern.relativeTo(project.projectDir).normalize() } else { pattern } .invariantSeparatorsPath - log.info("path - path - path: $path") - log.info("projectDir - projectDir - projectDir: ${project.projectDir}") add((if (negate) "!" else "") + path) } From a8b69edae344857f59072fb84128af51b92e9f7a Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Wed, 4 Aug 2021 20:02:08 +0300 Subject: [PATCH 07/27] Update DiktatGradlePluginFunctionalTest.kt --- .../plugin/gradle/DiktatGradlePluginFunctionalTest.kt | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index 91e39f4064..4b252882c2 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -7,7 +7,6 @@ import org.gradle.testkit.runner.TaskOutcome import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test import org.junit.jupiter.api.condition.DisabledOnOs import org.junit.jupiter.api.condition.OS @@ -31,7 +30,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @Disabled fun `should execute diktatCheck on default values`() { val result = runDiktat(testProjectDir, shouldSucceed = false) @@ -44,7 +42,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @Disabled fun `should have json reporter files`() { buildFile.appendText( """${System.lineSeparator()} @@ -68,7 +65,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @Disabled fun `should execute diktatCheck with explicit inputs`() { buildFile.appendText( """${System.lineSeparator()} @@ -88,7 +84,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @Disabled fun `should execute diktatCheck with excludes`() { buildFile.appendText( """${System.lineSeparator()} @@ -106,7 +101,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @Disabled fun `should not run diktat with ktlint's default includes when no files match include patterns`() { buildFile.appendText( """${System.lineSeparator()} @@ -130,7 +124,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @Disabled fun `should not run diktat with ktlint's default includes when no files match include patterns - 2`() { buildFile.appendText( """${System.lineSeparator()} @@ -153,7 +146,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @DisabledOnOs(OS.WINDOWS) fun `should execute diktatCheck with absolute paths`() { val path = testProjectDir.root .resolve("src/**/*.kt") @@ -178,7 +170,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @Disabled fun `should execute diktatCheck with gradle older than 6_4`() { val result = runDiktat(testProjectDir, shouldSucceed = false, arguments = listOf("--info")) { withGradleVersion("5.3") @@ -193,7 +184,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @Disabled fun `should respect ignoreFailures setting`() { buildFile.appendText( """${System.lineSeparator()} From fbb7c8c92d556183894a540c1436e6ea2d3df590 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Thu, 5 Aug 2021 10:14:45 +0300 Subject: [PATCH 08/27] Update ktlint to 0.42.0 ### What's done: * Debug logging * Cleanup --- .github/workflows/build_and_test.yml | 4 ++-- .../DiktatGradlePluginFunctionalTest.kt | 1 + .../org/cqfn/diktat/plugin/gradle/Utils.kt | 5 ++++- .../rules/chapter2/kdoc/KdocMethods.kt | 19 ------------------- .../rules/chapter6/classes/DataClassesRule.kt | 1 - .../cqfn/diktat/ruleset/utils/AstNodeUtils.kt | 1 + 6 files changed, 8 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c8d304212f..6e4c62d51c 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -69,14 +69,14 @@ jobs: continue-on-error: true if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} run: | - ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar "examples/maven/src/main/kotlin/Test.kt" &> out + ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out shell: bash - name: Run diKTat from cli on windows continue-on-error: true if: runner.os == 'Windows' run: | - java.exe -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar "examples/maven/src/main/kotlin/Test.kt" > out.txt 2>&1 + java.exe -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" > out.txt 2>&1 shell: cmd - name: Check output diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index 4b252882c2..7ffcf30319 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -146,6 +146,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @DisabledOnOs(OS.WINDOWS, disabledReason = "Windows uses abbreviated paths, so relative path cannot be built correctly") fun `should execute diktatCheck with absolute paths`() { val path = testProjectDir.root .resolve("src/**/*.kt") diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/Utils.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/Utils.kt index 2c23d98bc9..246c54f705 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/Utils.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/Utils.kt @@ -49,7 +49,10 @@ internal fun runDiktat(testProjectDir: TemporaryFolder, if (shouldSucceed) build() else buildAndFail() } .also { - require(it.isSuccess) { "Running gradle returned exception ${it.exceptionOrNull()}" } + require(it.isSuccess) { + val ex = it.exceptionOrNull() + "Running gradle returned exception $ex, cause: ${ex?.cause}" + } } .getOrNull()!! diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter2/kdoc/KdocMethods.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter2/kdoc/KdocMethods.kt index 241ea814ac..eeaf68b944 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter2/kdoc/KdocMethods.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter2/kdoc/KdocMethods.kt @@ -59,13 +59,6 @@ import org.jetbrains.kotlin.psi.KtDotQualifiedExpression import org.jetbrains.kotlin.psi.KtThrowExpression import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType import org.jetbrains.kotlin.psi.psiUtil.referenceExpression -import java.nio.file.FileSystems -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.PathMatcher -import java.nio.file.Paths -import java.util.stream.Collectors -import java.io.IOException /** * This rule checks that whenever the method has arguments, return value, can throw exceptions, @@ -101,18 +94,6 @@ class KdocMethods(configRules: List) : DiktatRule( } } - private fun find(searchDirectory: String, matcher: PathMatcher): List { - try { - Files.walk(Paths.get(searchDirectory)).use { files -> - return files - .filter { path -> matcher.matches(path) } - .collect(Collectors.toList()) - } - } catch (e: IOException) { - return listOf() - } - } - @Suppress("UnsafeCallOnNullableType", "AVOID_NULL_CHECKS") private fun checkSignatureDescription(node: ASTNode) { val kdoc = node.getFirstChildWithType(KDOC) diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter6/classes/DataClassesRule.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter6/classes/DataClassesRule.kt index 6bc07f5f01..b1888547cb 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter6/classes/DataClassesRule.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/chapter6/classes/DataClassesRule.kt @@ -14,7 +14,6 @@ import com.pinterest.ktlint.core.ast.ElementType.DATA_KEYWORD import com.pinterest.ktlint.core.ast.ElementType.ENUM_KEYWORD import com.pinterest.ktlint.core.ast.ElementType.FUN import com.pinterest.ktlint.core.ast.ElementType.INNER_KEYWORD -import com.pinterest.ktlint.core.ast.ElementType.INTERFACE_KEYWORD import com.pinterest.ktlint.core.ast.ElementType.MODIFIER_LIST import com.pinterest.ktlint.core.ast.ElementType.OPEN_KEYWORD import com.pinterest.ktlint.core.ast.ElementType.PRIMARY_CONSTRUCTOR diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt index 8fb437f207..07fc34554a 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt @@ -737,6 +737,7 @@ fun ASTNode.calculateLineColByOffset() = buildPositionInTextLocator(text) fun ASTNode.getFilePath(): String = getRootNode().also { require(it.elementType == FILE) { "Root node type is not FILE, but file_path is present in user_data only in FILE nodes" } }.getUserData(KtLint.FILE_PATH_USER_DATA_KEY).let { + log.info("File path from user data: $it") requireNotNull(it) { "File path is not present in user data" } } From 44e82a19a078f6109463d1ca45d334774db71f13 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Thu, 5 Aug 2021 11:53:26 +0300 Subject: [PATCH 09/27] Update ktlint to 0.42.0 ### What's done: * Fix in maven plugin --- .../diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt | 2 +- .../main/kotlin/org/cqfn/diktat/plugin/maven/DiktatBaseMojo.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index 7ffcf30319..fde6228c6f 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -146,7 +146,7 @@ class DiktatGradlePluginFunctionalTest { } @Test - @DisabledOnOs(OS.WINDOWS, disabledReason = "Windows uses abbreviated paths, so relative path cannot be built correctly") + @DisabledOnOs(OS.WINDOWS, OS.MAC, disabledReason = "Windows uses abbreviated paths, so relative path cannot be built correctly") fun `should execute diktatCheck with absolute paths`() { val path = testProjectDir.root .resolve("src/**/*.kt") diff --git a/diktat-maven-plugin/src/main/kotlin/org/cqfn/diktat/plugin/maven/DiktatBaseMojo.kt b/diktat-maven-plugin/src/main/kotlin/org/cqfn/diktat/plugin/maven/DiktatBaseMojo.kt index dba71f2a3c..d839018c94 100644 --- a/diktat-maven-plugin/src/main/kotlin/org/cqfn/diktat/plugin/maven/DiktatBaseMojo.kt +++ b/diktat-maven-plugin/src/main/kotlin/org/cqfn/diktat/plugin/maven/DiktatBaseMojo.kt @@ -143,7 +143,7 @@ abstract class DiktatBaseMojo : AbstractMojo() { val text = file.readText() val params = KtLint.Params( - fileName = file.name, + fileName = file.relativeTo(mavenProject.basedir).path, text = text, ruleSets = ruleSets, userData = mapOf("file_path" to file.path), From 10fa28f778f3088c9d2ec5a6e9c7b7ad4096ac35 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Thu, 5 Aug 2021 12:16:12 +0300 Subject: [PATCH 10/27] Update ktlint to 0.42.0 ### What's done: * Fix in maven plugin --- .../diktat/plugin/maven/DiktatMavenPluginIntegrationTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/diktat-maven-plugin/src/test/kotlin/org/cqfn/diktat/plugin/maven/DiktatMavenPluginIntegrationTest.kt b/diktat-maven-plugin/src/test/kotlin/org/cqfn/diktat/plugin/maven/DiktatMavenPluginIntegrationTest.kt index 5236e7b988..231273b66b 100644 --- a/diktat-maven-plugin/src/test/kotlin/org/cqfn/diktat/plugin/maven/DiktatMavenPluginIntegrationTest.kt +++ b/diktat-maven-plugin/src/test/kotlin/org/cqfn/diktat/plugin/maven/DiktatMavenPluginIntegrationTest.kt @@ -47,7 +47,7 @@ class DiktatMavenPluginIntegrationTest { val mavenLog = result.mavenLog.stdout.readText() Assertions.assertTrue( - mavenLog.contains("Original and formatted content differ, writing to Test.kt...") + mavenLog.contains(Regex("""Original and formatted content differ, writing to [:\w/\\]+Test\.kt\.\.\.""")) ) Assertions.assertTrue( mavenLog.contains(Regex("There are \\d+ lint errors")) From 6a5e9daa3486c8bb5c901b0b0db399e80ac82955 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 9 Aug 2021 10:39:25 +0300 Subject: [PATCH 11/27] Update ktlint to 0.43.0-SNAPSHOT ### What's done: * Use snapshot version * Enable content filtering of gradle repos --- .github/workflows/build_and_test.yml | 2 -- diktat-gradle-plugin/build.gradle.kts | 15 ++++++++++++++- .../gradle/DiktatGradlePluginFunctionalTest.kt | 1 - .../plugin/gradle/DiktatJavaExecTaskBase.kt | 9 +++++++-- .../org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt | 1 - pom.xml | 12 +++++++++++- 6 files changed, 32 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 6e4c62d51c..a512fd2fab 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -47,8 +47,6 @@ jobs: os: [ ubuntu-latest, windows-latest, macos-latest ] steps: - - uses: actions/checkout@v2.3.4 - - name: Setup environment variables run: | cat pom.xml | grep ".*" | head -1 | awk -F'[><]' '{ printf "DIKTAT_VERSION=%s\n",$3 }' >> $GITHUB_ENV diff --git a/diktat-gradle-plugin/build.gradle.kts b/diktat-gradle-plugin/build.gradle.kts index 033e2713f0..53087b60af 100644 --- a/diktat-gradle-plugin/build.gradle.kts +++ b/diktat-gradle-plugin/build.gradle.kts @@ -13,9 +13,22 @@ repositories { flatDir { // to use snapshot diktat without necessary installing dirs("../diktat-rules/target") + content { + includeGroup("org.cqfn.diktat") + } } - mavenLocal() // to use snapshot diktat mavenCentral() + mavenLocal { + // to use snapshot diktat + content { + includeGroup("org.cqfn.diktat") + } + } + maven("https://oss.sonatype.org/content/repositories/snapshots") { + content { + includeGroup("com.pinterest.ktlint") + } + } } // default value is needed for correct gradle loading in IDEA; actual value from maven is used during build diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index fde6228c6f..4b252882c2 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -146,7 +146,6 @@ class DiktatGradlePluginFunctionalTest { } @Test - @DisabledOnOs(OS.WINDOWS, OS.MAC, disabledReason = "Windows uses abbreviated paths, so relative path cannot be built correctly") fun `should execute diktatCheck with absolute paths`() { val path = testProjectDir.root .resolve("src/**/*.kt") diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt index 1c3ba6fa55..f2ae2098d5 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt @@ -156,11 +156,16 @@ open class DiktatJavaExecTaskBase @Inject constructor( private fun MutableList.addPattern(pattern: File, negate: Boolean = false) { val path = if (pattern.isAbsolute) { - pattern.relativeTo(project.projectDir).normalize() + project.logger.info("Pattern before normalizing: $pattern") + pattern + .relativeTo(project.projectDir) + .normalize() } else { pattern } - .invariantSeparatorsPath + .invariantSeparatorsPath.also { + project.logger.info("Pattern after normalizing and changing separators: $it") + } add((if (negate) "!" else "") + path) } diff --git a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt index 07fc34554a..8fb437f207 100644 --- a/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt +++ b/diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt @@ -737,7 +737,6 @@ fun ASTNode.calculateLineColByOffset() = buildPositionInTextLocator(text) fun ASTNode.getFilePath(): String = getRootNode().also { require(it.elementType == FILE) { "Root node type is not FILE, but file_path is present in user_data only in FILE nodes" } }.getUserData(KtLint.FILE_PATH_USER_DATA_KEY).let { - log.info("File path from user data: $it") requireNotNull(it) { "File path is not present in user data" } } diff --git a/pom.xml b/pom.xml index 4213d8fcba..b09b953b3f 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 1.5.21 true 1.2.2 - 0.42.0 + 0.43.0-SNAPSHOT 5.7.2 30.1.1-jre 1.7.31 @@ -76,6 +76,16 @@ + + + ossrh-snapshot + https://oss.sonatype.org/content/repositories/snapshots + + true + + + + From a93cd3354ce8f0f8b98001e8347219e7a2555a51 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 9 Aug 2021 10:56:56 +0300 Subject: [PATCH 12/27] Update ktlint to 0.43.0-SNAPSHOT ### What's done: * Use snapshot version * Enable content filtering of gradle repos --- .../gradle/DiktatGradlePluginFunctionalTest.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index 4b252882c2..e130a1ec8d 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -22,6 +22,19 @@ class DiktatGradlePluginFunctionalTest { val buildInitDsl = BuildInitDsl.KOTLIN createExampleProject(testProjectDir, File("../examples/gradle-kotlin-dsl"), buildInitDsl) buildFile = testProjectDir.root.resolve(buildInitDsl.fileNameFor("build")) + buildFile.appendText( + """${System.lineSeparator()} + repositories { + mavenCentral() + maven("https://oss.sonatype.org/content/repositories/snapshots") { + content { + includeGroup("com.pinterest") + includeGroup("com.pinterest.ktlint") + } + } + } + """.trimIndent() + ) } @AfterEach From 80d96ee33deb912fc2f9056dd487e8a0cdce35aa Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 9 Aug 2021 11:55:31 +0300 Subject: [PATCH 13/27] Update ktlint to 0.43.0-SNAPSHOT ### What's done: * Use snapshot version * Enable content filtering of gradle repos --- .../DiktatGradlePluginGroovyFunctionalTest.kt | 13 +++++++++++++ .../DiktatGradlePluginMultiprojectFunctionalTest.kt | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt index 27200776e0..ce4c51e2c6 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt @@ -19,6 +19,19 @@ class DiktatGradlePluginGroovyFunctionalTest { val buildInitDsl = BuildInitDsl.GROOVY createExampleProject(testProjectDir, File("../examples/gradle-groovy-dsl"), buildInitDsl) buildFile = testProjectDir.root.resolve(buildInitDsl.fileNameFor("build")) + buildFile.appendText( + """${System.lineSeparator()} + repositories { + mavenCentral() + maven("https://oss.sonatype.org/content/repositories/snapshots") { + content { + includeGroup("com.pinterest") + includeGroup("com.pinterest.ktlint") + } + } + } + """.trimIndent() + ) } @AfterEach diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt index 0b9cb06278..32b1265c1c 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt @@ -20,6 +20,19 @@ class DiktatGradlePluginMultiprojectFunctionalTest { val buildInitDsl = BuildInitDsl.KOTLIN File("../examples/gradle-kotlin-dsl-multiproject").copyRecursively(testProjectDir.root) buildFile = testProjectDir.root.resolve(buildInitDsl.fileNameFor("build")) + buildFile.appendText( + """${System.lineSeparator()} + repositories { + mavenCentral() + maven("https://oss.sonatype.org/content/repositories/snapshots") { + content { + includeGroup("com.pinterest") + includeGroup("com.pinterest.ktlint") + } + } + } + """.trimIndent() + ) } @AfterEach From 651bb15eda3000c1738705fc96bce37e740be00c Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 9 Aug 2021 12:09:03 +0300 Subject: [PATCH 14/27] Update ktlint to 0.43.0-SNAPSHOT ### What's done: * Use snapshot version * Enable content filtering of gradle repos --- .../DiktatGradlePluginGroovyFunctionalTest.kt | 3 ++- ...DiktatGradlePluginMultiprojectFunctionalTest.kt | 14 ++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt index ce4c51e2c6..552ec14512 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt @@ -23,7 +23,8 @@ class DiktatGradlePluginGroovyFunctionalTest { """${System.lineSeparator()} repositories { mavenCentral() - maven("https://oss.sonatype.org/content/repositories/snapshots") { + maven { + url "https://oss.sonatype.org/content/repositories/snapshots" content { includeGroup("com.pinterest") includeGroup("com.pinterest.ktlint") diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt index 32b1265c1c..e0f0fd2f44 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt @@ -22,12 +22,14 @@ class DiktatGradlePluginMultiprojectFunctionalTest { buildFile = testProjectDir.root.resolve(buildInitDsl.fileNameFor("build")) buildFile.appendText( """${System.lineSeparator()} - repositories { - mavenCentral() - maven("https://oss.sonatype.org/content/repositories/snapshots") { - content { - includeGroup("com.pinterest") - includeGroup("com.pinterest.ktlint") + allprojects { + repositories { + mavenCentral() + maven("https://oss.sonatype.org/content/repositories/snapshots") { + content { + includeGroup("com.pinterest") + includeGroup("com.pinterest.ktlint") + } } } } From d0e25da93ec051a973415f24a61d92bba768a6cc Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 9 Aug 2021 12:35:05 +0300 Subject: [PATCH 15/27] Update ktlint to 0.43.0-SNAPSHOT ### What's done: * Disable gradle tests with absolute paths on Windows * Add CLI tests with absolute paths --- .github/workflows/build_and_test.yml | 30 +++++++++++++++---- .../DiktatGradlePluginFunctionalTest.kt | 1 + 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a512fd2fab..af7593788f 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -47,6 +47,7 @@ jobs: os: [ ubuntu-latest, windows-latest, macos-latest ] steps: + - uses: actions/checkout@v2 - name: Setup environment variables run: | cat pom.xml | grep ".*" | head -1 | awk -F'[><]' '{ printf "DIKTAT_VERSION=%s\n",$3 }' >> $GITHUB_ENV @@ -67,7 +68,7 @@ jobs: continue-on-error: true if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} run: | - ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out + ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out.txt shell: bash - name: Run diKTat from cli on windows @@ -78,11 +79,30 @@ jobs: shell: cmd - name: Check output - id: cli-check run: | - if [ -f out.txt ]; then mv out.txt out; fi - cat out - grep -E "\[VARIABLE_NAME_INCORRECT_FORMAT\]" out + cat out.txt + grep -E "\[VARIABLE_NAME_INCORRECT_FORMAT\]" out.txt + rm out.txt + shell: bash + + - name: Run diKTat from cli (absolute paths) + continue-on-error: true + if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} + run: | + ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "$PWD/examples/maven/src/main/kotlin/Test.kt" &> out.txt + shell: bash + + - name: Run diKTat from cli on windows (absolute paths) + continue-on-error: true + if: runner.os == 'Windows' + run: | + java.exe -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "%cd%/examples/maven/src/main/kotlin/Test.kt" > out.txt 2>&1 + shell: cmd + + - name: Check output (absolute paths) + run: | + cat out.txt + grep -E "\[VARIABLE_NAME_INCORRECT_FORMAT\]" out.txt shell: bash build_and_test: diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index e130a1ec8d..245bafec59 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -159,6 +159,7 @@ class DiktatGradlePluginFunctionalTest { } @Test + @DisabledOnOs(OS.WINDOWS, disabledReason = "Because of short directory notation") fun `should execute diktatCheck with absolute paths`() { val path = testProjectDir.root .resolve("src/**/*.kt") From b615080803cf4c1dd7c91346d319cb91834b427c Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 9 Aug 2021 14:04:29 +0300 Subject: [PATCH 16/27] Update ktlint to 0.43.0-SNAPSHOT ### What's done: * Disable gradle tests with absolute paths on Windows * Add CLI tests with absolute paths --- .../org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt | 4 ++-- .../org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt index f2ae2098d5..5d4e29fd46 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt @@ -159,11 +159,11 @@ open class DiktatJavaExecTaskBase @Inject constructor( project.logger.info("Pattern before normalizing: $pattern") pattern .relativeTo(project.projectDir) - .normalize() + /*.normalize()*/ } else { pattern } - .invariantSeparatorsPath.also { + /*.invariantSeparatorsPath*/.also { project.logger.info("Pattern after normalizing and changing separators: $it") } add((if (negate) "!" else "") + path) diff --git a/diktat-gradle-plugin/src/test/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt b/diktat-gradle-plugin/src/test/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt index 559b272965..fa1c8a2840 100644 --- a/diktat-gradle-plugin/src/test/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt +++ b/diktat-gradle-plugin/src/test/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskTest.kt @@ -197,7 +197,7 @@ class DiktatJavaExecTaskTest { project.file("diktat-analysis.yml").createNewFile() } - private fun combinePathParts(vararg parts: String) = parts.joinToString("/") + private fun combinePathParts(vararg parts: String) = parts.joinToString(File.separator) companion object { private const val DIKTAT_CHECK_TASK = "diktatCheck" From 86e7ee88dd159dc0b21f75d0d54bfebcaf8419c8 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 9 Aug 2021 16:51:16 +0300 Subject: [PATCH 17/27] Update ktlint to 0.43.0-SNAPSHOT ### What's done: * Disable gradle tests with absolute paths on Windows * Add CLI tests with absolute paths --- .../diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index 245bafec59..2d6ce21afc 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -159,11 +159,11 @@ class DiktatGradlePluginFunctionalTest { } @Test - @DisabledOnOs(OS.WINDOWS, disabledReason = "Because of short directory notation") fun `should execute diktatCheck with absolute paths`() { val path = testProjectDir.root - .resolve("src/**/*.kt") + .resolve("src") .absolutePath + .plus("/**/*.kt") .replace("\\", "\\\\") buildFile.appendText( """${System.lineSeparator()} From 1c8bb38af29a632ddbdcdcd9a36329006612ce96 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 23 Aug 2021 16:31:18 +0300 Subject: [PATCH 18/27] Try to use ktlint snapshot from sonatype --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index af7593788f..fea0f601e4 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -56,7 +56,7 @@ jobs: - name: Setup environment run: | - curl -sSLO https://github.com/pinterest/ktlint/releases/download/${{ env.KTLINT_VERSION }}/ktlint && chmod a+x ktlint + curl -o ktlint -sSL https://oss.sonatype.org/content/repositories/snapshots/com/pinterest/ktlint/0.43.0-SNAPSHOT/ktlint-0.43.0-20210820.212935-21-all.jar && chmod a+x ktlint shell: bash - name: Download diktat jar From eba28f7d391b5166e49bd4f9ddbe2556080cb95a Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 23 Aug 2021 16:47:41 +0300 Subject: [PATCH 19/27] Update build_and_test.yml --- .github/workflows/build_and_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index fea0f601e4..a6009e55dd 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -68,7 +68,7 @@ jobs: continue-on-error: true if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} run: | - ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out.txt + java -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out.txt shell: bash - name: Run diKTat from cli on windows @@ -89,7 +89,7 @@ jobs: continue-on-error: true if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} run: | - ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "$PWD/examples/maven/src/main/kotlin/Test.kt" &> out.txt + java -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "$PWD/examples/maven/src/main/kotlin/Test.kt" &> out.txt shell: bash - name: Run diKTat from cli on windows (absolute paths) From f2bcb1c10e6e32825cf1a2a67a18e44b59a8c8d2 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Wed, 3 Nov 2021 14:06:03 +0300 Subject: [PATCH 20/27] Ktlint 0.43.0 ### What's done: * Revert changes related to snapshot ktlint * Update gradle to 7.2 --- .github/workflows/build_and_test.yml | 6 +++--- diktat-gradle-plugin/build.gradle.kts | 5 ----- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/DiktatGradlePluginFunctionalTest.kt | 13 ------------- .../DiktatGradlePluginGroovyFunctionalTest.kt | 14 -------------- ...iktatGradlePluginMultiprojectFunctionalTest.kt | 15 --------------- info/gradle/wrapper/gradle-wrapper.properties | 2 +- pom.xml | 12 +----------- 8 files changed, 6 insertions(+), 63 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a6009e55dd..af7593788f 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -56,7 +56,7 @@ jobs: - name: Setup environment run: | - curl -o ktlint -sSL https://oss.sonatype.org/content/repositories/snapshots/com/pinterest/ktlint/0.43.0-SNAPSHOT/ktlint-0.43.0-20210820.212935-21-all.jar && chmod a+x ktlint + curl -sSLO https://github.com/pinterest/ktlint/releases/download/${{ env.KTLINT_VERSION }}/ktlint && chmod a+x ktlint shell: bash - name: Download diktat jar @@ -68,7 +68,7 @@ jobs: continue-on-error: true if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} run: | - java -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out.txt + ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out.txt shell: bash - name: Run diKTat from cli on windows @@ -89,7 +89,7 @@ jobs: continue-on-error: true if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} run: | - java -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "$PWD/examples/maven/src/main/kotlin/Test.kt" &> out.txt + ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "$PWD/examples/maven/src/main/kotlin/Test.kt" &> out.txt shell: bash - name: Run diKTat from cli on windows (absolute paths) diff --git a/diktat-gradle-plugin/build.gradle.kts b/diktat-gradle-plugin/build.gradle.kts index 53087b60af..54471d8013 100644 --- a/diktat-gradle-plugin/build.gradle.kts +++ b/diktat-gradle-plugin/build.gradle.kts @@ -24,11 +24,6 @@ repositories { includeGroup("org.cqfn.diktat") } } - maven("https://oss.sonatype.org/content/repositories/snapshots") { - content { - includeGroup("com.pinterest.ktlint") - } - } } // default value is needed for correct gradle loading in IDEA; actual value from maven is used during build diff --git a/diktat-gradle-plugin/gradle/wrapper/gradle-wrapper.properties b/diktat-gradle-plugin/gradle/wrapper/gradle-wrapper.properties index 549d84424d..ffed3a254e 100644 --- a/diktat-gradle-plugin/gradle/wrapper/gradle-wrapper.properties +++ b/diktat-gradle-plugin/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index 2d6ce21afc..16170d3e40 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -22,19 +22,6 @@ class DiktatGradlePluginFunctionalTest { val buildInitDsl = BuildInitDsl.KOTLIN createExampleProject(testProjectDir, File("../examples/gradle-kotlin-dsl"), buildInitDsl) buildFile = testProjectDir.root.resolve(buildInitDsl.fileNameFor("build")) - buildFile.appendText( - """${System.lineSeparator()} - repositories { - mavenCentral() - maven("https://oss.sonatype.org/content/repositories/snapshots") { - content { - includeGroup("com.pinterest") - includeGroup("com.pinterest.ktlint") - } - } - } - """.trimIndent() - ) } @AfterEach diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt index 552ec14512..27200776e0 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginGroovyFunctionalTest.kt @@ -19,20 +19,6 @@ class DiktatGradlePluginGroovyFunctionalTest { val buildInitDsl = BuildInitDsl.GROOVY createExampleProject(testProjectDir, File("../examples/gradle-groovy-dsl"), buildInitDsl) buildFile = testProjectDir.root.resolve(buildInitDsl.fileNameFor("build")) - buildFile.appendText( - """${System.lineSeparator()} - repositories { - mavenCentral() - maven { - url "https://oss.sonatype.org/content/repositories/snapshots" - content { - includeGroup("com.pinterest") - includeGroup("com.pinterest.ktlint") - } - } - } - """.trimIndent() - ) } @AfterEach diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt index e0f0fd2f44..0b9cb06278 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginMultiprojectFunctionalTest.kt @@ -20,21 +20,6 @@ class DiktatGradlePluginMultiprojectFunctionalTest { val buildInitDsl = BuildInitDsl.KOTLIN File("../examples/gradle-kotlin-dsl-multiproject").copyRecursively(testProjectDir.root) buildFile = testProjectDir.root.resolve(buildInitDsl.fileNameFor("build")) - buildFile.appendText( - """${System.lineSeparator()} - allprojects { - repositories { - mavenCentral() - maven("https://oss.sonatype.org/content/repositories/snapshots") { - content { - includeGroup("com.pinterest") - includeGroup("com.pinterest.ktlint") - } - } - } - } - """.trimIndent() - ) } @AfterEach diff --git a/info/gradle/wrapper/gradle-wrapper.properties b/info/gradle/wrapper/gradle-wrapper.properties index 549d84424d..ffed3a254e 100644 --- a/info/gradle/wrapper/gradle-wrapper.properties +++ b/info/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/pom.xml b/pom.xml index b09b953b3f..c6ce762b80 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 1.5.21 true 1.2.2 - 0.43.0-SNAPSHOT + 0.43.0 5.7.2 30.1.1-jre 1.7.31 @@ -76,16 +76,6 @@ - - - ossrh-snapshot - https://oss.sonatype.org/content/repositories/snapshots - - true - - - - From 4ea29776bef432324af5cb78a1d521438af12076 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Wed, 3 Nov 2021 14:17:55 +0300 Subject: [PATCH 21/27] Ktlint 0.43.0 ### What's done: * Align version of kotlin plugin for gradle plugin with embedded kotlin into gradle * Code style --- diktat-gradle-plugin/build.gradle.kts | 4 ++-- .../org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/diktat-gradle-plugin/build.gradle.kts b/diktat-gradle-plugin/build.gradle.kts index 54471d8013..b63d15345c 100644 --- a/diktat-gradle-plugin/build.gradle.kts +++ b/diktat-gradle-plugin/build.gradle.kts @@ -3,7 +3,7 @@ import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.getCurr plugins { `java-gradle-plugin` - kotlin("jvm") version "1.4.20" + kotlin("jvm") version "1.5.21" jacoco id("pl.droidsonroids.jacoco.testkit") version "1.0.7" id("org.gradle.test-retry") version "1.2.1" @@ -27,7 +27,7 @@ repositories { } // default value is needed for correct gradle loading in IDEA; actual value from maven is used during build -val ktlintVersion = project.properties.getOrDefault("ktlintVersion", "0.39.0") as String +val ktlintVersion = project.properties.getOrDefault("ktlintVersion", "0.43.0") as String val diktatVersion = project.version.takeIf { it.toString() != Project.DEFAULT_VERSION } ?: "0.5.2" val junitVersion = project.properties.getOrDefault("junitVersion", "5.7.0") as String val jacocoVersion = project.properties.getOrDefault("jacocoVersion", "0.8.7") as String diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt index 5d4e29fd46..0dacdfad8b 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt @@ -159,11 +159,11 @@ open class DiktatJavaExecTaskBase @Inject constructor( project.logger.info("Pattern before normalizing: $pattern") pattern .relativeTo(project.projectDir) - /*.normalize()*/ + /* .normalize()*/ } else { pattern } - /*.invariantSeparatorsPath*/.also { + /* .invariantSeparatorsPath*/.also { project.logger.info("Pattern after normalizing and changing separators: $it") } add((if (negate) "!" else "") + path) From 319864aaa1f444574c95c9d388ca7d172065e26f Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Wed, 3 Nov 2021 14:29:20 +0300 Subject: [PATCH 22/27] Ktlint 0.43.0 ### What's done: * Remove -Werror from diktat-gradle-plugin --- diktat-gradle-plugin/build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/diktat-gradle-plugin/build.gradle.kts b/diktat-gradle-plugin/build.gradle.kts index b63d15345c..65641a707d 100644 --- a/diktat-gradle-plugin/build.gradle.kts +++ b/diktat-gradle-plugin/build.gradle.kts @@ -73,7 +73,6 @@ tasks.withType { apiVersion = "1.3" jvmTarget = "1.8" useIR = false // for compatibility with older gradle - allWarningsAsErrors = true } dependsOn.add(generateVersionsFile) From 18860c342847cef83e6001ea9eeeb53e0a7bc593 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 8 Nov 2021 11:10:21 +0300 Subject: [PATCH 23/27] Ktlint 0.43.0 ### What's done: * Forbid usage of absolute paths in diktat-gradle-plugin --- .../DiktatGradlePluginFunctionalTest.kt | 25 ------------------- .../plugin/gradle/DiktatJavaExecTaskBase.kt | 20 ++++++--------- 2 files changed, 8 insertions(+), 37 deletions(-) diff --git a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt index 16170d3e40..31f2af4e60 100644 --- a/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt +++ b/diktat-gradle-plugin/src/functionalTest/kotlin/org/cqfn/diktat/plugin/gradle/DiktatGradlePluginFunctionalTest.kt @@ -145,31 +145,6 @@ class DiktatGradlePluginFunctionalTest { ) } - @Test - fun `should execute diktatCheck with absolute paths`() { - val path = testProjectDir.root - .resolve("src") - .absolutePath - .plus("/**/*.kt") - .replace("\\", "\\\\") - buildFile.appendText( - """${System.lineSeparator()} - diktat { - inputs = files("$path") - debug = true - } - """.trimIndent() - ) - val result = runDiktat(testProjectDir, shouldSucceed = false, arguments = listOf("--info")) - - val diktatCheckBuildResult = result.task(":$DIKTAT_CHECK_TASK") - requireNotNull(diktatCheckBuildResult) - Assertions.assertEquals(TaskOutcome.FAILED, diktatCheckBuildResult.outcome) - Assertions.assertTrue( - result.output.contains("[FILE_NAME_MATCH_CLASS]") - ) - } - @Test fun `should execute diktatCheck with gradle older than 6_4`() { val result = runDiktat(testProjectDir, shouldSucceed = false, arguments = listOf("--info")) { diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt index 0dacdfad8b..3f2e984ab1 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt @@ -50,6 +50,13 @@ open class DiktatJavaExecTaskBase @Inject constructor( } else { main = "com.pinterest.ktlint.Main" } + require(diktatExtension.inputs.none { it.isAbsolute }) { + "Absolute paths are not supported for inputs in diktat-gradle-plugin" + } + require(diktatExtension.excludes.none { it.isAbsolute }) { + "Absolute paths are not supported for excludes in diktat-gradle-plugin" + } + // Plain, checkstyle and json reporter are provided out of the box in ktlint if (diktatExtension.reporterType == "html") { diktatConfiguration.dependencies.add(project.dependencies.create("com.pinterest.ktlint:ktlint-reporter-html:$KTLINT_VERSION")) @@ -155,18 +162,7 @@ open class DiktatJavaExecTaskBase @Inject constructor( GradleVersion.version(gradleVersionString) >= GradleVersion.version("6.4") private fun MutableList.addPattern(pattern: File, negate: Boolean = false) { - val path = if (pattern.isAbsolute) { - project.logger.info("Pattern before normalizing: $pattern") - pattern - .relativeTo(project.projectDir) - /* .normalize()*/ - } else { - pattern - } - /* .invariantSeparatorsPath*/.also { - project.logger.info("Pattern after normalizing and changing separators: $it") - } - add((if (negate) "!" else "") + path) + add((if (negate) "!" else "") + pattern) } private fun resolveConfigFile(file: File): String { From 84004c1ffa3239f92a2d69ae7faf05a2e5fe7838 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 8 Nov 2021 14:06:25 +0300 Subject: [PATCH 24/27] Ktlint 0.43.0 ### What's done: * Forbid usage of absolute paths in diktat-gradle-plugin --- .../diktat/plugin/gradle/DiktatJavaExecTaskBase.kt | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt index 3f2e984ab1..831a208e4f 100644 --- a/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt +++ b/diktat-gradle-plugin/src/main/kotlin/org/cqfn/diktat/plugin/gradle/DiktatJavaExecTaskBase.kt @@ -50,12 +50,6 @@ open class DiktatJavaExecTaskBase @Inject constructor( } else { main = "com.pinterest.ktlint.Main" } - require(diktatExtension.inputs.none { it.isAbsolute }) { - "Absolute paths are not supported for inputs in diktat-gradle-plugin" - } - require(diktatExtension.excludes.none { it.isAbsolute }) { - "Absolute paths are not supported for excludes in diktat-gradle-plugin" - } // Plain, checkstyle and json reporter are provided out of the box in ktlint if (diktatExtension.reporterType == "html") { @@ -162,7 +156,12 @@ open class DiktatJavaExecTaskBase @Inject constructor( GradleVersion.version(gradleVersionString) >= GradleVersion.version("6.4") private fun MutableList.addPattern(pattern: File, negate: Boolean = false) { - add((if (negate) "!" else "") + pattern) + val path = if (pattern.isAbsolute) { + pattern.relativeTo(project.projectDir) + } else { + pattern + } + add((if (negate) "!" else "") + path) } private fun resolveConfigFile(file: File): String { From ca1941f9616c911fadb9279cfa2e0684ce41deb9 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 8 Nov 2021 14:28:32 +0300 Subject: [PATCH 25/27] Ktlint 0.43 ### What's done: * Use ktlint fat jar from maven central, because the one at GH releases is broken --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 186a99f92e..58bc8d3224 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -56,7 +56,7 @@ jobs: - name: Setup environment run: | - curl -sSLO https://github.com/pinterest/ktlint/releases/download/${{ env.KTLINT_VERSION }}/ktlint && chmod a+x ktlint + curl -o ktlint -sSL https://repo1.maven.org/maven2/com/pinterest/ktlint/${{ env.KTLINT_VERSION }}/ktlint-0.43.0-all.jar && chmod a+x ktlint shell: bash - name: Download diktat jar From a4c61b97ac595023c96c179c446191ae512df141 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 8 Nov 2021 14:41:30 +0300 Subject: [PATCH 26/27] Update build_and_test.yml --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 58bc8d3224..30cb013829 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -68,7 +68,7 @@ jobs: continue-on-error: true if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} run: | - ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out.txt + java -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "examples/maven/src/main/kotlin/Test.kt" &> out.txt shell: bash - name: Run diKTat from cli on windows From 7ef53cf97f9dc2c9663e94c847c925c27b85add2 Mon Sep 17 00:00:00 2001 From: Peter Trifanov Date: Mon, 8 Nov 2021 14:54:55 +0300 Subject: [PATCH 27/27] Ktlint 0.43 ### What's done: * Use ktlint fat jar from maven central, because the one at GH releases is broken --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 30cb013829..4a06cf24f2 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -89,7 +89,7 @@ jobs: continue-on-error: true if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} run: | - ./ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "$PWD/examples/maven/src/main/kotlin/Test.kt" &> out.txt + java -jar ktlint -R diktat-${{ env.DIKTAT_VERSION }}.jar --disabled_rules=standard "$PWD/examples/maven/src/main/kotlin/Test.kt" &> out.txt shell: bash - name: Run diKTat from cli on windows (absolute paths)