override fun visitClass()

in src/main/kotlin/com/dd/detektcustomrules/rules/NamingBackingProperties.kt [17:45]


    override fun visitClass(klass: KtClass) {
        super.visitClass(klass)

        val properties = klass.getProperties()
        val fields = properties.filterPrivate()
        val propsWithGetter = properties.filterPublicWithGetter()

        for (prop in propsWithGetter) {
            val backingFields = fields.filter {
                prop.getter?.text?.contains(it.name ?: "") ?: false
            }

            for (field in backingFields) {
                val fieldName = field.name ?: ""

                // Report violation if fieldName isn't prefixed with underscore
                // or it doesn't exactly match with the real property name
                if (!fieldName.startsWith("_") || fieldName.removePrefix("_") != prop.name) {
                    report(
                        CodeSmell(
                            issue = issue,
                            entity = Entity.atName(field),
                            message = issue.description
                        )
                    )
                }
            }
        }
    }