Configuration for Compose
Relevant rule sets and their configuration options for Compose styles & usage. The following are being used as reference for Compose usage:
FunctionNaming
See FunctionNaming.
@Composable
functions that return Unit
are named using PascalCase
. Detekt may see this as a violation:
@Composable
fun FooButton(text: String, onClick: () -> Unit) { // Violation for FooButton()
Configurations:
Choose either of the following options:
- Augment default
functionPattern
to'[a-zA-Z][a-zA-Z0-9]*'
(default is:'[a-z][a-zA-Z0-9]*'
) - Set
ignoreAnnotated
to['Composable']
TopLevelPropertyNaming
Compose guidelines prescribe CamelCase
for top-level constants.
Default Style:
private val FOO_PADDING = 16.dp
Compose Style:
private val FooPadding = 16.dp
Configurations:
- Set
constantPattern
to'[A-Z][A-Za-z0-9]*'
(default is:'[A-Z][_A-Z0-9]*'
)
LongParameterList
See LongParameterList.
Composables may boast more than the typical number of function arguments (albeit mostly with default values). For example, see OutlinedTextField.
Configurations:
- Set
functionThreshold
to a higher value - Additionally, can set
ignoreDefaultParameters = true
MagicNumber
See MagicNumber.
Class/companion object/top-level properties that declare objects such as Color(0xFFEA6D7E)
may be considered violations if they don't specify the named parameter (i.e. Color(color = 0xFFEA6D7E)
).
val color1 = Color(0xFFEA6D7E) // Violation
class Foo {
val color2 = Color(0xFFEA6D7E) // Violation
companion object {
val color3 = Color(0xFFEA6D7E) // No violation if ignoreCompanionObjectPropertyDeclaration = true by default
}
}
Configurations:
- Set
ignorePropertyDeclaration = true
,ignoreCompanionObjectPropertyDeclaration = true
(default)
UnusedPrivateMember
See UnusedPrivateMember.
Detekt may see composable preview functions, i.e. those marked with @Preview
, as unused.
@Preview
@Composable
private fun FooLazyColumnPreview() { // Violation for FooLazyColumnPreview()
FooLazyColumn()
}
Configurations:
- Set
ignoreAnnotated
to['Preview']