Skip to content

Commit

Permalink
Recommendation 4.3.2 generic types explicit declaration (#314)
Browse files Browse the repository at this point in the history
### What's done:
  * Added rule logic
  * Added tests
  * Added fixme
  • Loading branch information
aktsay6 authored Sep 29, 2020
1 parent f8c2c4f commit 8738dd1
Show file tree
Hide file tree
Showing 12 changed files with 281 additions and 1 deletion.
3 changes: 3 additions & 0 deletions diktat-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,9 @@
enabled: true
configuration:
typeReferenceLength: '25' # max length of type reference
- name: GENERIC_VARIABLE_WRONG_DECLARATION
enabled: true
configuration: {}
# Inspection that checks if string template has redundant curly braces
- name: STRING_TEMPLATE_CURLY_BRACES
enabled: true
Expand Down
2 changes: 2 additions & 0 deletions diktat-rules/src/main/kotlin/generated/WarningNames.kt
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,8 @@ object WarningNames {

const val TYPE_ALIAS: String = "TYPE_ALIAS"

const val GENERIC_VARIABLE_WRONG_DECLARATION: String = "GENERIC_VARIABLE_WRONG_DECLARATION"

const val STRING_TEMPLATE_CURLY_BRACES: String = "STRING_TEMPLATE_CURLY_BRACES"

const val STRING_TEMPLATE_QUOTES: String = "STRING_TEMPLATE_QUOTES"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ enum class Warnings(private val canBeAutoCorrected: Boolean, private val warn: S

// ======== chapter 4 ========
TYPE_ALIAS(false, "variable's type is too complex and should be replaced with typealias"),
GENERIC_VARIABLE_WRONG_DECLARATION(true, "variable should have explicit type declaration"),
STRING_TEMPLATE_CURLY_BRACES(true, "string template has redundant curly braces"),
STRING_TEMPLATE_QUOTES(true, "string template has redundant quotes"),
// FixMe: change float literal to BigDecimal? Or kotlin equivalent?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class DiktatRuleSetProvider(private val diktatConfigFile: String = "diktat-analy
::BlockStructureBraces,
::EmptyBlock,
::EnumsSeparated,
::VariableGenericTypeDeclarationRule,
::SingleLineStatementsRule,
::CommentsFormatting,
::ConsecutiveSpacesRule,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package org.cqfn.diktat.ruleset.rules

import com.pinterest.ktlint.core.Rule
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.PROPERTY
import com.pinterest.ktlint.core.ast.ElementType.TYPE_ARGUMENT_LIST
import com.pinterest.ktlint.core.ast.ElementType.TYPE_REFERENCE
import com.pinterest.ktlint.core.ast.ElementType.VALUE_PARAMETER
import org.cqfn.diktat.common.config.rules.RulesConfig
import org.cqfn.diktat.ruleset.constants.Warnings
import org.cqfn.diktat.ruleset.utils.getAllChildrenWithType
import org.cqfn.diktat.ruleset.utils.hasChildOfType
import org.jetbrains.kotlin.com.intellij.lang.ASTNode
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.psi.KtProperty

/**
* This Rule checks if declaration of a generic variable is appropriate.
* Not recommended: val myVariable: Map<Int, String> = emptyMap<Int, String>() or val myVariable = emptyMap<Int, String>()
* Recommended: val myVariable: Map<Int, String> = emptyMap()
*/
// FIXME: we now don't have access to return types, so we can perform this check only if explicit type is present, but should be able also if it's not.
class VariableGenericTypeDeclarationRule(private val configRules: List<RulesConfig>) : Rule("variable-generic-type") {
private lateinit var emitWarn: ((offset: Int, errorMessage: String, canBeAutoCorrected: Boolean) -> Unit)
private var isFixMode: Boolean = false

override fun visit(node: ASTNode,
autoCorrect: Boolean,
emit: (offset: Int, errorMessage: String, canBeAutoCorrected: Boolean) -> Unit) {
emitWarn = emit
isFixMode = autoCorrect

when(node.elementType) {
PROPERTY, VALUE_PARAMETER -> handleProperty(node)
}
}

@Suppress("UnsafeCallOnNullableType")
private fun handleProperty(node: ASTNode) {
val callExpr = node.findChildByType(CALL_EXPRESSION)
?: node.findChildByType(DOT_QUALIFIED_EXPRESSION)?.getAllChildrenWithType(CALL_EXPRESSION)?.lastOrNull()

val rightSide = (callExpr?.psi as? KtCallExpression)?.typeArgumentList?.arguments
val leftSide = if (node.elementType == PROPERTY) {
(node.psi as? KtProperty)?.typeReference?.typeElement?.typeArgumentsAsTypes
} else {
(node.psi as? KtParameter)?.typeReference?.typeElement?.typeArgumentsAsTypes
}

if ((rightSide != null && leftSide != null) &&
rightSide.size == leftSide.size &&
rightSide.zip(leftSide).all { (first, second) -> first.text == second.text }) {
Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warnAndFix(configRules, emitWarn, isFixMode,
"type arguments are unnecessary in ${callExpr.text}", node.startOffset, node) {
callExpr.removeChild(callExpr.findChildByType(TYPE_ARGUMENT_LIST)!!)
}
}

if (leftSide == null && rightSide != null) {
Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warn(configRules, emitWarn, isFixMode, node.text, node.startOffset, node)
}
}
}
3 changes: 3 additions & 0 deletions diktat-rules/src/main/resources/diktat-analysis-huawei.yml
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,9 @@
enabled: true
configuration:
typeReferenceLength: '25' # max length of type reference
- name: GENERIC_VARIABLE_WRONG_DECLARATION
enabled: true
configuration: {}
# Inspection that checks if string template has redundant curly braces
- name: STRING_TEMPLATE_CURLY_BRACES
enabled: true
Expand Down
3 changes: 3 additions & 0 deletions diktat-rules/src/main/resources/diktat-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,9 @@
enabled: true
configuration:
typeReferenceLength: '25' # max length of type reference
- name: GENERIC_VARIABLE_WRONG_DECLARATION
enabled: true
configuration: {}
# Inspection that checks if string template has redundant curly braces
- name: STRING_TEMPLATE_CURLY_BRACES
enabled: true
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.cqfn.diktat.ruleset.chapter4

import generated.WarningNames
import org.cqfn.diktat.ruleset.rules.VariableGenericTypeDeclarationRule
import org.cqfn.diktat.util.FixTestBase
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test

class VariableGenericTypeDeclarationRuleFixTest : FixTestBase("test/paragraph4/generics", ::VariableGenericTypeDeclarationRule) {

@Test
@Tag(WarningNames.GENERIC_VARIABLE_WRONG_DECLARATION)
fun `basic fix test`() {
fixAndCompare("VariableGenericTypeDeclarationExpected.kt", "VariableGenericTypeDeclarationTest.kt")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
package org.cqfn.diktat.ruleset.chapter4

import com.pinterest.ktlint.core.LintError
import generated.WarningNames.GENERIC_VARIABLE_WRONG_DECLARATION
import org.cqfn.diktat.ruleset.constants.Warnings
import org.cqfn.diktat.ruleset.rules.DIKTAT_RULE_SET_ID
import org.cqfn.diktat.ruleset.rules.VariableGenericTypeDeclarationRule
import org.cqfn.diktat.util.LintTestBase
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test

class VariableGenericTypeDeclarationRuleWarnTest : LintTestBase(::VariableGenericTypeDeclarationRule) {

private val ruleId = "$DIKTAT_RULE_SET_ID:variable-generic-type"

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property with generic type good`() {
lintMethod(
"""
|class SomeClass {
| val myVariable: Map<Int, String> = emptyMap()
| val lazyValue: Map<Int, String> by lazy {
| println("computed!")
| emptyMap<Int, String>()
| }
| val sideRegex = Regex("<([a-zA-Z, <>?]+)>")
| val str = someMethod("mapOf<String>")
| val x = foo.bar<Bar>().baz()
|}
""".trimMargin()
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property with generic type bad`() {
lintMethod(
"""
|class SomeClass {
| val myVariable: Map<Int, String> = emptyMap<Int, String>()
| val any = Array<Any>(3) { "" }
| val x = foo.bar<Bar>().baz<Some>()
|}
""".trimMargin(),
LintError(2,4, ruleId,
"${Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warnText()} type arguments are unnecessary in emptyMap<Int, String>()", true),
LintError(3,4, ruleId,
"${Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warnText()} val any = Array<Any>(3) { \"\" }", false),
LintError(4,4, ruleId,
"${Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warnText()} val x = foo.bar<Bar>().baz<Some>()", false)
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property in function as parameter good`() {
lintMethod(
"""
|class SomeClass {
| private fun someFunc(myVariable: Map<Int, String> = emptyMap()) {
|
| }
|}
""".trimMargin()
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property in function as parameter bad`() {
lintMethod(
"""
|class SomeClass {
| private fun someFunc(myVariable: Map<Int, String> = emptyMap<Int, String>()) {
|
| }
|}
""".trimMargin(),
LintError(2,25, ruleId,
"${Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warnText()} type arguments are unnecessary in emptyMap<Int, String>()", true)
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property in function good`() {
lintMethod(
"""
|class SomeClass {
| private fun someFunc() {
| val myVariable: Map<Int, String> = emptyMap()
| }
|}
""".trimMargin()
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property in function bad`() {
lintMethod(
"""
|class SomeClass {
| private fun someFunc() {
| val myVariable: Map<Int, String> = emptyMap<Int, String>()
| }
|}
""".trimMargin(),
LintError(3,8, ruleId,
"${Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warnText()} type arguments are unnecessary in emptyMap<Int, String>()", true)
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property in class good`() {
lintMethod(
"""
|class SomeClass(val myVariable: Map<Int, String> = emptyMap()) {
|
|}
""".trimMargin()
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property in class bad`() {
lintMethod(
"""
|class SomeClass(val myVariable: Map<Int, String> = emptyMap<Int, String>()) {
|
|}
""".trimMargin(),
LintError(1,17, ruleId,
"${Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warnText()} type arguments are unnecessary in emptyMap<Int, String>()", true)
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `property with multiple generics`() {
lintMethod(
"""
|class SomeClass {
| private fun someFunc() {
| val myVariable: Map<Int, Map<String>> = emptyMap<Int, Map<String>>()
| }
|}
""".trimMargin(),
LintError(3,8, ruleId,
"${Warnings.GENERIC_VARIABLE_WRONG_DECLARATION.warnText()} type arguments are unnecessary in emptyMap<Int, Map<String>>()", true)
)
}

@Test
@Tag(GENERIC_VARIABLE_WRONG_DECLARATION)
fun `should not trigger`() {
lintMethod(
"""
|class SomeClass {
| private fun someFunc() {
| var myVariable: Map<Int, Any> = emptyMap<Int, String>()
| }
|}
""".trimMargin()
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package test.paragraph4.generics

class SomeClass(val some: Map<Int, String> = emptyMap()) {
val myVariable: Map<Int, String> = emptyMap()

fun someFunc(myVariable: Map<Int, String> = emptyMap()) {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package test.paragraph4.generics

class SomeClass(val some: Map<Int, String> = emptyMap<Int, String>()) {
val myVariable: Map<Int, String> = emptyMap<Int, String>()

fun someFunc(myVariable: Map<Int, String> = emptyMap<Int, String>()) {}
}
4 changes: 3 additions & 1 deletion info/available-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,6 @@
| 3 | 3.14.2 | STRING_TEMPLATE_CURLY_BRACES | Check: warns if there is redundant curly braces in string template<br> Fix: deletes curly braces | yes | - | + |
| 3 | 3.14.2 | STRING_TEMPLATE_QUOTES | Check: warns if there are redundant quotes in string template<br> Fix: deletes quotes and $ symbol | yes | - | + |
| 4 | 4.2.2| TYPE_ALIAS | Check: if type reference of property is longer than expected | yes | typeReferenceLength | -|
| 4 | 4.1.1 | FLOAT_IN_ACCURATE_CALCULATIONS | Checks that floating-point values are not used in arithmetic expressions<br>Fix: no | no | - | Current implementation detects only floating-point constants |
| 4 | 4.1.1 | FLOAT_IN_ACCURATE_CALCULATIONS | Checks that floating-point values are not used in arithmetic expressions<br>Fix: no | no | - | Current implementation detects only floating-point constants |
| 4 | 4.2.2 | TYPE_ALIAS | Check: if type reference of property is longer than expected | yes | typeReferenceLength | -|
| 4 | 4.3.2 | GENERIC_VARIABLE_WRONG_DECLARATION | Check: warns if variables of generic types don't have explicit type declaration<br>Fix: fixes only variables that have generic declaration on both sides | yes | - | + |

1 comment on commit 8738dd1

@0pdd
Copy link

@0pdd 0pdd commented on 8738dd1 Sep 29, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't able to retrieve PDD puzzles from the code base and submit them to GitHub. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat && pdd -v -f /tmp/20200929-32395-l28yhc [1]: + set -e + set -o pipefail + cd /tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat + pdd -v -f /tmp/20200929-32395-l28yhc My version is 0.20.5 Ruby version is 2.6.0 at...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat && pdd -v -f /tmp/20200929-32395-l28yhc [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat
+ pdd -v -f /tmp/20200929-32395-l28yhc

My version is 0.20.5
Ruby version is 2.6.0 at x86_64-linux
Reading /tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat
399 file(s) found, 361 excluded
/tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat/diktat-rules/src/test/resources/test/paragraph3/src/main/A/FileSize2000.kt is a binary file (0 bytes)
/tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat/logo-1024.png is a binary file (210617 bytes)
/tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat/diktat-test-framework/src/main/resources/config.properties is a binary file (0 bytes)
/tmp/0pdd20200927-12-1vn5scd/cqfn/diKTat/info/diktat.jpg is a binary file (98328 bytes)
Reading diktat-common/pom.xml...
Reading diktat-common/src/main/resources/log4j.properties...
Reading diktat-common/src/main/kotlin/org/cqfn/diktat/common/config/rules/RulesConfigReader.kt...
Reading diktat-common/src/main/kotlin/org/cqfn/diktat/common/config/reader/ApplicationProperties.kt...
Reading diktat-common/src/main/kotlin/org/cqfn/diktat/common/config/reader/JsonResourceConfigReader.kt...
Reading diktat-common/src/main/kotlin/org/cqfn/diktat/common/cli/CliArgument.kt...
Reading diktat-common/src/test/resources/test-rules-config.yml...
Reading diktat-common/src/test/kotlin/org/cqfn/diktat/test/ConfigReaderTest.kt...
Reading diktat-analysis.yml...
Reading .git-hooks/pre-commit.sh...
Reading .git-hooks/commit-msg.sh...
Reading LICENSE...
Reading diktat-ruleset/pom.xml...
Reading .gitignore...
Reading README.md...
Reading RELEASING.md...
Reading .gitattributes...
Reading diktat-rules/pom.xml...
Reading diktat-rules/src/main/resources/diktat-analysis.yml...
Reading diktat-rules/src/main/resources/diktat-analysis-huawei.yml...
Reading diktat-rules/src/main/resources/META-INF/services/com.pinterest.ktlint.core.RuleSetProvider...
Reading diktat-rules/src/main/resources/log4j.properties...
Reading diktat-rules/src/main/kotlin/generated/WarningNames.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/SortRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/comments/HeaderCommentRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/comments/CommentsRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/WhenMustHaveElseRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/PackageNaming.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/SingleLineStatementsRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/StringTemplateFormatRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/AnnotationNewLineRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/StringConcatenationRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/BracesInConditionalsAndLoopsRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/WhiteSpaceRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/TypeAliasRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/ConsecutiveSpacesRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/EmptyBlock.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/identifiers/LocalVariablesRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/FileNaming.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/LongNumericalValuesSeparatedRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/calculations/AccurateCalculationsRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/DiktatRuleSetProvider.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/VariableGenericTypeDeclarationRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/ClassLikeStructuresOrderRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/IdentifierNaming.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/LineLength.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/BlockStructureBraces.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/kdoc/KdocFormatting.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/kdoc/CommentsFormatting.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/kdoc/KdocMethods.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/kdoc/KdocComments.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/MultipleModifiersSequence.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/EnumsSeparated.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/files/IndentationRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/files/FileStructureRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/files/FileSize.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/files/BlankLinesRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/rules/files/NewlinesRule.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/SequenceUtils.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/ASTConstants.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/AstNodeUtils.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KDocUtils.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/StringCaseUtils.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/indentation/Checkers.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/indentation/CustomIndentationChecker.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/indentation/IndentationConfig.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/StringUtils.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParser.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/PsiUtils.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParseException.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/utils/FunctonASTNodeUtils.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/constants/Warnings.kt...
Reading diktat-rules/src/main/kotlin/org/cqfn/diktat/ruleset/generation/Generation.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/MisplacedHeaderKdocNoCopyrightExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/AutoCopyrightExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/NewlineAfterHeaderKdocExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/MisplacedHeaderKdocAppendedCopyrightExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/MisplacedHeaderKdocTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/AutoCopyrightTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/MisplacedHeaderKdocExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/MisplacedHeaderKdocNoCopyrightTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/CopyrightDifferentYearExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/NewlineAfterHeaderKdocTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/CopyrightDifferentYearTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/header/MisplacedHeaderKdocAppendedCopyrightTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/KdocFormattingFullTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/SpecialTagsInKdocExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/BasicTagsEmptyLinesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/BasicTagsEmptyLineBeforeTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/KdocFormattingFullExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/OrderedTagsTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/BasicTagsEmptyLinesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/KdocCodeBlockFormattingExampleExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/KdocCodeBlocksFormattingExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/BasicTagsEmptyLineBeforeExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/OrderedTagsExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/KdocCodeBlockFormattingExampleTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/DeprecatedTagTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/SpecialTagsInKdocTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/SpacesAfterTagExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/KdocEmptyLineExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/KdocCodeBlocksFormattingTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/MissingKdocWithModifiersTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/ParamTagInsertionExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/ParamTagInsertionTested.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/MissingKdocTested.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/EmptyKdocExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/KdocMethodsFullTested.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/EmptyKdocTested.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/MissingKdocWithModifiersExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/ThrowsTagInsertionExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/MissingKdocExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/KdocMethodsFullExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/ReturnTagInsertionTested.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/ReturnTagInsertionExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/package/src/main/kotlin/org/cqfn/diktat/kdoc/methods/ThrowsTagInsertionTested.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/SpacesAfterTagTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/DeprecatedTagExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph2/kdoc/KdocEmptyLineTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/enum_/EnumValueCaseTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/enum_/EnumValueCaseExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/identifiers/PrefixInNameExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/identifiers/ConstantValNameTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/identifiers/VariableNamingExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/identifiers/ConstantValNameExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/identifiers/LambdaArgTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/identifiers/VariableNamingTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/identifiers/PrefixInNameTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/identifiers/LambdaArgExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/object_/IncorrectObjectNameExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/object_/IncorrectObjectNameTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/class_/IncorrectClassNameExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/class_/IncorrectClassNameTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/function/FunctionNameExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/function/FunctionNameTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/generic/GenericFunctionExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/generic/GenericFunctionTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/FixUnderscoreTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/FixUnderscoreExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/MissingDomainNameTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/FixUpperExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/MissingDomainNameExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/some/FixMissingExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/some/FixIncorrectTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/some/FixMissingTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/some/FixIncorrectExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/org/cqfn/diktat/some/name/FixMissingExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/org/cqfn/diktat/some/name/FixPackageRegressionExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/org/cqfn/diktat/some/name/FixPackageRegressionTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/org/cqfn/diktat/some/name/FixIncorrectTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/org/cqfn/diktat/some/name/FixMissingTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/src/main/kotlin/org/cqfn/diktat/some/name/FixIncorrectExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/package/FixUpperTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/file/fileNameTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph1/naming/file/file_nameTest.kt...
Reading diktat-rules/src/test/resources/test/funcTest/FunctionalTestFile.kt...
Reading diktat-rules/src/test/resources/test/paragraph4/generics/VariableGenericTypeDeclarationExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph4/generics/VariableGenericTypeDeclarationTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/enum_separated/EnumSeparatedTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/enum_separated/EnumSeparatedExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/SemicolonsTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/SemicolonsExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/LParTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/FunctionalStyleTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/CommaTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/LambdaExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/LambdaTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/CommaExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/ExpressionBodyExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/ExpressionBodyTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/OperatorsTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/FunctionalStyleExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/LParExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/newlines/OperatorsExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/string_template/StringTemplateExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/string_template/StringTemplateTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/multiple_modifiers/AnnotationTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/multiple_modifiers/ModifierTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/multiple_modifiers/ModifierExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/multiple_modifiers/AnnotationExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/else_expected/ElseInWhenExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/else_expected/ElseInWhenTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/empty_block/EmptyBlockExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/empty_block/EmptyBlockTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/annotations/AnnotationConstructorSingleLineExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/annotations/AnnotationSingleLineTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/annotations/AnnotationConstructorSingleLineTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/annotations/AnnotationSingleLineExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/IfElseBracesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/IfElseBracesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/TryBraceTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/WhenBranchesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/LoopsBracesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/ClassBracesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/DoWhileBracesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/TryBraceExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/DoWhileBracesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/LoopsBracesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/WhenBranchesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/block_brace/ClassBracesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/sort_error/ConstantsTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/sort_error/EnumSortTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/sort_error/ConstantsExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/sort_error/EnumSortExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/statement/StatementTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/statement/StatementExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/braces/WhenBranchesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/braces/IfElseBraces1Test.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/braces/LoopsBracesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/braces/IfElseBraces1Expected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/braces/DoWhileBracesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/braces/DoWhileBracesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/braces/LoopsBracesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/braces/WhenBranchesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/indentation/IndentFullExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/indentation/IndentationFull1Test.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/indentation/IndentFullTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/indentation/IndentationFull1Expected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/ReorderingImportsExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/CopyrightCommentPositionExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/MissingBlankLinesBetweenBlocksTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/RedundantBlankLinesBetweenBlocksTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/FileAnnotationTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/FileAnnotationExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/BlankLinesBetweenBlocksExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/CopyrightCommentPositionTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/DeclarationsInClassOrderExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/ReorderingImportsTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/file_structure/DeclarationsInClassOrderTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_numbers/LongNumericalValuesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_numbers/LongNumericalValuesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/LBraceAfterKeywordExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/TooManySpacesEnumExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/LambdaAsArgumentExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/EolSpacesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/LambdaAsArgumentTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/EqualsExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/WhiteSpaceBeforeLParTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/LBraceAfterKeywordTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/TooManySpacesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/TooManySpacesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/LbraceExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/AnnotationTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/LbraceTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/TooManySpacesEnumTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/WhiteSpaceBeforeLBraceTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/BinaryOpTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/EolSpacesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/BinaryOpExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/WhiteSpaceBeforeLBraceExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/WhiteSpaceBeforeLParExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/EqualsTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/spaces/AnnotationExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongLineExpressionExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongExpressionNoFixTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongLineFunTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongLineCommentExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongLineExpressionTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongShortRValueTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongLineCommentTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongShortRValueExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongLineRValueTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongLineRValueExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongLineFunExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/long_line/LongExpressionNoFixExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/src/main/A/FileSizeA.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/src/main/C/FileSizeC.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/src/main/B/FileSizeB.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/src/main/FileSizeLarger.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/blank_lines/RedundantBlankLinesTest.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/blank_lines/CodeBlockWithBlankLinesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/blank_lines/RedundantBlankLinesExpected.kt...
Reading diktat-rules/src/test/resources/test/paragraph3/blank_lines/CodeBlockWithBlankLinesTest.kt...
Reading diktat-rules/src/test/resources/test/smoke/src/main/kotlin/Example2Expected.kt...
Reading diktat-rules/src/test/resources/test/smoke/src/main/kotlin/Example2Test.kt...
Reading diktat-rules/src/test/resources/test/smoke/src/main/kotlin/Example1Expected.kt...
Reading diktat-rules/src/test/resources/test/smoke/src/main/kotlin/Example1Test.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/util/TestUtils.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/util/DiktatRuleSetProvider4Test.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/util/LintTestBase.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/util/FixTestBase.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/utils/FunctionASTNodeUtilsTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/utils/SuppressTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/utils/AvailableRulesDocTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/utils/StringCaseUtilsTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/utils/RulesConfigYamlTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/utils/ASTNodeUtilsTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/utils/KotlinParserTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/EmptyBlockWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/StringTemplateRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/BracesRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/WhenMustHaveElseWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/ConsecutiveSpacesRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/LineLengthFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/SingleLineStatementsRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/WhenMustHaveElseFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/ClassLikeStructuresOrderRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/LongNumericalValuesSeparatedFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/TypeAliasRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/IndentationRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/BracesRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/AnnotationNewLineRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/LongNumericalValuesSeparatedWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/StringConcatenationWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/MultipleModifiersSequenceWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/ConsecutiveSpacesRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/SingleLineStatementsRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/EmptyBlockFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/EnumsSeparatedFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/spaces/WhiteSpaceRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/spaces/WhiteSpaceRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/LineLengthWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/FileSizeWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/AnnotationNewLineRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/ClassLikeStructuresOrderFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/BlockStructureBracesFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/SortRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/LocalVariablesWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/EnumsSeparatedWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/SortRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/StringTemplateRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/files/BlankLinesWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/files/NewlinesRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/files/NewlinesRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/files/BlankLinesFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/BlockStructureBracesWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/MultipleModifiersSequenceFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/FileStructureRuleTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/IndentationRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter3/FileStructureRuleTestFix.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/comments/CommentedCodeTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/KdocMethodsTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/HeaderCommentRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/HeaderCommentRuleTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/KdocWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/KdocFormattingFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/KdocFormattingTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/KdocParamPresentWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/CommentsFormattingFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/KdocMethodsFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter2/CommentsFormattingTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter4/VariableGenericTypeDeclarationRuleFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter4/AccurateCalculationsWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter4/VariableGenericTypeDeclarationRuleWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter1/EnumValueCaseTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter1/PackageNamingWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter1/MethodNamingWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter1/IdentifierNamingFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter1/PackagePathFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter1/PackageNamingFixTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/chapter1/IdentifierNamingWarnTest.kt...
Reading diktat-rules/src/test/kotlin/org/cqfn/diktat/ruleset/smoke/DiktatSmokeTest.kt...
Reading pom.xml...
Reading .github/pull_request_template.md...
Reading .github/dependabot.yml...
Reading .github/codecov.yml...
Reading .github/workflows/diktat.yml...
Reading .github/workflows/functional_tests.yml...
Reading .github/workflows/diktat_snapshot.yml...
Reading .github/workflows/build_and_test.yml...
Reading .github/workflows/detekt.yml...
Reading .github/workflows/release.yml...
Reading .github/workflows/metrics_for_master.yml...
Reading .github/ISSUE_TEMPLATE/config.yml...
Reading CODE_OF_CONDUCT.md...
Reading diktat-test-framework/pom.xml...
Reading diktat-test-framework/src/main/resources/options.json...
Reading diktat-test-framework/src/main/resources/log4j.properties...
Reading diktat-test-framework/src/main/resources/org/cqfn/diktat/test/framework/test_arguments.json...
Reading diktat-test-framework/src/main/resources/org/cqfn/diktat/test/framework/test_configs/functional/1_9_a_special_space_cases.json...
Reading diktat-test-framework/src/main/resources/org/cqfn/diktat/test/framework/test_configs/functional/1_3_a_package_naming.json...
Reading diktat-test-framework/src/main/resources/org/cqfn/diktat/test/framework/test_configs/functional/1_3_b_package_naming.json...
Reading diktat-test-framework/src/main/resources/org/cqfn/diktat/test/framework/test_framework.properties...
Reading diktat-test-framework/src/main/java/org/cqfn/diktat/test/framework/common/StreamGobbler.java...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/TestEntry.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/processing/TestComparatorUnit.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/processing/TestCheckWarn.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/processing/FileComparator.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/processing/TestCompare.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/processing/TestProcessingFactory.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/processing/TestMixed.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/config/TestConfig.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/config/TestArgumentsReader.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/config/TestFrameworkProperties.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/config/TestConfigReader.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/common/ExecutionResult.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/common/LocalCommandExecutor.kt...
Reading diktat-test-framework/src/main/kotlin/org/cqfn/diktat/test/framework/common/TestBase.kt...
Reading logo.svg...
Reading build.gradle.kts...
Reading info/available-rules.md...
Reading info/diktat-kotlin-coding-style-guide-en.md...
ERROR: info/diktat-kotlin-coding-style-guide-en.md; puzzle at line #353; TODO found, but puzzle can't be parsed, most probably because TODO is not followed by a puzzle marker, as this page explains: https://github.com/yegor256/pdd#how-to-format
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/yegor256/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/yegor256/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:66:in `rescue in block in xml'
/app/objects/git_repo.rb:63:in `block in xml'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/tempfile.rb:295:in `open'
/app/objects/git_repo.rb:62:in `xml'
/app/objects/puzzles.rb:36:in `deploy'
/app/objects/job.rb:38:in `proceed'
/app/objects/job_starred.rb:33:in `proceed'
/app/objects/job_recorded.rb:32:in `proceed'
/app/objects/job_emailed.rb:35:in `proceed'
/app/objects/job_commiterrors.rb:36:in `proceed'
/app/objects/job_detached.rb:48:in `exclusive'
/app/objects/job_detached.rb:36:in `block in proceed'
/app/objects/job_detached.rb:36:in `fork'
/app/objects/job_detached.rb:36:in `proceed'
/app/0pdd.rb:358:in `block in <top (required)>'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1635:in `block in compile!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:992:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1011:in `route_eval'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:992:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1040:in `block in process_route'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1038:in `process_route'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:990:in `block in route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:989:in `each'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:989:in `route!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1097:in `block in dispatch!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1094:in `dispatch!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `block in call!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `block in invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `catch'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1076:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:924:in `call!'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:913:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/xss_header.rb:18:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/path_traversal.rb:16:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/json_csrf.rb:26:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/base.rb:50:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.4/lib/rack/protection/frame_options.rb:31:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/logger.rb:15:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/common_logger.rb:33:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:231:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:224:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/head.rb:12:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/method_override.rb:22:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:194:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1957:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `block in call'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1729:in `synchronize'
/app/vendor/bundle/ruby/2.6.0/gems/sinatra-2.0.4/lib/sinatra/base.rb:1502:in `call'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.6/lib/rack/handler/webrick.rb:86:in `service'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:140:in `service'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/httpserver.rb:96:in `run'
/app/vendor/ruby-2.6.0/lib/ruby/2.6.0/webrick/server.rb:307:in `block in start_thread'

Please sign in to comment.