From 731e68403e0bc286d609b9f6ad363a2c4c5c0d22 Mon Sep 17 00:00:00 2001 From: Maksim Pozdeev Date: Thu, 4 Aug 2022 14:04:35 +0400 Subject: [PATCH 1/4] Fixed cdp linter and android linter --- .../static_analysis/linters/AndroidLinter.kt | 39 +++++++++++-------- .../java/static_analysis/linters/CpdLinter.kt | 1 + 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt index fa6ff5b..5365ffe 100644 --- a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt +++ b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt @@ -9,28 +9,33 @@ import static_analysis.errors.StaticAnalysisError import static_analysis.plugins.StaticAnalysisExtension import static_analysis.utils.typedChildren import static_analysis.utils.xmlParser +import java.io.FileNotFoundException class AndroidLinter : Linter { override val name: String = "Android lint" - override fun getErrors(project: Project): List = xmlParser(project.getLintReportFile()) - .typedChildren() - .filter { it.name() == "issue" && (it.attribute("severity") as String) == "Error" } - .map { errorNode -> - errorNode - .typedChildren() - .filter { it.name() == "location" } - .map { locationNode -> - AndroidLintError( - filePath = locationNode.attribute("file") as String, - fileLine = locationNode.attribute("line") as String?, - errorId = errorNode.attribute("id") as String, - description = errorNode.attribute("message") as String - ) - } - } - .flatten() + override fun getErrors(project: Project): List = try { + xmlParser(project.getLintReportFile()) + .typedChildren() + .filter { it.name() == "issue" && (it.attribute("severity") as String) == "Error" } + .map { errorNode -> + errorNode + .typedChildren() + .filter { it.name() == "location" } + .map { locationNode -> + AndroidLintError( + filePath = locationNode.attribute("file") as String, + fileLine = locationNode.attribute("line") as String?, + errorId = errorNode.attribute("id") as String, + description = errorNode.attribute("message") as String + ) + } + } + .flatten() + } catch (ex: FileNotFoundException) { + listOf() + } override fun setupForProject(project: Project, extension: StaticAnalysisExtension) { project.beforeEvaluate { diff --git a/gradle/plugins/src/main/java/static_analysis/linters/CpdLinter.kt b/gradle/plugins/src/main/java/static_analysis/linters/CpdLinter.kt index 68e4be7..c20433f 100644 --- a/gradle/plugins/src/main/java/static_analysis/linters/CpdLinter.kt +++ b/gradle/plugins/src/main/java/static_analysis/linters/CpdLinter.kt @@ -39,6 +39,7 @@ class CpdLinter : Linter { isSkipLexicalErrors = true language = "kotlin" minimumTokenCount = 60 + encoding = "UTF-8" } tasks.withType { reports.xml.required.set(true) From 71765283c19b247567927b1ec9c62908308b459e Mon Sep 17 00:00:00 2001 From: Maksim Pozdeev Date: Thu, 4 Aug 2022 15:12:34 +0400 Subject: [PATCH 2/4] Changed try/catch to check file existence --- .../static_analysis/linters/AndroidLinter.kt | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt index 88063e9..bf4bf15 100644 --- a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt +++ b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt @@ -9,32 +9,34 @@ import static_analysis.errors.StaticAnalysisError import static_analysis.plugins.StaticAnalysisExtension import static_analysis.utils.typedChildren import static_analysis.utils.xmlParser -import java.io.FileNotFoundException class AndroidLinter : Linter { override val name: String = "Android lint" - override fun getErrors(project: Project): List = try { - xmlParser(project.getLintReportFile()) - .typedChildren() - .filter { it.name() == "issue" && (it.attribute("severity") as String) == "Error" } - .map { errorNode -> - errorNode - .typedChildren() - .filter { it.name() == "location" } - .map { locationNode -> - AndroidLintError( - filePath = locationNode.attribute("file") as String, - fileLine = locationNode.attribute("line") as String?, - errorId = errorNode.attribute("id") as String, - description = errorNode.attribute("message") as String - ) - } - } - .flatten() - } catch (ex: FileNotFoundException) { - listOf() + override fun getErrors(project: Project): List { + val lintRepostFile = project.getLintReportFile() + return if (lintRepostFile.exists()) { + xmlParser(project.getLintReportFile()) + .typedChildren() + .filter { it.name() == "issue" && (it.attribute("severity") as String) == "Error" } + .map { errorNode -> + errorNode + .typedChildren() + .filter { it.name() == "location" } + .map { locationNode -> + AndroidLintError( + filePath = locationNode.attribute("file") as String, + fileLine = locationNode.attribute("line") as String?, + errorId = errorNode.attribute("id") as String, + description = errorNode.attribute("message") as String + ) + } + } + .flatten() + } else { + listOf() + } } override fun setupForProject(project: Project, extension: StaticAnalysisExtension) { From 427d838a12fcb3ef34cc9a96b374b8c798be00fb Mon Sep 17 00:00:00 2001 From: Maksim Pozdeev Date: Thu, 4 Aug 2022 15:14:09 +0400 Subject: [PATCH 3/4] Added reuse report file parameter --- .../src/main/java/static_analysis/linters/AndroidLinter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt index bf4bf15..5ff6e2c 100644 --- a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt +++ b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt @@ -17,7 +17,7 @@ class AndroidLinter : Linter { override fun getErrors(project: Project): List { val lintRepostFile = project.getLintReportFile() return if (lintRepostFile.exists()) { - xmlParser(project.getLintReportFile()) + xmlParser(lintRepostFile) .typedChildren() .filter { it.name() == "issue" && (it.attribute("severity") as String) == "Error" } .map { errorNode -> From e05b0df3317140819ca471135157b72905c00b98 Mon Sep 17 00:00:00 2001 From: Maksim Pozdeev Date: Thu, 4 Aug 2022 15:58:27 +0400 Subject: [PATCH 4/4] Changed listOf to emptyList --- .../src/main/java/static_analysis/linters/AndroidLinter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt index 5ff6e2c..9ca8b35 100644 --- a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt +++ b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt @@ -35,7 +35,7 @@ class AndroidLinter : Linter { } .flatten() } else { - listOf() + emptyList() } }