> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Devin Code Scans

> Usa Devin Code Scans per individuare problemi di prestazioni, test coverage, codice morto, accessibilità e altro nei tuoi repository, per poi risolverli con Devin

Un code scan è una sessione Devin, insieme alle sessioni figlie che avvia, che legge uno o più repository, segnala i **findings** e può risolverli tramite pull request. Le scansioni di sicurezza sono trattate in [Security Swarm](/it/work-with-devin/security-swarm). Questa pagina riguarda gli altri tipi di scansione.

<Accordion title="Prerequisiti">
  Per eseguire una scansione:

  * Ti serve l'autorizzazione **Use code scans** e l'autorizzazione per usare le sessioni Devin. Vedi [Access and permissions](/it/work-with-devin/security-swarm#access-and-permissions).
  * La tua organizzazione deve avere accesso al repository che vuoi scansionare.
</Accordion>

<div id="start-a-scan-with-scan">
  ## Avviare una scansione con `/scan`
</div>

1. Nel compositore, digita `/scan` seguito da ciò che vuoi trovare e menziona i repository da scansionare. Per esempio: `/scan find N+1 queries in @acme/api`. Vengono inclusi anche i repository che hai selezionato nel compositore.
2. Invia il messaggio. Devin avvia una nuova sessione per impostare la scansione e la apre. Se hai inviato `/scan` da solo, Devin suggerisce alcune scansioni di esempio, come l'individuazione di query lente sul database o di codice inutilizzato, e ti chiede cosa vuoi trovare.
3. Devin sceglie il tipo di scansione in base alla tua richiesta e lo indica in una riga: per esempio, che imposterà una scansione personalizzata alla ricerca dei soli nomi di variabili in camelCase. Rispondi se desideri qualcosa di diverso.
4. Devin mostra una card **Code scan setup**. Conferma i **Repositories** da scansionare e, facoltativamente, aggiungi indicazioni in **What should the scan focus on?**. Se non hai menzionato un repository, Devin preseleziona quello in cui hai lavorato di più, in base alle tue pull request recenti.
5. Fai clic su **Start scan**. Devin crea la scansione solo dopo l'invio della card, poi condivide un collegamento alla sessione della scansione. Per annullare la configurazione, fai clic su **Dismiss**.

Non devi scegliere un tipo di scansione né configurarla manualmente. Le richieste che coprono un'intera area, come una scansione delle prestazioni di un repository, utilizzano il [tipo di scansione](#scan-types) corrispondente. Obiettivi più circoscritti o differenti, come l'individuazione di memory leak, utilizzano una scansione **Custom** incentrata su ciò che hai descritto.

<video autoPlay muted loop playsInline className="w-full aspect-video" src="https://mintcdn.com/cognitionai/C44xaWXfrf74E4c0/images/work-with-devin/code-scans/code-scans-walkthrough.mp4?fit=max&auto=format&n=C44xaWXfrf74E4c0&q=85&s=8c69208be93267cd470d3591447f3c5f" data-path="images/work-with-devin/code-scans/code-scans-walkthrough.mp4" />

Quando una scansione non di sicurezza termina, Devin ti invia un messaggio diretto su Slack con un riepilogo dei findings, a meno che tu non abbia richiesto una notifica diversa o nessuna notifica. Per i messaggi Slack è necessario che l'integrazione Slack della tua organizzazione consenta alle sessioni di inviare messaggi diretti.

<Note>Le scansioni non di sicurezza vengono eseguite senza supervisione con un livello di impegno normale. Le opzioni di impegno e la modalità interattiva, in cui Devin si mette in pausa per permetterti di rivedere un modello di minaccia prima dell'indagine, sono disponibili solo per le [scansioni di sicurezza](/it/work-with-devin/security-swarm#interactive-mode).</Note>

<div id="scan-types">
  ## Tipi di scansione
</div>

| Tipo di scansione    | Cosa cerca                                                                                                                                                                    |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Performance**      | Problemi di prestazioni e opportunità per rendere il codice più rapido ed efficiente.                                                                                         |
| **Database queries** | Problemi nei punti in cui il codice interroga i propri archivi di dati: query inefficienti, errate, non sicure o non affidabili.                                              |
| **Test coverage**    | Flussi e componenti non coperti da test.                                                                                                                                      |
| **Dead code**        | Codice che non viene più raggiunto: funzioni, moduli, flags e dependencies inutilizzati che si possono rimuovere senza rischi.                                                |
| **Code quality**     | Problemi di manutenibilità che rendono il codice più difficile da leggere, modificare e mantenere corretto.                                                                   |
| **Cleanup**          | Codice disordinato, ridondante e sovradimensionato che può essere ripulito senza alterarne il comportamento.                                                                  |
| **Telemetry**        | Punti in cui serve strumentazione di telemetria o tracking.                                                                                                                   |
| **Accessibility**    | Codice frontend che non rispetta le linee guida di accessibilità (WCAG): label mancanti, accesso da tastiera non funzionante, contrasto insufficiente.                        |
| **Compliance**       | Scostamenti rispetto a normative, standard e policies che la scansione è configurata per verificare, come la gestione dei dati sensibili, gli audit trail e la conservazione. |
| **Migration docs**   | Traccia i flussi end-to-end e la logica di business del codice e produce documentazione pronta per la migrazione, con diagrammi.                                              |
| **Custom**           | Qualsiasi altro aspetto che descrivi, ad esempio i punti in cui vengono registrati dati personali o una convenzione di denominazione che il tuo team vuole far rispettare.    |

Per vulnerabilities e superfici di attacco, usa una scansione [Security Swarm](/it/work-with-devin/security-swarm).

<div id="review-and-fix-findings">
  ## Esaminare e correggere i finding
</div>

Apri il tab **Findings** nella sessione che ha avviato la scansione, oppure nella sessione principale della scansione, per gestire i relativi finding. I finding aperti sono raggruppati per fase:

* **Unassigned** — nessuna sessione di remediation avviata.
* **Assigned** — una sessione di remediation è stata avviata, ma non è aperta alcuna pull request.
* **PR open** — è aperta una pull request per il finding.

Per ogni finding puoi:

* **Assign to Devin** — avviare una sessione Devin che corregge il finding e apre una pull request. Usa **Open session** per seguire il lavoro e **Open PR** per esaminare il risultato.
* **Dismiss** — rimuovere un finding che non richiede interventi.

Mentre una scansione è in esecuzione, il tab Findings nella sessione principale della scansione offre anche **Pause scan**, **Resume scan** e **Kill scan**. Questi controlli richiedono **Manage code scans**.

<div id="scale-scanning">
  ## Scansione su larga scala
</div>

<div id="scan-new-commits">
  ### Scan new commits
</div>

Al termine di una scansione di qualsiasi tipo, fai clic su **Scan new commits** nella scheda Findings per avviare un run incrementale che analizza solo i commit aggiunti dopo l'ultimo run completato della scansione. Il run utilizza la configurazione esistente della scansione e aggiunge i propri finding alla stessa scansione. Il pulsante non è visibile mentre la scansione è in corso o dopo che è stata archiviata, e richiede **Manage code scans**. Se non sono stati aggiunti nuovi commit, non viene avviato alcun run.

In alternativa, puoi chiedere a Devin in una sessione di analizzare i nuovi commit di una scansione esistente.

<div id="automations">
  ### Automazioni
</div>

Le [automazioni](/it/product-guides/automations) possono eseguire scansioni di qualsiasi tipo secondo una pianificazione o in risposta a un evento. Scegli il tipo di agent **Code scan**, quindi in **Scan**:

* Scegli **Create a new scan** per avviare una nuova scansione ogni volta che l'automazione si attiva. Seleziona i repository, il tipo di scansione e il profilo. I tipi di scansione non di sicurezza richiedono uno [profilo di scansione](/it/work-with-devin/security-swarm#scan-profiles) dello stesso tipo.
* Scegli una scansione esistente per analizzarne i nuovi commit ogni volta che l'automazione si attiva. La scansione deve già avere una run completata.

Le scansioni avviate dalle automazioni vengono eseguite senza supervisione. Consulta [Avviare scansioni dalle automazioni](/it/work-with-devin/security-swarm#start-scans-from-automations).

<div id="api">
  ### API
</div>

L'[API Code Scans](/it/api-reference/v3/code-scans/triggering-code-scans) consente di avviare i code scan, monitorarne lo stato e leggere i findings senza usare la web app. Quando avvii un code scan non di sicurezza tramite l'API, devi indicare un `profile_id` corrispondente a un profile di quel tipo di scansione; il valore predefinito di `scan_type` è il tipo del profile. I code scan avviati tramite l'API non sono interattivi.

<div id="related-pages">
  ## Pagine correlate
</div>

* [Security Swarm](/it/work-with-devin/security-swarm) — scansioni di sicurezza, scan profile, modalità interattiva e autorizzazioni per le code scan.
* [Avviare code scan tramite l'API di Devin](/it/api-reference/v3/code-scans/triggering-code-scans) — il flusso API end-to-end.
* [Automazioni](/it/product-guides/automations) — pianifica e avvia le scansioni.
