Skip to content

Commit

Permalink
Merge pull request #13635 from woocommerce/13634-woo-pos-it-seems-tha…
Browse files Browse the repository at this point in the history
…t-custom-detekt-rules-work-on-the-code-outside-of-woopos-package

[Woo POS] Custom detekt rules work on the code outside of woopos package
  • Loading branch information
ThomazFB authored Feb 27, 2025
2 parents ed38b4a + 8a70a31 commit 002a460
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 53 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:Suppress("WooPosDesignSystemButtonUsageRule")

package com.woocommerce.android.ui.woopos.common.composeui.component

import androidx.compose.foundation.BorderStroke
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:Suppress("WooPosDesignSystemTextUsageRule")

package com.woocommerce.android.ui.woopos.common.composeui.component

import androidx.compose.material3.Text
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.woocommerce.android.detektrules.woopos

import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.Rule
import org.jetbrains.kotlin.psi.KtFile

abstract class WooPosBaseDetektRule(config: Config) : Rule(config) {
private val targetPackagePrefix = "com.woocommerce.android.ui.woopos"

override fun visitKtFile(file: KtFile) {
if (file.packageFqName.asString().startsWith(targetPackagePrefix)) {
super.visitKtFile(file)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,12 @@ import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.Debt
import io.gitlab.arturbosch.detekt.api.Entity
import io.gitlab.arturbosch.detekt.api.Issue
import io.gitlab.arturbosch.detekt.api.Rule
import io.gitlab.arturbosch.detekt.api.Severity
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNameReferenceExpression

class WooPosDesignSystemButtonUsageRule(config: Config) : Rule(config) {
private val allowedPackagePrefix = "com.woocommerce.android.ui.woopos.common.composeui.component"

class WooPosDesignSystemButtonUsageRule(config: Config) : WooPosBaseDetektRule(config) {
private val disallowedButtonNames = setOf("Button")

override val issue = Issue(
Expand All @@ -24,13 +20,6 @@ class WooPosDesignSystemButtonUsageRule(config: Config) : Rule(config) {
Debt.FIVE_MINS
)

override fun visitKtFile(file: KtFile) {
if (file.packageFqName.asString().startsWith(allowedPackagePrefix)) {
return
}
super.visitKtFile(file)
}

override fun visitCallExpression(expression: KtCallExpression) {
super.visitCallExpression(expression)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,11 @@ import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.Debt
import io.gitlab.arturbosch.detekt.api.Entity
import io.gitlab.arturbosch.detekt.api.Issue
import io.gitlab.arturbosch.detekt.api.Rule
import io.gitlab.arturbosch.detekt.api.Severity
import org.jetbrains.kotlin.com.intellij.psi.PsiElement
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtFile

class WooPosDesignSystemColorUsageRule(config: Config) : Rule(config) {
private val targetPackagePrefix = "com.woocommerce.android.ui.woopos"
class WooPosDesignSystemColorUsageRule(config: Config) : WooPosBaseDetektRule(config) {
private val allowedColorSources = listOf("MaterialTheme.colorScheme", "WooPosTheme.colors")
private val colorArguments = setOf(
"background",
Expand All @@ -32,12 +29,6 @@ class WooPosDesignSystemColorUsageRule(config: Config) : Rule(config) {
Debt.FIVE_MINS
)

override fun visitKtFile(file: KtFile) {
if (file.packageFqName.asString().startsWith(targetPackagePrefix)) {
super.visitKtFile(file)
}
}

override fun visitCallExpression(expression: KtCallExpression) {
super.visitCallExpression(expression)
expression.valueArguments.forEach { argument ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,11 @@ import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.Debt
import io.gitlab.arturbosch.detekt.api.Entity
import io.gitlab.arturbosch.detekt.api.Issue
import io.gitlab.arturbosch.detekt.api.Rule
import io.gitlab.arturbosch.detekt.api.Severity
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNameReferenceExpression

class WooPosDesignSystemCornerRadiusUsageRule(config: Config) : Rule(config) {
private val targetPackagePrefix = "com.woocommerce.android.ui.woopos"
class WooPosDesignSystemCornerRadiusUsageRule(config: Config) : WooPosBaseDetektRule(config) {
private val cornerRadiusFile = "WooPosCornerRadius"

override val issue = Issue(
Expand All @@ -22,12 +19,6 @@ class WooPosDesignSystemCornerRadiusUsageRule(config: Config) : Rule(config) {
Debt.FIVE_MINS
)

override fun visitKtFile(file: KtFile) {
if (file.packageFqName.asString().startsWith(targetPackagePrefix)) {
super.visitKtFile(file)
}
}

override fun visitCallExpression(expression: KtCallExpression) {
super.visitCallExpression(expression)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,11 @@ import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.Debt
import io.gitlab.arturbosch.detekt.api.Entity
import io.gitlab.arturbosch.detekt.api.Issue
import io.gitlab.arturbosch.detekt.api.Rule
import io.gitlab.arturbosch.detekt.api.Severity
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNameReferenceExpression

class WooPosDesignSystemSpacingUsageRule(config: Config) : Rule(config) {
private val targetPackagePrefix = "com.woocommerce.android.ui.woopos"
class WooPosDesignSystemSpacingUsageRule(config: Config) : WooPosBaseDetektRule(config) {
private val dpRegex = Regex("\\d+\\.dp")
private val dpWordRegex = Regex("\\b\\d+\\.dp\\b")

Expand All @@ -23,11 +20,6 @@ class WooPosDesignSystemSpacingUsageRule(config: Config) : Rule(config) {
Debt.FIVE_MINS
)

override fun visitKtFile(file: KtFile) {
if (!file.packageFqName.asString().startsWith(targetPackagePrefix)) return
super.visitKtFile(file)
}

override fun visitCallExpression(expression: KtCallExpression) {
super.visitCallExpression(expression)
val callName = (expression.calleeExpression as? KtNameReferenceExpression)?.getReferencedName() ?: return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,19 @@ import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.Debt
import io.gitlab.arturbosch.detekt.api.Entity
import io.gitlab.arturbosch.detekt.api.Issue
import io.gitlab.arturbosch.detekt.api.Rule
import io.gitlab.arturbosch.detekt.api.Severity
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNameReferenceExpression

class WooPosDesignSystemTextUsageRule(config: Config) : Rule(config) {
private val allowedPackagePrefix = "com.woocommerce.android.ui.woopos.common.composeui.component"

class WooPosDesignSystemTextUsageRule(config: Config) : WooPosBaseDetektRule(config) {
override val issue = Issue(
javaClass.simpleName,
Severity.Style,
"Standard Compose Text should not be used. Use WooPosText instead.",
Debt.FIVE_MINS
)

override fun visitKtFile(file: KtFile) {
if (file.packageFqName.asString().startsWith(allowedPackagePrefix)) {
return
}
super.visitKtFile(file)
}

override fun visitCallExpression(expression: KtCallExpression) {
super.visitCallExpression(expression)

Expand Down

0 comments on commit 002a460

Please sign in to comment.