From 482ff719edbb728827976622cef63c876cb6676e Mon Sep 17 00:00:00 2001 From: Izabela Zawadzka Date: Mon, 15 Apr 2019 13:03:45 +0200 Subject: Add internal modifiers to comply with new HvVesCustomRule Change-Id: I33ad24179d05ded58f6784544be9bbdd56210720 Signed-off-by: Izabela Zawadzka Issue-ID: DCAEGEN2-1438 --- .../veshv/analysis/PublicModifiersInImpl.kt | 37 +++++++++++++--------- .../src/main/resources/onap-detekt-config.yml | 2 +- 2 files changed, 23 insertions(+), 16 deletions(-) (limited to 'build') diff --git a/build/hv-collector-analysis/src/main/kotlin/org/onap/dcae/collectors/veshv/analysis/PublicModifiersInImpl.kt b/build/hv-collector-analysis/src/main/kotlin/org/onap/dcae/collectors/veshv/analysis/PublicModifiersInImpl.kt index 027cadea..45e80069 100644 --- a/build/hv-collector-analysis/src/main/kotlin/org/onap/dcae/collectors/veshv/analysis/PublicModifiersInImpl.kt +++ b/build/hv-collector-analysis/src/main/kotlin/org/onap/dcae/collectors/veshv/analysis/PublicModifiersInImpl.kt @@ -25,25 +25,32 @@ import org.jetbrains.kotlin.psi.psiUtil.isPublic class PublicModifiersInImpl(config: Config = Config.empty) : Rule(config) { override val issue: Issue = Issue(javaClass.simpleName, Severity.Maintainability, - ISSUE_DESCRIPTION, Debt(mins=10)) + ISSUE_DESCRIPTION, Debt(mins = 10)) override fun visitKtFile(file: KtFile) { super.visitKtFile(file) - if(file.packageFqName.toString().contains("impl")) { - ImplVisitor.also { - file.accept(it) - if(it.publicDeclarations.isNotEmpty()){ - for(entity in it.publicDeclarations) - report(CodeSmell(issue, entity, REPORT_MESSAGE)) - it.publicDeclarations.clear() - } - } + if (file.packageFqName.toString().contains("impl")) { + checkAccessModifiers(file) } } + private fun checkAccessModifiers(file: KtFile) { + val implVisitor = ImplVisitor() + + file.accept(implVisitor) + if (implVisitor.publicDeclarations.isNotEmpty()) { + reportCodeSmells(implVisitor) + } + } + + private fun reportCodeSmells(it: ImplVisitor) { + for (entity in it.publicDeclarations) + report(CodeSmell(issue, entity, REPORT_MESSAGE)) + } + companion object { - private val REPORT_MESSAGE = """ + private val REPORT_MESSAGE = """ Implementation package members cannot have public declarations. Please, add `internal` modifier for this element to disallow usage outside of module """.trimIndent() @@ -51,22 +58,22 @@ class PublicModifiersInImpl(config: Config = Config.empty) : Rule(config) { } } -private object ImplVisitor: DetektVisitor(){ +private class ImplVisitor : DetektVisitor() { var publicDeclarations = mutableListOf() override fun visitClassOrObject(classOrObject: KtClassOrObject) { - if(classOrObject.isTopLevel() && classOrObject.isPublic){ + if (classOrObject.isTopLevel() && classOrObject.isPublic) { publicDeclarations.add(Entity.from(classOrObject)) } } override fun visitNamedFunction(function: KtNamedFunction) { - if(function.isTopLevel && function.isPublic){ + if (function.isTopLevel && function.isPublic) { publicDeclarations.add(Entity.from(function)) } } override fun visitProperty(property: KtProperty) { - if(property.isTopLevel && property.isPublic) publicDeclarations.add(Entity.from(property)) + if (property.isTopLevel && property.isPublic) publicDeclarations.add(Entity.from(property)) } } \ No newline at end of file diff --git a/build/hv-collector-analysis/src/main/resources/onap-detekt-config.yml b/build/hv-collector-analysis/src/main/resources/onap-detekt-config.yml index b45f6b64..a5dd275e 100644 --- a/build/hv-collector-analysis/src/main/resources/onap-detekt-config.yml +++ b/build/hv-collector-analysis/src/main/resources/onap-detekt-config.yml @@ -480,4 +480,4 @@ HvVesCustomRules: SuboptimalLoggerUsage: active: false PublicModifiersInImpl: - active: false + active: true -- cgit 1.2.3-korg