# Add Konsist Existing To Project (Baseline)

Retrofitting Konsist into a project that hasn't followed strict structural guidelines can pose initial challenges, necessitating a thoughtful approach to smoothly transition without disrupting ongoing development. Unlike most linters, which provide a [baseline file](https://developer.android.com/studio/write/lint#snapshot), Konsist follows a different methodology (for now).

{% hint style="success" %}
The baseline file will be added in the future.
{% endhint %}

There are two approaches that can be employed when retrofitting Konsist into an existing project[#create-more-granular-scopes](#create-more-granular-scopes "mention") and [#suppress-annotation](#suppress-annotation "mention").

## Create Granular Scopes

Scope represents a set of Kotlin files. The scope allows to verification of all Kotlin files in the project or only a subset of the project code base.

{% hint style="info" %}
See [Create The Scope](/writing-tests/koscope.md).
{% endhint %}

When refactoring an existing application, you can either choose to first refactor a module and then add a Konsist test or initially add the Konsist test to identify errors, followed by the necessary refactor. Both strategies aim to ensure modules align with Konsist's structural guidelines.

Consider this The `MyDiet` application with feature 3 modules:

<figure><img src="/files/yoZLAhfzv6EEsq2zUzSX" alt=""><figcaption></figcaption></figure>

At first, the Konsist test can be applied to a single module:

```kotlin
Konsist
    .scopeFromModule("featureCaloryCalculator")
    .classes()
    .assertTrue { it.hasTestClasses() }
```

{% hint style="info" %}
To review the content of a given scope see [Debug Konsist Test](/features/debug-konsist-test.md).
{% endhint %}

As refactoring proceeds and code gets aligned, the Konsist scope can be extended to another feature module (`featureGroceryListGenerator`):

```kotlin
Konsist
    .scopeFromModule("featureCaloryCalculator", "featureGroceryListGenerator")
    .classes()
    .assertTrue { it.hasTest() }
```

When entire code base (all modules) are aligned with the Konsist tests, the scope can be retrieved from the entire project:

```kotlin
Konsist
    .scopeFromProject()
    .classes()
    .assertTrue { it.hasTest() }
```

Usage of project scope (`scopeFromProject` ) is a recommended approach because it helps to guard future modules without modifying the existing Konsist test.

Konsist provides a flexible API to create scopes from modules, source sets, packages, files, etc., and combine these scopes together. See [Create The Scope](/writing-tests/koscope.md).

## Suppress Annotation

The second approach, Suppress Annotation, may be helpful when to Konsist swiftly without making substantial alterations to the existing kotlin files. See [#suppress](#suppress "mention").


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.konsist.lemonappdev.com/features/add-konsist-existing-project.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
