# Configuration for Compose | Detekt
Relevant rule sets and their configuration options for Compose styles & usage. The following are being used as reference for Compose usage:
Keywords: compose,config,configuration,jetpack-compose,rules

Skip to main content

# Configuration for Compose

Relevant rule sets and their configuration options for Compose styles & usage. The following are being used as reference for Compose usage:

- Compose API Guidelines
- Compose source

### 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​

See 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']`