Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/crytic/slither
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del Codice
GitHubcrytic/slither

slither

Analizzatore statico per Solidity e Vyper

Vedi RepositorySito web
6.3k1.1k555 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
# [Slither, l'analizzatore statico di smart contract](https://crytic.github.io/slither/slither.html)

<img src="https://assets.kitploit.com/production/public/readmes/2943/62b8c109c585043091c50668ec219aa530aa6d589d7cda02181bf209249f5205.png" alt="Logo del framework di analisi statica Slither" width="500" />

[![Stato della build](https://img.shields.io/github/actions/workflow/status/crytic/slither/ci.yml?branch=master)](https://github.com/crytic/slither/actions?query=workflow%3ACI)
![PyPI](https://img.shields.io/pypi/v/slither-analyzer?logo=python&logoColor=white&label=slither-analyzer)
[![Slither - Leggi la documentazione](https://img.shields.io/badge/Slither-Read_the_Docs-2ea44f)](https://crytic.github.io/slither/slither.html)
[![Slither - Wiki](https://img.shields.io/badge/Slither-Wiki-2ea44f)](https://github.com/crytic/slither/wiki/SlithIR)

> Unisciti a Empire Hacking Slack
>
> [![Stato Slack](https://slack.empirehacking.nyc/badge.svg)](https://slack.empirehacking.nyc/)
> > _- Discussioni e supporto_

**Slither** è un framework di analisi statica per Solidity e Vyper scritto in Python3. Esegue una suite di rilevatori di vulnerabilità, stampa informazioni visive sui dettagli dei contratti e fornisce un'API per scrivere facilmente analisi personalizzate. Slither consente agli sviluppatori di trovare vulnerabilità, migliorare la comprensione del codice e prototipare rapidamente analisi personalizzate.

* [Caratteristiche](#features)
* [Utilizzo](#usage)
* [Come installare](#how-to-install)
  * [Usando uv (Consigliato)](#using-uv-recommended)
  * [Usando Pip](#using-pip)
  * [Usando Git](#using-git-development)
  * [Usando Docker](#using-docker)
  * [Integrazione](#integration)
* [Rilevatori](#detectors)
* [Stampanti](#printers)
  * [Stampanti per revisione rapida](#quick-review-printers)
  * [Stampanti per revisione approfondita](#in-depth-review-printers)
* [Strumenti](#tools)
* [Documentazione API](#api-documentation)
* [Ottenere aiuto](#getting-help)
* [FAQ](#faq)
* [Licenza](#license)
* [Pubblicazioni](#publications)
  * [Pubblicazione di Trail of Bits](#trail-of-bits-publication)
  * [Pubblicazioni esterne](#external-publications)

## Caratteristiche

* Rileva codice Solidity vulnerabile con bassi falsi positivi (vedi l'elenco dei [trofei](https://github.com/crytic/slither/blob/master/trophies.md))
* Identifica dove si verifica la condizione di errore nel codice sorgente
* Si integra facilmente con l'integrazione continua e le build di Hardhat/Foundry
* Le 'stampanti' integrate riportano rapidamente informazioni cruciali sui contratti
* API per i rilevatori per scrivere analisi personalizzate in Python
* Capacità di analizzare contratti scritti con Solidity >= 0.4
* La rappresentazione intermedia ([SlithIR](https://github.com/crytic/slither/wiki/SlithIR)) consente analisi semplici e ad alta precisione
* Analizza correttamente il 99,9% di tutto il codice Solidity pubblico
* Tempo di esecuzione medio inferiore a 1 secondo per contratto
* Si integra con la scansione del codice di Github in [CI](https://github.com/marketplace/actions/slither-action)
* Supporto per smart contract Vyper

## Utilizzo

Esegui Slither su un'applicazione Hardhat/Foundry/Dapp/Brownie:```console
slither .
```
Questa è l'opzione preferita se il tuo progetto ha dipendenze, poiché Slither si basa sul framework di compilazione sottostante per compilare il codice sorgente.

Tuttavia, puoi eseguire Slither su un file singolo che non importa dipendenze:```console
slither tests/uninitialized.sol
```
## Come installare

> **Nota**
> Slither richiede Python 3.10+.
Se **non** intendi utilizzare uno dei [framework di compilazione supportati](https://github.com/crytic/crytic-compile), hai bisogno di [solc](https://github.com/ethereum/solidity/), il compilatore Solidity; consigliamo di utilizzare [solc-select](https://github.com/crytic/solc-select) per passare comodamente tra le versioni di solc.

### Usando uv (Consigliato)

[uv](https://github.com/astral-sh/uv) è un gestore di pacchetti Python veloce che è da 10 a 100 volte più rapido di pip.```console
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install slither as a tool
uv tool install slither-analyzer

# Or run slither without installation
uvx --from slither-analyzer slither <target>
```
Per aggiornare:```console
uv tool upgrade slither-analyzer
```
### Usare Pip```console
python3 -m pip install slither-analyzer
```
Per aggiornare:```console
python3 -m pip install --upgrade slither-analyzer
```
### Usare Brew```console
brew install slither-analyzer
```
### Usare Git (Sviluppo)```bash
git clone https://github.com/crytic/slither.git && cd slither

# Install as editable for development
uv tool install -e .

# Or use uv run for testing without installation
uv run slither <target>
```
Il flag `-e` installa in modalità modificabile, il che significa che le modifiche al codice sorgente vengono immediatamente riflesse senza dover reinstallare.

### Utilizzo di Docker

Utilizza l'immagine docker [`eth-security-toolbox`](https://github.com/crytic/eth-security-toolbox/). Include tutti i nostri strumenti di sicurezza e ogni versione principale di Solidity in una singola immagine. `/home/share` verrà montato su `/share` nel contenitore.```bash
docker pull trailofbits/eth-security-toolbox
```
Per condividere una directory nel contenitore:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
```
### Integrazione

* Per l'integrazione con GitHub Action, utilizza [slither-action](https://github.com/marketplace/actions/slither-action).
* Per l'integrazione con pre-commit, utilizza (sostituisci `$GIT_TAG` con un tag reale)  ```YAML
  - repo: https://github.com/crytic/slither
    rev: $GIT_TAG
    hooks:
      - id: slither
  ```
* Per generare un report in Markdown, usa `slither [target] --checklist`.
* Per generare un Markdown con l'evidenziazione del codice sorgente di GitHub, usa `slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/` (sostituisci `ORG`, `REPO`, `COMMIT`)

## Rilevatori

Num | Rilevatore | Cosa rileva | Impatto | Confidenza
--- | --- | --- | --- | ---
1 | `abiencoderv2-array` | [Array storage abiencoderv2](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-abiencoderv2-array) | Alto | Alta
2 | `arbitrary-send-erc20` | [transferFrom usa un `from` arbitrario](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom) | Alto | Alta
3 | `array-by-reference` | [Modifica dell'array di storage per valore](https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value) | Alto | Alta
4 | `encode-packed-collision` | [Collisione ABI encodePacked](https://github.com/crytic/slither/wiki/Detector-Documentation#abi-encodePacked-collision) | Alto | Alta
5 | `incorrect-shift` | [L'ordine dei parametri in un'istruzione di shift non è corretto.](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-shift-in-assembly) | Alto | Alta
6 | `multiple-constructors` | [Schemi di costruttori multipli](https://github.com/crytic/slither/wiki/Detector-Documentation#multiple-constructor-schemes) | Alto | Alta
7 | `name-reused` | [Nome del contratto riutilizzato](https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused) | Alto | Alta
8 | `protected-vars` | [Variabili non protette rilevate](https://github.com/crytic/slither/wiki/Detector-Documentation#protected-variables) | Alto | Alta
9 | `public-mappings-nested` | [Mapping pubblici con variabili annidate](https://github.com/crytic/slither/wiki/Detector-Documentation#public-mappings-with-nested-variables) | Alto | Alta
10 | `rtlo` | [È utilizzato un carattere di controllo Right-To-Left Override](https://github.com/crytic/slither/wiki/Detector-Documentation#right-to-left-override-character) | Alto | Alta
11 | `shadowing-state` | [Shadowing di variabili di stato](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing) | Alto | Alta
12 | `suicidal` | [Funzioni che permettono a chiunque di distruggere il contratto](https://github.com/crytic/slither/wiki/Detector-Documentation#suicidal) | Alto | Alta
13 | `uninitialized-state` | [Variabili di stato non inizializzate](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables) | Alto | Alta
14 | `uninitialized-storage` | [Variabili di storage non inizializzate](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-storage-variables) | Alto | Alta
15 | `unprotected-upgrade` | [Contratto aggiornabile non protetto](https://github.com/crytic/slither/wiki/Detector-Documentation#unprotected-upgradeable-contract) | Alto | Alta
16 | `arbitrary-send-erc20-permit` | [transferFrom usa from arbitrario con permit](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom-used-with-permit) | Alto | Media
17 | `arbitrary-send-eth` | [Funzioni che inviano Ether a destinazioni arbitrarie](https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations) | Alto | Media
18 | `controlled-array-length` | [Assegnazione contaminata della lunghezza dell'array](https://github.com/crytic/slither/wiki/Detector-Documentation#array-length-assignment) | Alto | Media
19 | `controlled-delegatecall` | [Destinazione delegatecall controllata](https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall) | Alto | Media
20 | `delegatecall-loop` | [Funzioni pagabili che utilizzano `delegatecall` all'interno di un ciclo](https://github.com/crytic/slither/wiki/Detector-Documentation/#payable-functions-using-delegatecall-inside-a-loop) | Alto | Media
21 | `incorrect-exp` | [Esponenziazione errata](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation) | Alto | Media
22 | `incorrect-return` | [Se un `return` viene utilizzato in modo errato nella modalità assembly.](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-return-in-assembly) | Alto | Media
23 | `msg-value-loop` | [msg.value all'interno di un ciclo](https://github.com/crytic/slither/wiki/Detector-Documentation/#msgvalue-inside-a-loop) | Alto | Media
24 | `reentrancy-eth` | [Vulnerabilità di rientranza (furto di ether)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities) | Alto | Media
25 | `reentrancy-balance` | [Vulnerabilità di rientranza che portano a controlli di saldo obsoleti](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | Alto | Media
26 | `return-leave` | [Se viene utilizzato un `return` invece di un `leave`.](https://github.com/crytic/slither/wiki/Detector-Documentation#return-instead-of-leave-in-assembly) | Alto | Media
27 | `storage-array` | [Bug del compilatore per array di interi con segno in storage](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-signed-integer-array) | Alto | Media
28 | `unchecked-transfer` | [Trasferimento di token non controllato](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer) | Alto | Media
29 | `weak-prng` | [PRNG debole](https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG) | Alto | Media
30 | `domain-separator-collision` | [Rileva token ERC20 con una funzione la cui firma collide con DOMAIN_SEPARATOR() di EIP-2612](https://github.com/crytic/slither/wiki/Detector-Documentation#domain-separator-collision) | Medio | Alta
31 | `enum-conversion` | [Rileva conversione pericolosa di enum](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-enum-conversion) | Medio | Alta
32 | `erc20-interface` | [Interfacce ERC20 errate](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface) | Medio | Alta
33 | `erc721-interface` | [Interfacce ERC721 errate](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc721-interface) | Medio | Alta
34 | `incorrect-equality` | [Uguaglianze strette pericolose](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities) | Medio | Alta
35 | `locked-ether` | [Contratti che bloccano ether](https://github.com/crytic/slither/wiki/Detector-Documentation#contracts-that-lock-ether) | Medio | Alta
36 | `mapping-deletion` | [Eliminazione su mapping contenente una struttura](https://github.com/crytic/slither/wiki/Detector-Documentation#deletion-on-mapping-containing-a-structure) | Medio | Alta
37 | `pyth-deprecated-functions` | [Rileva funzioni Pyth deprecate](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-deprecated-functions) | Medio | Alta
38 | `pyth-unchecked-confidence` | [Rileva quando il livello di confidenza di un prezzo Pyth non viene controllato](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-unchecked-confidence-level) | Medio | Alta
39 | `pyth-unchecked-publishtime` | [Rileva quando il publishTime di un prezzo Pyth non viene controllato](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-unchecked-publishtime) | Medio | Alta
40 | `shadowing-abstract` | [Shadowing di variabili di stato da contratti astratti](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing-from-abstract-contracts) | Medio | Alta
41 | `tautological-compare` | [Confrontare una variabile con sé stessa restituisce sempre vero o falso, a seconda del confronto](https://github.com/crytic/slither/wiki/Detector-Documentation#tautological-compare) | Medio | Alta
42 | `tautology` | [Tautologia o contraddizione](https://github.com/crytic/slither/wiki/Detector-Documentation#tautology-or-contradiction) | Medio | Alta
43 | `write-after-write` | [Scrittura inutilizzata](https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write) | Medio | Alta
44 | `boolean-cst` | [Uso improprio di costante booleana](https://github.com/crytic/slither/wiki/Detector-Documentation#misuse-of-a-boolean-constant) | Medio | Media
45 | `chronicle-unchecked-price` | [Rileva quando il prezzo Chronicle non viene controllato.](https://github.com/crytic/slither/wiki/Detector-Documentation#chronicle-unchecked-price) | Medio | Media
46 | `constant-function-asm` | [Funzioni costanti che utilizzano codice assembly](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-using-assembly-code) | Medio | Media
47 | `constant-function-state` | [Funzioni costanti che modificano lo stato](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-changing-the-state) | Medio | Media
48 | `divide-before-multiply` | [Ordine impreciso delle operazioni aritmetiche](https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply) | Medio | Media
49 | `gelato-unprotected-randomness` | [Chiamata a `_requestRandomness` all'interno di una funzione non protetta](https://github.com/crytic/slither/wiki/Detector-Documentation#gelato-unprotected-randomness) | Medio | Media
50 | `out-of-order-retryable` | [Transazioni riprovabili fuori ordine](https://github.com/crytic/slither/wiki/Detector-Documentation#out-of-order-retryable-transactions) | Medio | Media
51 | `reentrancy-no-eth` | [Vulnerabilità di rientranza (senza furto di ether)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1) | Medio | Media
52 | `reused-constructor` | [Costruttore base riutilizzato](https://github.com/crytic/slither/wiki/Detector-Documentation#reused-base-constructors) | Medio | Media
53 | `tx-origin` | [Uso pericoloso di `tx.origin`](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin) | Medio | Media
54 | `unchecked-lowlevel` | [Chiamate di basso livello non controllate](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-low-level-calls) | Medio | Media
55 | `unchecked-send` | [Send non controllato](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-send) | Medio | Media
56 | `uninitialized-local` | [Variabili locali non inizializzate](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables) | Medio | Media
57 | `unused-return` | [Valori di ritorno inutilizzati](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return) | Medio | Media
58 | `chainlink-feed-registry` | [Rileva quando viene utilizzato il registro dei feed Chainlink](https://github.com/crytic/slither/wiki/Detector-Documentation#chainlink-feed-registry-usage) | Basso | Alta
59 | `incorrect-modifier` | [Modificatori che possono restituire il valore predefinito](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier) | Basso | Alta
60 | `optimism-deprecation` | [Rileva quando viene utilizzato un predeploy o una funzione deprecati di Optimism.](https://github.com/crytic/slither/wiki/Detector-Documentation#optimism-deprecated-predeploy-or-function) | Basso | Alta
61 | `shadowing-builtin` | [Shadowing di simboli built-in](https://github.com/crytic/slither/wiki/Detector-Documentation#builtin-symbol-shadowing) | Basso | Alta
62 | `shadowing-local` | [Shadowing di variabili locali](https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing) | Basso | Alta
63 | `uninitialized-fptr-cst` | [Chiamate a puntatori di funzione non inizializzati nei costruttori](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-function-pointers-in-constructors) | Basso | Alta
64 | `variable-scope` | [Variabili locali utilizzate prima della loro dichiarazione](https://github.com/crytic/slither/wiki/Detector-Documentation#pre-declaration-usage-of-local-variables) | Basso | Alta
65 | `void-cst` | [Costruttore chiamato non implementato](https://github.com/crytic/slither/wiki/Detector-Documentation#void-constructor) | Basso | Alta
66 | `calls-loop` | [Chiamate multiple in un ciclo](https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop) | Basso | Media
67 | `events-access` | [Eventi mancanti per il controllo degli accessi](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control) | Basso | Media
68 | `events-maths` | [Eventi mancanti per l'aritmetica](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic) | Basso | Media
69 | `incorrect-unary` | [Espressioni unarie pericolose](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-unary-expressions) | Basso | Media
70 | `missing-zero-check` | [Validazione dell'indirizzo zero mancante](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation) | Basso | Media
71 | `reentrancy-benign` | [Vulnerabilità di rientranza benigne](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2) | Basso | Media
72 | `reentrancy-events` | [Vulnerabilità di rientranza che portano a eventi fuori ordine](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3) | Basso | Media
73 | `return-bomb` | [Un chiamato di basso livello potrebbe consumare inaspettatamente tutto il gas del chiamante.](https://github.com/crytic/slither/wiki/Detector-Documentation#return-bomb) | Basso | Media
74 | `timestamp` | [Uso pericoloso di `block.timestamp`](https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp) | Basso | Media
75 | `assembly` | [Utilizzo di assembly](https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage) | Informativo | Alta
76 | `assert-state-change` | [Modifica dello stato in assert](https://github.com/crytic/slither/wiki/Detector-Documentation#assert-state-change) | Informativo | Alta
77 | `boolean-equal` | [Confronto con costante booleana](https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality) | Informativo | Alta
78 | `cyclomatic-complexity` | [Rileva funzioni con complessità ciclomatica alta (> 11)](https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity) | Informativo | Alta
79 | `deprecated-standards` | [Standard Solidity deprecati](https://github.com/crytic/slither/wiki/Detector-Documentation#deprecated-standards) | Informativo | Alta
80 | `erc20-indexed` | [Parametri di eventi ERC20 non indicizzati](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters) | Informativo | Alta
81 | `function-init-state` | [Funzione che inizializza variabili di stato](https://github.com/crytic/slither/wiki/Detector-Documentation#function-initializing-state) | Informativo | Alta
82 | `incorrect-using-for` | [Rileva l'utilizzo dell'istruzione using-for quando nessuna funzione di una data libreria corrisponde a un dato tipo](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-usage-of-using-for-statement) | Informativo | Alta
83 | `low-level-calls` | [Chiamate di basso livello](https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls) | Informativo | Alta
84 | `missing-inheritance` | [Ereditarietà mancante](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance) | Informativo | Alta
85 | `naming-convention` | [Conformità alle convenzioni di denominazione di Solidity](https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions) | Informativo | Alta
86 | `pragma` | [Se vengono utilizzate direttive pragma diverse](https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used) | Informativo | Alta
87 | `redundant-statements` | [Istruzioni ridondanti](https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements) | Informativo | Alta
88 | `solc-version` | [Versione di Solidity errata](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity) | Informativo | Alta
89 | `unimplemented-functions` | [Funzioni non implementate](https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions) | Informativo | Alta
90 | `unindexed-event-address` | [Eventi con parametri di indirizzo ma nessun parametro indicizzato](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-event-address-parameters) | Informativo | Alta
91 | `unused-state` | [Variabili di stato inutilizzate](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable) | Informativo | Alta
92 | `costly-loop` | [Operazioni costose in un ciclo](https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop) | Informativo | Media
93 | `dead-code` | [Funzioni che non vengono utilizzate](https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code) | Informativo | Media
94 | `reentrancy-unlimited-gas` | [Vulnerabilità di rientranza tramite send e transfer](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | Informativo | Media
95 | `too-many-digits` | [Conformità alle best practice per la notazione numerica](https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits) | Informativo | Media
96 | `cache-array-length` | [Rileva cicli `for` che utilizzano il membro `length` di qualche array di storage nella condizione del ciclo e non lo modificano.](https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length) | Ottimizzazione | Alta
97 | `constable-states` | [Variabili di stato che potrebbero essere dichiarate costanti](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant) | Ottimizzazione | Alta
98 | `external-function` | [Funzione pubblica che potrebbe essere dichiarata esterna](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) | Ottimizzazione | Alta
99 | `immutable-states` | [Variabili di stato che potrebbero essere dichiarate immutabili](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable) | Ottimizzazione | Alta
100 | `var-read-using-this` | [Il contratto legge la propria variabile usando `this`](https://github.com/crytic/slither/wiki/Detector-Documentation#public-variable-read-in-external-context) | Ottimizzazione | Alta

Per maggiori informazioni, consulta

* La [Documentazione dei Rilevatori](https://github.com/crytic/slither/wiki/Detector-Documentation) per i dettagli su ogni rilevatore
* La [Selezione dei Rilevatori](https://github.com/crytic/slither/wiki/Usage#detector-selection) per eseguire solo rilevatori selezionati. Per impostazione predefinita, vengono eseguiti tutti i rilevatori.
* La [Modalità di Triage](https://github.com/crytic/slither/wiki/Usage#triage-mode) per filtrare i singoli risultati

## Stampanti

### Stampanti per Revisione Rapida

* `human-summary`: [Stampa un riepilogo leggibile dei contratti](https://github.com/trailofbits/slither/wiki/Printer-documentation#human-summary)
* `inheritance-graph`: [Esporta il grafico di ereditarietà di ogni contratto in un file dot](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph)
* `contract-summary`: [Stampa un riepilogo dei contratti](https://github.com/trailofbits/slither/wiki/Printer-documentation#contract-summary)
* `loc`: [Conta il numero totale di righe di codice (LOC), righe di codice sorgente (SLOC) e righe di commento (CLOC) trovate nei file sorgente (SRC), dipendenze (DEP) e file di test (TEST).](https://github.com/trailofbits/slither/wiki/Printer-documentation#loc)
* `entry-points`: [Stampa tutte le funzioni di entry point che modificano lo stato e le loro variabili dei contratti](https://github.com/trailofbits/slither/wiki/Printer-documentation#entry-points)

### Stampanti per Revisione Approfondita* `call-graph`: [Esporta il grafo delle chiamate dei contratti in un file dot](https://github.com/crytic/slither/wiki/Printer-documentation#call-graph)
* `cfg`: [Esporta il CFG di ogni funzione](https://github.com/crytic/slither/wiki/Printer-documentation#cfg)
* `function-summary`: [Stampa un riepilogo delle funzioni](https://github.com/crytic/slither/wiki/Printer-documentation#function-summary)
* `vars-and-auth`: [Stampa le variabili di stato scritte e l'autorizzazione delle funzioni](https://github.com/crytic/slither/wiki/Printer-documentation#variables-written-and-authorization)
* `not-pausable`: [Stampa le funzioni che non usano il modificatore `whenNotPaused`](https://github.com/crytic/slither/wiki/Printer-documentation#when-not-paused).

Per eseguire un printer, usa `--print` e un elenco separato da virgole di printer.

Consulta la [documentazione dei printer](https://github.com/crytic/slither/wiki/Printer-documentation) per gli elenchi completi.

## Strumenti

* `slither-check-upgradeability`: [Revisiona l'aggiornabilità basata su `delegatecall`](https://github.com/crytic/slither/blob/master/docs/src/tools/Upgradeability-Checks.md)
* `slither-prop`: [Generazione automatica di test unitari e proprietà](https://github.com/crytic/slither/blob/master/docs/src/tools/Property-generation.md)
* `slither-flat`: [Appiattisci un codebase](https://github.com/crytic/slither/blob/master/docs/src/tools/Contract-Flattening.md)
* `slither-check-erc`: [Verifica la conformità ERC](https://github.com/crytic/slither/blob/master/docs/src/tools/ERC-Conformance.md)
* `slither-read-storage`: [Leggi i valori di storage dai contratti](https://github.com/crytic/slither/blob/master/docs/src/tools/ReadStorage.md)
* `slither-interface`: [Genera un'interfaccia per un contratto](https://github.com/crytic/slither/blob/master/docs/src/tools/Interface.md)

Consulta la [documentazione degli strumenti](https://github.com/crytic/slither/blob/master/docs/src/tools/README.md) per ulteriori strumenti.

[Contattaci](https://www.trailofbits.com/contact/) per ricevere assistenza nella creazione di strumenti personalizzati.

## Documentazione API

La documentazione degli interni di Slither è disponibile [qui](https://crytic.github.io/slither/slither.html).

## Come ottenere aiuto

Sentiti libero di passare dal nostro [canale Slack](https://empireslacking.herokuapp.com) (#ethereum) per assistenza nell'uso o nell'estensione di Slither.

* La [documentazione dei printer](https://github.com/crytic/slither/wiki/Printer-documentation) descrive le informazioni che Slither è in grado di visualizzare per ogni contratto.

* La [documentazione dei detector](https://github.com/crytic/slither/wiki/Adding-a-new-detector) descrive come scrivere una nuova analisi delle vulnerabilità.

* La [documentazione dell'API](https://github.com/crytic/slither/wiki/Python-API) descrive i metodi e gli oggetti disponibili per analisi personalizzate.

* La [documentazione di SlithIR](https://github.com/crytic/slither/wiki/SlithIR) descrive la rappresentazione intermedia SlithIR.

## FAQ

Come si escludono mock o test?

* Consulta la nostra documentazione sul [filtraggio dei percorsi](https://github.com/crytic/slither/wiki/Usage#path-filtering).

Come risolvo "file sconosciuto" o problemi di compilazione?

* Poiché slither richiede l'AST di solc, deve avere tutte le dipendenze disponibili.
Se un contratto ha dipendenze, `slither contract.sol` fallirà.
Invece, usa `slither .` nella directory padre di `contracts/` (dovresti vedere `contracts/` quando esegui `ls`).
Se hai una cartella `node_modules/`, deve trovarsi nella stessa directory di `contracts/`. Per verificare che questo problema sia relativo a slither,
esegui il comando di compilazione per il framework che stai utilizzando, ad esempio `npx hardhat compile`. Deve funzionare con successo;
altrimenti, il motore di compilazione di slither, crytic-compile, non può generare l'AST.

## Licenza

Slither è concesso in licenza e distribuito sotto la licenza AGPLv3. [Contattaci](mailto:[email protected]) se cerchi un'eccezione ai termini.

## Pubblicazioni

### Pubblicazione di Trail of Bits

* [Slither: A Static Analysis Framework For Smart Contracts](https://arxiv.org/abs/1908.09878), Josselin Feist, Gustavo Grieco, Alex Groce - WETSEB '19

### Pubblicazioni esterne

Titolo | Utilizzo | Autori | Sede | Codice
--- | --- | --- | --- | ---
[ReJection: A AST-Based Reentrancy Vulnerability Detection Method](https://www.researchgate.net/publication/339354823_ReJection_A_AST-Based_Reentrancy_Vulnerability_Detection_Method) | Analisi basata su AST costruita sopra Slither | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 | -
[MPro: Combining Static and Symbolic Analysis for Scalable Testing of Smart Contract](https://arxiv.org/pdf/1911.00570.pdf) | Sfrutta le dipendenze dei dati tramite Slither | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | [MPro](https://github.com/QuanZhang-William/M-Pro)
[ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart Contracts](https://wcventure.github.io/FuzzingPaper/Paper/SANER20_ETHPLOIT.pdf) | Sfrutta le dipendenze dei dati tramite Slither | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | -
[Verification of Ethereum Smart Contracts: A Model Checking Approach](http://www.ijmlc.org/vol10/977-AM0059.pdf) | Esecuzione simbolica costruita sopra il CFG di Slither | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | -
[Smart Contract Repair](https://arxiv.org/pdf/1912.05823.pdf) | Si basa sui detector di vulnerabilità di Slither | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | [SCRepair](https://github.com/xiaoly8/SCRepair/)
[Demystifying Loops in Smart Contracts](https://www.microsoft.com/en-us/research/uploads/prod/2020/08/loops_solidity__camera_ready-5f3fec3f15c69.pdf) | Sfrutta le dipendenze dei dati tramite Slither | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | -
[Trace-Based Dynamic Gas Estimation of Loops in Smart Contracts](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9268144) | Usa il CFG di Slither per rilevare i loop | Chunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang Hu | IEEE Open J. Comput. Soc. 1 (2020) | -
[SAILFISH: Vetting Smart Contract State-Inconsistency Bugs in Seconds](https://arxiv.org/pdf/2104.08638.pdf) | Si basa su SlithIR per costruire un *grafo delle dipendenze di storage* | Priyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni Vigna | S&P 22 | [Sailfish](https://github.com/ucsb-seclab/sailfish)
```

---

[Read more](https://github.com/crytic/slither)
Scarica lo strumento