> For the complete documentation index, see [llms.txt](https://docs.flosum.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flosum.com/devops/devops-pt-br/pipeline/operacoes-do-pipeline/operacao-do-pipeline-analise-de-codigo.md).

# Operação do pipeline: análise de código

{% hint style="warning" %}

#### Escrito para a interface antiga

Este artigo foi escrito para a interface antiga. As instruções ainda podem ser usadas, mas as capturas de tela estão desatualizadas. Em alguns casos, os itens referenciados nas instruções foram movidos ou alterados. Se você não conseguir encontrar um item, consulte o [Para onde foi](/devops/devops-pt-br/transicao-para-a-nova-ui-ux/para-onde-foi.md) artigo.
{% endhint %}

## ![](https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FG5ZbxX918xOHwbAwAJ4n%2FSummary2-Small-Icon.svg?alt=media\&token=da26a67f-ff7f-47b3-8669-06be960dc2d7) Visão geral

O **Code Scan** a operação analisa os metadados do Salesforce para identificar problemas de qualidade de código antes da implantação. Por meio da análise estática de código, ela relata violações de regras nas classes Apex, triggers e outros componentes de uma ramificação para confirmar se eles atendem aos padrões de codificação definidos por você. O conjunto de regras do Code Scan abrange:

* **Estilo de codificação e boas práticas**: Melhore a legibilidade, a manutenibilidade e a consistência em toda a sua base de código.
* **Boas práticas de segurança**: Identifique vulnerabilidades comuns e padrões arriscados no seu código.
* **Sugestões de desempenho**: Destaque a lógica ineficiente antes que ela afete os usuários finais.

Você pode definir um limite de severidade para interromper o pipeline quando as violações atingirem ou excederem um nível especificado. Executar Code Scans no seu pipeline ajuda a manter uma qualidade de código consistente e permite implantar componentes confiáveis, seguros e responsivos.

Este artigo explica como configurar e usar a operação Code Scan. Consulte as seções a seguir para saber mais:

* [#scan-types](#scan-types "mention")
* [#severity-levels](#severity-levels "mention")
* [#code-scan-operation-configuration](#code-scan-operation-configuration "mention")
* [#code-scan-results-1](#code-scan-results-1 "mention")

{% hint style="info" %}

#### Boas práticas

* Execute Code Scans automaticamente antes de cada implantação.
* Defina limites de severidade com base nas regras de CI/CD.
* Revise regularmente o **Resultado do Code Scan** e corrija problemas recorrentes.
* Combine **Code Scan** com uma **Etapa manual** para exigir revisão e aprovação antes da implantação em produção.
* Mantenha configurações consistentes **Code Scan** em todos os ambientes.
  {% endhint %}

### Tipos de verificação

A operação Code Scan oferece suporte a dois tipos de verificação: **Apex PMD** e **Flosum Scan**. Revise as descrições abaixo para escolher o tipo de verificação que melhor corresponde aos padrões de qualidade da sua equipe. No menu suspenso Tipo de verificação, Flosum Scan aparece como Flosum.

#### Apex PMD

**Apex PMD** é um conjunto de regras de código aberto que detecta problemas comuns em componentes do Salesforce. Ele inclui menos regras do que o Flosum Scan e conclui as verificações mais rapidamente, tornando-se uma opção leve para feedback rápido. Escolha o Apex PMD quando suas verificações de base atenderem às suas necessidades ou quando você preferir detectar menos problemas.

#### Flosum Scan

**Flosum Scan** é o conjunto de regras mais abrangente da DevOps, criado para equipes que exigem o mais alto padrão de qualidade de código. Ele inclui todas as regras do Apex PMD, além de centenas de verificações adicionais, cerca de 6 vezes a cobertura do Apex PMD, e amplia a análise estática para linguagens que o Apex PMD não cobre, incluindo **Salesforce Flow** e **TypeScript**. Essa cobertura ampliada oferece análise mais profunda e validação mais rigorosa, dando a você maior confiança em cada implantação. Escolha o Flosum Scan para a proteção mais completa do seu código Salesforce.

{% hint style="info" %}

#### Por que Flosum Scan?

* **Cobertura de linguagens mais ampla**: adiciona suporte nativo a **Salesforce Flow** e **TypeScript**, nenhum dos quais é analisado por **Apex PMD**.
* **Cobertura mais profunda do Lightning**: inclui 381 regras para **JavaScript** e **Lightning Web Components**, em comparação com 19 no **Apex PMD**.
* **Validação de metadados mais robusta**: aplica 18 regras a **Metadados do Salesforce**, em comparação com 2 no **Apex PMD**.
* **Expandido continuamente**: o **Flosum Scan** conjunto de regras é mantido pela Flosum e continuará crescendo para acompanhar as mudanças na plataforma Salesforce.
  {% endhint %}

#### Cobertura de regras por linguagem

A tabela abaixo lista as linguagens suportadas por cada tipo de verificação. O gráfico compara a cobertura de regras de cada tipo de verificação entre as linguagens suportadas. Use estas informações para confirmar se o tipo de verificação selecionado oferece conjuntos de regras suficientes para as linguagens usadas na sua ramificação.

<table><thead><tr><th width="399.666748046875">Linguagem</th><th align="center">Apex PMD</th><th align="center">Flosum Scan</th></tr></thead><tbody><tr><td>JavaScript / Lightning Web Components</td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>TypeScript</td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FzwOFIIvK4ue9gjxBh5iX%2FX-Icon.svg?alt=media&amp;token=bbcd7bc0-1097-450d-b6ce-62677c4c4097" alt="" data-size="line"></td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>Apex</td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>Metadados do Salesforce</td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>HTML / Salesforce Lightning Design System</td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>Salesforce Flow</td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FzwOFIIvK4ue9gjxBh5iX%2FX-Icon.svg?alt=media&amp;token=bbcd7bc0-1097-450d-b6ce-62677c4c4097" alt="" data-size="line"></td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>Visualforce</td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr></tbody></table>

<figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FmEJomEj5Qdzu2DhZttFe%2FPipelineOperationCodeScan-Chart-01.png?alt=media&amp;token=f613ed31-b5e6-431f-af8f-24fa0d48a3bf" alt=""><figcaption></figcaption></figure>

### Níveis de severidade

Quando o Code Scan encontra um problema, ele atribui um Nível de severidade que reflete quão crítica é a questão para a qualidade do seu código. Use esses níveis para priorizar correções e definir o limite de severidade que determina quando a operação falha.

<table><thead><tr><th width="150">Nível de severidade</th><th>Descrição</th></tr></thead><tbody><tr><td>Bloqueador</td><td>Riscos graves de segurança ou bugs críticos que podem causar falha no sistema ou perda de dados.</td></tr><tr><td>Crítico</td><td>Problemas significativos que normalmente violam os padrões do Salesforce AppExchange.</td></tr><tr><td>Maior</td><td>Violações de boas práticas ou problemas de desempenho que afetam a manutenibilidade.</td></tr><tr><td>Menor</td><td>Problemas de qualidade de código de baixo impacto ou inconsistências de estilo.</td></tr><tr><td>Informativo</td><td>Mensagens informativas que não exigem ação.</td></tr></tbody></table>

## Configuração da operação Code Scan

{% hint style="info" %}
As instruções abaixo se aplicam à configuração desta operação de pipeline. Para instruções gerais sobre como adicionar uma etapa de pipeline e definir a próxima etapa, consulte o artigo a seguir.

[Adicionando uma etapa ao pipeline](/devops/devops-pt-br/pipeline/configurando-as-etapas-do-pipeline/adicionando-uma-etapa-ao-pipeline.md)
{% endhint %}

{% stepper %}
{% step %}

### Selecione a operação e o tipo

1. Clique no **Operação** menu suspenso.
2. Selecione **Code Scan**.

   <div align="left"><figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FJylQJG03TIzkfefDNYLj%2FPipelineOperationCodeScan-Config-S01-01.png?alt=media&amp;token=50da9df9-7700-4111-b356-1d43b6601806" alt="" width="563"><figcaption></figcaption></figure></div>
3. Clique no **Tipo de verificação** menu suspenso.
4. Selecione **Apex PMD** ou **Flosum**. **Flosum** é o tipo Flosum Scan. Consulte a seção Tipos de verificação acima para obter mais detalhes.

   <div align="left"><figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FkMG1WoaoeonBhuJpbd9u%2FPipelineOperationCodeScan-Config-S01-02.png?alt=media&amp;token=14189fc7-aaf4-443f-9c2b-2a36f9cb4911" alt="" width="563"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}

### Digite a descrição e o limite

1. (Opcional) Na **Descrição** caixa de texto, insira um resumo do que este Code Scan realiza.
2. Clique no **Limite de severidade** menu suspenso.
3. Selecione o nível mínimo de severidade que fará a operação Code Scan falhar. Consulte a seção Níveis de severidade acima para obter mais detalhes.

   <div align="left"><figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FA6IsOXnlWyUCGVXt6kL4%2FPipelineOperationCodeScan-Config-S02-01.png?alt=media&amp;token=571b2ca8-d64f-4a4f-a48a-d9f29c889b2d" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
O **Limite de severidade** significa que, se um problema no nível de severidade selecionado ou acima dele for encontrado, o Code Scan falhará.
{% endhint %}
{% endstep %}
{% endstepper %}

## Resultados do Code Scan

{% hint style="info" %}
Depois que um pipeline é iniciado, seu progresso e resultados podem ser visualizados na **Atividades** aba da branch que executou o pipeline. As instruções abaixo mostram como revisar os resultados desta operação. Para instruções gerais sobre como acessar os resultados do pipeline a partir da branch, consulte o artigo a seguir.

* [Visualizando os resultados do pipeline](/devops/devops-pt-br/pipeline/acoes-do-pipeline/visualizando-os-resultados-do-pipeline.md)
  {% endhint %}

{% stepper %}
{% step %}

### Resumo e log

Assim que o Code Scan for concluído, você pode ver o resumo dos resultados selecionando a **Code Scan** etapa nos resultados do pipeline.

<div align="left"><figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FCqkIBlg2aZej5hNl2buC%2FPipelineOperationCodeScan-Results-S01-01.png?alt=media&amp;token=0f223c77-c928-428b-8552-b78e9abcb0c4" alt="" width="563"><figcaption></figcaption></figure></div>

O **Resumo** dos resultados do Code Scan exibe as seguintes informações:

<table><thead><tr><th width="200.3333740234375">Campos</th><th>Descrição</th></tr></thead><tbody><tr><td>Status</td><td><p><strong>Concluído</strong> se todos os problemas encontrados estiverem abaixo do limite de severidade definido.</p><p><strong>Exceção</strong> se qualquer problema atingir ou exceder o limite de severidade.</p></td></tr><tr><td>Duração</td><td>Tempo que o Code Scan levou para ser concluído, mostrado em horas, minutos e segundos.</td></tr><tr><td>Data de início/fim</td><td>A data e a hora em que o Code Scan começou e terminou.</td></tr><tr><td>Problemas encontrados</td><td>Número de problemas encontrados em cada Nível de severidade.</td></tr><tr><td>Log</td><td>Entradas de log do job Code Scan. Use o log para revisar o status do job e quaisquer mensagens de erro.</td></tr></tbody></table>

Exemplo de um log do Code Scan:

{% code overflow="wrap" expandable="true" %}

```
[May 22, 2026 1:09 PM]: [info] Job iniciado
[May 22, 2026 1:09 PM]: [info] Criação do projeto Salesforce iniciada
[May 22, 2026 1:09 PM]: [info] Criação do projeto Salesforce concluída
[May 22, 2026 1:09 PM]: [info] Recuperação dos componentes do Salesforce iniciada
[May 22, 2026 1:09 PM]: [info] Recuperação dos componentes do Salesforce concluída
[May 22, 2026 1:09 PM]: [info] Analisador de código iniciado
[May 22, 2026 1:10 PM]: [info] Analisador de código concluído
[May 22, 2026 1:10 PM]: [error] Falha no job: o Code Scan excedeu o valor permitido: "Minor"
```

{% endcode %}
{% endstep %}

{% step %}

### Resultados do Code Scan

Você pode visualizar os Resultados do Code Scan para ver em quais arquivos da sua ramificação a verificação encontrou problemas e quantos de cada Nível de severidade foram encontrados.

1. Clique **Ver resultado**.

   <div align="left"><figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FrOAv0f836UScNKtf3aS0%2FPipelineOperationCodeScan-Results-S02-01.png?alt=media&amp;token=a15a8b79-c6f1-47f9-8b0f-4f88264ae34a" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Atualmente, os rótulos de Nível de severidade na **Resultado do Code Scan** página diferem dos rótulos usados em outras seções do Code Scan. Este pequeno problema será resolvido em breve. Enquanto isso, use o mapeamento a seguir para traduzir os Níveis de severidade:

* **Crítico → Bloqueador**
* **Alto → Crítico**
* **Médio → Maior**
* **Baixo → Menor**
* **Menor → Informativo**
  {% endhint %}

No topo da página de resultados está o número total de problemas encontrados para cada Nível de severidade. Abaixo dos totais há uma lista de arquivos de componentes com problemas, juntamente com um gráfico de barras de problemas organizados por severidade.

<div align="left"><figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FaJKENrYjN8xUipfT7eFB%2FPipelineOperationCodeScan-Results-S02-02.png?alt=media&amp;token=d942f17b-de32-4f35-8474-0fca346a4c6f" alt="" width="563"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

### Resultados por arquivo

Os resultados por arquivo explicam a causa de cada problema e onde ele ocorre no arquivo-fonte. Revise cada problema e, quando aplicável, faça as alterações necessárias no componente.

1. Clique em um arquivo da lista para ver a lista completa de problemas.

   <div align="left"><figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FCP8sA4LTlyR8ZVbTguv7%2FPipelineOperationCodeScan-Results-S03-01.png?alt=media&amp;token=4df75b5f-1c1c-4dd3-bbc3-b556d01af65d" alt="" width="563"><figcaption></figcaption></figure></div>
2. Se disponível, clique em **Mostrar mais** para ver mais problemas encontrados neste arquivo.

A captura de tela e a tabela abaixo explicam as informações exibidas para cada problema.

<div align="left"><figure><img src="https://2465342021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FHdwii7OwDPNZ8z4dOuIC%2FPipelineOperationCodeScan-Results-S03-02.png?alt=media&amp;token=9556a7af-d237-43f8-968f-55b1212b8694" alt="" width="563"><figcaption></figcaption></figure></div>

<table><thead><tr><th width="199.66668701171875">Coluna</th><th>Descrição</th></tr></thead><tbody><tr><td>Nível de severidade</td><td>Um círculo colorido com uma letra dentro indica o Nível de severidade. A letra corresponde à primeira letra do nome do Nível de severidade, e a cor corresponde ao nível. Observação: Maior e Menor começam com M, mas Maior é laranja e Menor é verde.</td></tr><tr><td>Nome da regra</td><td>O nome da regra que sinalizou o problema.</td></tr><tr><td>Descrição da violação</td><td>Uma descrição da causa do problema.</td></tr><tr><td>Local da violação</td><td>O número da linha e da coluna onde o problema foi encontrado.</td></tr></tbody></table>
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.flosum.com/devops/devops-pt-br/pipeline/operacoes-do-pipeline/operacao-do-pipeline-analise-de-codigo.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
