# Linter: Detecção de erros e verificações de qualidade

O Linter é uma ferramenta incorporada ao Canvas que identifica possíveis problemas de configuração e exibe alertas para ajudá-lo a detectá-los e corrigi-los mais rapidamente. A maioria dos alertas não exige correção imediata e não impede a criação dos seus fluxos.

## **Como os alertas funcionam**

Enquanto você constrói um pipeline ou cápsula, o Linter oferece recomendações baseadas em boas práticas para ajudar a melhorar o fluxo e identificar possíveis problemas na integração. Esses problemas podem ser críticos, impedindo que a integração seja executada ou implantada, ou alertas menores que orientam para uma configuração mais segura e eficiente.

## **Onde os alertas aparecem**

Os alertas são exibidos em dois locais:

* Diretamente no conector com problema (passe o mouse sobre o conector para detalhes), ou
* Na aba **Problemas** do Painel de Execução.

Cada alerta inclui uma breve descrição do problema e um link para a documentação. Ao visualizar alertas na aba **Problemas**, você pode clicar em **Configurar passo** para navegar diretamente até o conector e abrir seu formulário de configuração, independentemente do nível do fluxo.

<figure><img src="https://2518718503-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcO0A6g1dOsu8BiHYqO67%2Fuploads%2FFa3ihDsEuPeda8iwWjNq%2Flinter-painel-de-execu%C3%A7%C3%A3o.png?alt=media&#x26;token=78555f02-2709-422a-ba73-358008af9b82" alt=""><figcaption></figcaption></figure>

## **Tipos de alertas**

Os alertas são divididos em **Erros** e **Avisos**.

### **Erros**

Alertas de **Erro** indicam falhas graves na criação do pipeline ou cápsula. Eles devem ser corrigidos antes de salvar o projeto.

Os erros são categorizados da seguinte forma:

* **Estrutura:** Problemas estruturais que impedem o processamento do fluxo de integração.

### **Avisos**

Alertas de **Aviso** indicam oportunidades de melhoria na criação do pipeline ou cápsula.

Os avisos são categorizados da seguinte forma:

* **Boas práticas:** Hábitos de construção que melhoram a performance do pipeline ou cápsula e facilitam a manutenção futura.

## **Lista de alertas**

### **Trigger**

<details>

<summary><strong>Trigger não configurado. Para implantar o pipeline, configure o trigger (Boas práticas).</strong></summary>

O trigger define como a execução do pipeline se inicia. Para configurá-lo, selecione uma das opções disponíveis e conecte-a ao início do fluxo. Essa configuração é necessária para implantação. Para mais detalhes, consulte a documentação [Visão geral de Triggers](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/overview).

{% hint style="info" %}
É possível salvar o pipeline sem configurar o trigger, mas não será possível implantá-lo.
{% endhint %}

</details>

### **Choice**

<details>

<summary><strong>O conector Choice precisa ter ao menos um "when" configurado (Estrutura).</strong></summary>

O Choice permite ramificação condicional dentro de um pipeline ou cápsula. Para utilizá-lo corretamente, configure pelo menos uma condição **when**. Cada condição define um caminho específico para o fluxo. [Saiba mais](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/choice).

</details>

<details>

<summary><strong>O conector Choice precisa ter um "otherwise" configurado (Estrutura).</strong></summary>

A condição **otherwise** é executada quando nenhuma das condições **when** se aplica. Configure pelo menos uma condição **otherwise** para garantir a execução contínua do fluxo. [Saiba mais](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/choice).

</details>

### **Conectores de subfluxo**

Os seguintes alertas se aplicam a conectores que estruturam subfluxos:

* [Block Execution](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/block-execution)
* [Do While](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/do-while)
* [For Each](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/for-each)
* [Retry](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/retry)
* [Stream Excel](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-excel)
* [Stream File Reader](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-file-reader)
* [Stream File Reader Pattern](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-file-reader-pattern)
* [Stream JSON File Reader](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-json-file-reader)
* [Stream XML File Reader](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/files/stream-xml-file-reader)
* [Stream DB V3](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/structured-data/stream-db-v3)

<details>

<summary><strong>O OnProcess precisa ter ao menos um conector conectado (Estrutura).</strong></summary>

O OnProcess define um dos subfluxos em um pipeline ou cápsula. Adicione e conecte pelo menos um conector para que o fluxo não seja interrompido.

</details>

<details>

<summary><strong>O OnException precisa ter ao menos um conector conectado (Boas práticas).</strong></summary>

O OnException trata exceções que ocorrem durante a execução do OnProcess. Adicione e conecte pelo menos um conector para garantir o tratamento adequado de erros.

{% hint style="info" %}
Esta regra não se aplica ao conector **Block Execution**.
{% endhint %}

</details>

<details>

<summary><strong>Existe ao menos um problema dentro do OnProcess (Estrutura).</strong></summary>

Revise e resolva os problemas dentro do subfluxo OnProcess para continuar construindo seu pipeline ou cápsula.

</details>

<details>

<summary><strong>Existe ao menos um problema dentro do OnException (Estrutura).</strong></summary>

Revise e resolva os problemas dentro do subfluxo OnException para continuar construindo seu pipeline ou cápsula.

</details>

### **Parallel Execution**

<details>

<summary><strong>O conector Parallel precisa ter ao menos uma execução configurada (Estrutura).</strong></summary>

O **Parallel Execution** permite configurar múltiplas execuções simultaneamente. Conecte-o a pelo menos outro conector para evitar interrupção do fluxo. [Saiba mais](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/parallel-execution).

{% hint style="info" %}
O **Parallel Execution** deve sempre ser seguido por outro conector para que o fluxo seja executado.
{% endhint %}

</details>

<details>

<summary><strong>O conector Parallel deve ter ao menos duas execuções configuradas (Boas práticas).</strong></summary>

Como boa prática, configure o **Parallel Execution** apenas quando duas ou mais execuções precisarem rodar ao mesmo tempo. [Saiba mais](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/logic/parallel-execution).

</details>

### **Session Management**

<details>

<summary><strong>O campo não foi declarado anteriormente (Boas práticas).</strong></summary>

Um campo não pode ser utilizado (**GET**) se não foi previamente declarado (**PUT**). [Saiba mais](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/structured-data/session-management).

</details>

<details>

<summary><strong>O campo foi declarado, mas não está sendo utilizado (Boas práticas).</strong></summary>

Um campo previamente declarado (**PUT**) não está sendo usado. Configure um novo conector de **Session Management** para usar (**GET**) ou excluir (**DELETE**) o campo. [Saiba mais](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/structured-data/session-management).

</details>

### **Versões descontinuadas**

<details>

<summary><strong>Versão do conector descontinuada. Existe uma versão nova desse conector (Boas práticas).</strong></summary>

Você está usando uma versão descontinuada de um conector. Uma versão mais recente e aprimorada está disponível.

{% hint style="info" %}
Versões descontinuadas ainda podem ser usadas, mas apenas a versão mais recente recebe atualizações e melhorias.
{% endhint %}

</details>

### **Cápsulas**

<details>

<summary><strong>Esta Cápsula não pode ser usada aqui porque ela não existe neste realm (Estrutura).</strong></summary>

A cápsula que você está tentando usar não existe no realm atual. Exclua-a ou substitua-a por outro conector ou cápsula disponível no seu realm.

</details>
