Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
slither — Analyseur statique pour Solidity et Vyper | Kitploit
Outils/GitHubGitHub/crytic/slither
Analyse StatiqueAnalyse des VulnérabilitésAnalyse de Code
GitHubcrytic/slither

slither

Analyseur statique pour Solidity et Vyper

Voir le dépôtSite web
6.3k1.1k54il y a 4 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
# [Slither, l'analyseur statique de contrats intelligents](https://crytic.github.io/slither/slither.html)

<img src="https://assets.kitploit.com/production/public/readmes/2943/62b8c109c585043091c50668ec219aa530aa6d589d7cda02181bf209249f5205.png" alt="Logo de Slither Static Analysis Framework" width="500" />

[![Statut du 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 - Lire la documentation](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)

> Rejoignez le Slack Empire Hacking
>
> [![Statut Slack](https://slack.empirehacking.nyc/badge.svg)](https://slack.empirehacking.nyc/)
> > _- Discussions et Support_

**Slither** est un framework d'analyse statique pour Solidity et Vyper écrit en Python3. Il exécute une suite de détecteurs de vulnérabilités, affiche des informations visuelles sur les détails des contrats, et fournit une API pour écrire facilement des analyses personnalisées. Slither permet aux développeurs de trouver des vulnérabilités, d'améliorer leur compréhension du code, et de prototyper rapidement des analyses personnalisées.

* [Fonctionnalités](#features)
* [Utilisation](#usage)
* [Installation](#how-to-install)
  * [Avec uv (Recommandé)](#using-uv-recommended)
  * [Avec pip](#using-pip)
  * [Avec Git](#using-git-development)
  * [Avec Docker](#using-docker)
  * [Intégration](#integration)
* [Détecteurs](#detectors)
* [Affichages](#printers)
  * [Affichages de révision rapide](#quick-review-printers)
  * [Affichages de révision approfondie](#in-depth-review-printers)
* [Outils](#tools)
* [Documentation de l'API](#api-documentation)
* [Obtenir de l'aide](#getting-help)
* [FAQ](#faq)
* [Licence](#license)
* [Publications](#publications)
  * [Publication de Trail of Bits](#trail-of-bits-publication)
  * [Publications externes](#external-publications)

## Fonctionnalités

* Détecte le code Solidity vulnérable avec un faible taux de faux positifs (voir la liste des [trophées](https://github.com/crytic/slither/blob/master/trophies.md))
* Identifie où l'erreur se produit dans le code source
* S'intègre facilement dans l'intégration continue et les builds Hardhat/Foundry
* Les 'printers' intégrés rapportent rapidement les informations cruciales du contrat
* API de détecteur pour écrire des analyses personnalisées en Python
* Capacité à analyser des contrats écrits avec Solidity >= 0.4
* La représentation intermédiaire ([SlithIR](https://github.com/crytic/slither/wiki/SlithIR)) permet des analyses simples et de haute précision
* Analyse correctement 99,9 % de tout le code Solidity public
* Temps d'exécution moyen inférieur à 1 seconde par contrat
* S'intègre avec le scan de code de GitHub dans l'[IC](https://github.com/marketplace/actions/slither-action)
* Prise en charge des contrats intelligents Vyper

## Utilisation

Exécutez Slither sur une application Hardhat/Foundry/Dapp/Brownie :```console
slither .
```
C'est l'option préférée si votre projet a des dépendances, car Slither s'appuie sur le framework de compilation sous-jacent pour compiler le code source.

Cependant, vous pouvez exécuter Slither sur un seul fichier qui n'importe pas de dépendances :```console
slither tests/uninitialized.sol
```
## Comment installer

> **Remarque**
> Slither nécessite Python 3.10+.
Si vous **n'utilisez pas** l'un des [frameworks de compilation pris en charge](https://github.com/crytic/crytic-compile), vous avez besoin de [solc](https://github.com/ethereum/solidity/), le compilateur Solidity ; nous recommandons d'utiliser [solc-select](https://github.com/crytic/solc-select) pour basculer facilement entre les versions de solc.

### Utiliser uv (Recommandé)

[uv](https://github.com/astral-sh/uv) est un gestionnaire de paquets Python rapide qui est 10 à 100 fois plus rapide que 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>
```
Pour mettre à niveau:```console
uv tool upgrade slither-analyzer
```
### Utilisation de Pip```console
python3 -m pip install slither-analyzer
```
Pour mettre à niveau :```console
python3 -m pip install --upgrade slither-analyzer
```
### Utilisation de Brew```console
brew install slither-analyzer
```
### Utilisation de Git (Développement)```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>
```
Le drapeau `-e` installe en mode éditable, ce qui signifie que les modifications du code source sont immédiatement appliquées sans réinstallation.

### Utilisation de Docker

Utilisez l'image docker [`eth-security-toolbox`](https://github.com/crytic/eth-security-toolbox/). Elle inclut tous nos outils de sécurité et chaque version majeure de Solidity dans une seule image. `/home/share` sera monté sur `/share` dans le conteneur.```bash
docker pull trailofbits/eth-security-toolbox
```
Pour partager un répertoire dans le conteneur :```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
```
### Intégration

* Pour l'intégration avec GitHub Action, utilisez [slither-action](https://github.com/marketplace/actions/slither-action).
* Pour l'intégration pre-commit, utilisez (remplacez `$GIT_TAG` par le vrai tag)  ```YAML
  - repo: https://github.com/crytic/slither
    rev: $GIT_TAG
    hooks:
      - id: slither
  ```
* Pour générer un rapport Markdown, utilisez `slither [target] --checklist`.
* Pour générer un Markdown avec mise en évidence du code source GitHub, utilisez `slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/` (remplacez `ORG`, `REPO`, `COMMIT`)

## Détecteurs

Num | Détecteur | Ce qu'il détecte | Impact | Confiance
--- | --- | --- | --- | ---
1 | `abiencoderv2-array` | [Stockage du tableau abiencoderv2](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-abiencoderv2-array) | Élevé | Élevée
2 | `arbitrary-send-erc20` | [transferFrom utilise un `from` arbitraire](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom) | Élevé | Élevée
3 | `array-by-reference` | [Modification du tableau de stockage par valeur](https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value) | Élevé | Élevée
4 | `encode-packed-collision` | [Collision ABI encodePacked](https://github.com/crytic/slither/wiki/Detector-Documentation#abi-encodePacked-collision) | Élevé | Élevée
5 | `incorrect-shift` | [L'ordre des paramètres dans une instruction de décalage est incorrect](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-shift-in-assembly) | Élevé | Élevée
6 | `multiple-constructors` | [Schémas de constructeurs multiples](https://github.com/crytic/slither/wiki/Detector-Documentation#multiple-constructor-schemes) | Élevé | Élevée
7 | `name-reused` | [Nom de contrat réutilisé](https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused) | Élevé | Élevée
8 | `protected-vars` | [Variables non protégées détectées](https://github.com/crytic/slither/wiki/Detector-Documentation#protected-variables) | Élevé | Élevée
9 | `public-mappings-nested` | [Mappings publics avec variables imbriquées](https://github.com/crytic/slither/wiki/Detector-Documentation#public-mappings-with-nested-variables) | Élevé | Élevée
10 | `rtlo` | [Caractère de contrôle Right-To-Left Override utilisé](https://github.com/crytic/slither/wiki/Detector-Documentation#right-to-left-override-character) | Élevé | Élevée
11 | `shadowing-state` | [Variables d'état masquées](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing) | Élevé | Élevée
12 | `suicidal` | [Fonctions permettant à quiconque de détruire le contrat](https://github.com/crytic/slither/wiki/Detector-Documentation#suicidal) | Élevé | Élevée
13 | `uninitialized-state` | [Variables d'état non initialisées](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables) | Élevé | Élevée
14 | `uninitialized-storage` | [Variables de stockage non initialisées](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-storage-variables) | Élevé | Élevée
15 | `unprotected-upgrade` | [Contrat évolutif non protégé](https://github.com/crytic/slither/wiki/Detector-Documentation#unprotected-upgradeable-contract) | Élevé | Élevée
16 | `arbitrary-send-erc20-permit` | [transferFrom utilise un `from` arbitraire avec permit](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom-used-with-permit) | Élevé | Moyenne
17 | `arbitrary-send-eth` | [Fonctions qui envoient de l'Ether vers des destinations arbitraires](https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations) | Élevé | Moyenne
18 | `controlled-array-length` | [Affectation de longueur de tableau contaminée](https://github.com/crytic/slither/wiki/Detector-Documentation#array-length-assignment) | Élevé | Moyenne
19 | `controlled-delegatecall` | [Destination delegatecall contrôlée](https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall) | Élevé | Moyenne
20 | `delegatecall-loop` | [Fonctions payables utilisant `delegatecall` dans une boucle](https://github.com/crytic/slither/wiki/Detector-Documentation/#payable-functions-using-delegatecall-inside-a-loop) | Élevé | Moyenne
21 | `incorrect-exp` | [Exponentiation incorrecte](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation) | Élevé | Moyenne
22 | `incorrect-return` | [Si un `return` est utilisé incorrectement en mode assembly](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-return-in-assembly) | Élevé | Moyenne
23 | `msg-value-loop` | [msg.value dans une boucle](https://github.com/crytic/slither/wiki/Detector-Documentation/#msgvalue-inside-a-loop) | Élevé | Moyenne
24 | `reentrancy-eth` | [Vulnérabilités de réentrance (vol d'Ether)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities) | Élevé | Moyenne
25 | `reentrancy-balance` | [Vulnérabilités de réentrance entraînant des vérifications de solde obsolètes](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | Élevé | Moyenne
26 | `return-leave` | [Si un `return` est utilisé à la place d'un `leave`](https://github.com/crytic/slither/wiki/Detector-Documentation#return-instead-of-leave-in-assembly) | Élevé | Moyenne
27 | `storage-array` | [Bogue du compilateur pour les tableaux d'entiers signés en stockage](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-signed-integer-array) | Élevé | Moyenne
28 | `unchecked-transfer` | [Transfert de jetons non vérifié](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer) | Élevé | Moyenne
29 | `weak-prng` | [PRNG faible](https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG) | Élevé | Moyenne
30 | `domain-separator-collision` | [Détecte les jetons ERC20 dont une fonction a une signature en collision avec DOMAIN_SEPARATOR() d'EIP-2612](https://github.com/crytic/slither/wiki/Detector-Documentation#domain-separator-collision) | Moyen | Élevée
31 | `enum-conversion` | [Conversion d'enum dangereuse](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-enum-conversion) | Moyen | Élevée
32 | `erc20-interface` | [Interfaces ERC20 incorrectes](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface) | Moyen | Élevée
33 | `erc721-interface` | [Interfaces ERC721 incorrectes](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc721-interface) | Moyen | Élevée
34 | `incorrect-equality` | [Égalités strictes dangereuses](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities) | Moyen | Élevée
35 | `locked-ether` | [Contrats qui bloquent de l'Ether](https://github.com/crytic/slither/wiki/Detector-Documentation#contracts-that-lock-ether) | Moyen | Élevée
36 | `mapping-deletion` | [Suppression sur un mapping contenant une structure](https://github.com/crytic/slither/wiki/Detector-Documentation#deletion-on-mapping-containing-a-structure) | Moyen | Élevée
37 | `pyth-deprecated-functions` | [Détecter les fonctions Pyth obsolètes](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-deprecated-functions) | Moyen | Élevée
38 | `pyth-unchecked-confidence` | [Détecter lorsque le niveau de confiance d'un prix Pyth n'est pas vérifié](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-unchecked-confidence-level) | Moyen | Élevée
39 | `pyth-unchecked-publishtime` | [Détecter lorsque le publishTime d'un prix Pyth n'est pas vérifié](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-unchecked-publishtime) | Moyen | Élevée
40 | `shadowing-abstract` | [Variables d'état masquées depuis des contrats abstraits](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing-from-abstract-contracts) | Moyen | Élevée
41 | `tautological-compare` | [Comparer une variable à elle-même retourne toujours vrai ou faux, selon la comparaison](https://github.com/crytic/slither/wiki/Detector-Documentation#tautological-compare) | Moyen | Élevée
42 | `tautology` | [Tautologie ou contradiction](https://github.com/crytic/slither/wiki/Detector-Documentation#tautology-or-contradiction) | Moyen | Élevée
43 | `write-after-write` | [Écriture inutilisée](https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write) | Moyen | Élevée
44 | `boolean-cst` | [Mauvais usage d'une constante booléenne](https://github.com/crytic/slither/wiki/Detector-Documentation#misuse-of-a-boolean-constant) | Moyen | Moyenne
45 | `chronicle-unchecked-price` | [Détecter lorsque le prix Chronicle n'est pas vérifié](https://github.com/crytic/slither/wiki/Detector-Documentation#chronicle-unchecked-price) | Moyen | Moyenne
46 | `constant-function-asm` | [Fonctions constantes utilisant du code assembly](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-using-assembly-code) | Moyen | Moyenne
47 | `constant-function-state` | [Fonctions constantes modifiant l'état](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-changing-the-state) | Moyen | Moyenne
48 | `divide-before-multiply` | [Ordre des opérations arithmétiques imprécises](https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply) | Moyen | Moyenne
49 | `gelato-unprotected-randomness` | [Appel à `_requestRandomness` dans une fonction non protégée](https://github.com/crytic/slither/wiki/Detector-Documentation#gelato-unprotected-randomness) | Moyen | Moyenne
50 | `out-of-order-retryable` | [Transactions retryables désordonnées](https://github.com/crytic/slither/wiki/Detector-Documentation#out-of-order-retryable-transactions) | Moyen | Moyenne
51 | `reentrancy-no-eth` | [Vulnérabilités de réentrance (sans vol d'Ether)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1) | Moyen | Moyenne
52 | `reused-constructor` | [Constructeur de base réutilisé](https://github.com/crytic/slither/wiki/Detector-Documentation#reused-base-constructors) | Moyen | Moyenne
53 | `tx-origin` | [Usage dangereux de `tx.origin`](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin) | Moyen | Moyenne
54 | `unchecked-lowlevel` | [Appels bas niveau non vérifiés](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-low-level-calls) | Moyen | Moyenne
55 | `unchecked-send` | [Send non vérifié](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-send) | Moyen | Moyenne
56 | `uninitialized-local` | [Variables locales non initialisées](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables) | Moyen | Moyenne
57 | `unused-return` | [Valeurs de retour inutilisées](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return) | Moyen | Moyenne
58 | `chainlink-feed-registry` | [Détecter l'utilisation du registre de flux Chainlink](https://github.com/crytic/slither/wiki/Detector-Documentation#chainlink-feed-registry-usage) | Faible | Élevée
59 | `incorrect-modifier` | [Modificateurs pouvant retourner la valeur par défaut](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier) | Faible | Élevée
60 | `optimism-deprecation` | [Détecter lorsqu'un predeploy ou une fonction Obsolète d'Optimism est utilisé](https://github.com/crytic/slither/wiki/Detector-Documentation#optimism-deprecated-predeploy-or-function) | Faible | Élevée
61 | `shadowing-builtin` | [Masquage de symbole intégré](https://github.com/crytic/slither/wiki/Detector-Documentation#builtin-symbol-shadowing) | Faible | Élevée
62 | `shadowing-local` | [Masquage de variables locales](https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing) | Faible | Élevée
63 | `uninitialized-fptr-cst` | [Appels à des pointeurs de fonction non initialisés dans les constructeurs](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-function-pointers-in-constructors) | Faible | Élevée
64 | `variable-scope` | [Variables locales utilisées avant leur déclaration](https://github.com/crytic/slither/wiki/Detector-Documentation#pre-declaration-usage-of-local-variables) | Faible | Élevée
65 | `void-cst` | [Constructeur appelé non implémenté](https://github.com/crytic/slither/wiki/Detector-Documentation#void-constructor) | Faible | Élevée
66 | `calls-loop` | [Appels multiples dans une boucle](https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop) | Faible | Moyenne
67 | `events-access` | [Contrôle d'accès aux événements manquants](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control) | Faible | Moyenne
68 | `events-maths` | [Événements arithmétiques manquants](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic) | Faible | Moyenne
69 | `incorrect-unary` | [Expressions unaires dangereuses](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-unary-expressions) | Faible | Moyenne
70 | `missing-zero-check` | [Validation d'adresse zéro manquante](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation) | Faible | Moyenne
71 | `reentrancy-benign` | [Vulnérabilités de réentrance bénignes](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2) | Faible | Moyenne
72 | `reentrancy-events` | [Vulnérabilités de réentrance entraînant des événements désordonnés](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3) | Faible | Moyenne
73 | `return-bomb` | [Un appelé bas niveau peut consommer tout le gaz de l'appelant de manière inattendue](https://github.com/crytic/slither/wiki/Detector-Documentation#return-bomb) | Faible | Moyenne
74 | `timestamp` | [Usage dangereux de `block.timestamp`](https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp) | Faible | Moyenne
75 | `assembly` | [Usage de l'assembly](https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage) | Informative | Élevée
76 | `assert-state-change` | [Changement d'état dans un assert](https://github.com/crytic/slither/wiki/Detector-Documentation#assert-state-change) | Informative | Élevée
77 | `boolean-equal` | [Comparaison à une constante booléenne](https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality) | Informative | Élevée
78 | `cyclomatic-complexity` | [Détecte les fonctions avec une complexité cyclomatique élevée (> 11)](https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity) | Informative | Élevée
79 | `deprecated-standards` | [Standards Solidity obsolètes](https://github.com/crytic/slither/wiki/Detector-Documentation#deprecated-standards) | Informative | Élevée
80 | `erc20-indexed` | [Paramètres d'événement ERC20 non indexés](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters) | Informative | Élevée
81 | `function-init-state` | [Fonction initialisant des variables d'état](https://github.com/crytic/slither/wiki/Detector-Documentation#function-initializing-state) | Informative | Élevée
82 | `incorrect-using-for` | [Détecte l'utilisation d'une déclaration using-for lorsqu'aucune fonction d'une bibliothèque donnée ne correspond à un type donné](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-usage-of-using-for-statement) | Informative | Élevée
83 | `low-level-calls` | [Appels bas niveau](https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls) | Informative | Élevée
84 | `missing-inheritance` | [Héritage manquant](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance) | Informative | Élevée
85 | `naming-convention` | [Conformité aux conventions de nommage Solidity](https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions) | Informative | Élevée
86 | `pragma` | [Si différentes directives pragma sont utilisées](https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used) | Informative | Élevée
87 | `redundant-statements` | [Instructions redondantes](https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements) | Informative | Élevée
88 | `solc-version` | [Version de Solidity incorrecte](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity) | Informative | Élevée
89 | `unimplemented-functions` | [Fonctions non implémentées](https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions) | Informative | Élevée
90 | `unindexed-event-address` | [Événements avec paramètres d'adresse mais aucun paramètre indexé](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-event-address-parameters) | Informative | Élevée
91 | `unused-state` | [Variables d'état inutilisées](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable) | Informative | Élevée
92 | `costly-loop` | [Opérations coûteuses dans une boucle](https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop) | Informative | Moyenne
93 | `dead-code` | [Fonctions qui ne sont pas utilisées](https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code) | Informative | Moyenne
94 | `reentrancy-unlimited-gas` | [Vulnérabilités de réentrance via send et transfer](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | Informative | Moyenne
95 | `too-many-digits` | [Conformité aux bonnes pratiques de notation numérique](https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits) | Informative | Moyenne
96 | `cache-array-length` | [Détecte les boucles `for` qui utilisent le membre `length` d'un tableau de stockage dans leur condition de boucle et ne le modifient pas](https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length) | Optimisation | Élevée
97 | `constable-states` | [Variables d'état qui pourraient être déclarées constantes](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant) | Optimisation | Élevée
98 | `external-function` | [Fonction publique qui pourrait être déclarée externe](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) | Optimisation | Élevée
99 | `immutable-states` | [Variables d'état qui pourraient être déclarées immutables](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable) | Optimisation | Élevée
100 | `var-read-using-this` | [Le contrat lit sa propre variable en utilisant `this`](https://github.com/crytic/slither/wiki/Detector-Documentation#public-variable-read-in-external-context) | Optimisation | Élevée

Pour plus d'informations, voir

* La [Documentation des détecteurs](https://github.com/crytic/slither/wiki/Detector-Documentation) pour les détails de chaque détecteur
* La [Sélection des détecteurs](https://github.com/crytic/slither/wiki/Usage#detector-selection) pour exécuter uniquement les détecteurs sélectionnés. Par défaut, tous les détecteurs sont exécutés.
* Le [Mode de triage](https://github.com/crytic/slither/wiki/Usage#triage-mode) pour filtrer les résultats individuels

## Imprimantes

### Imprimantes de révision rapide

* `human-summary` : [Imprime un résumé lisible des contrats](https://github.com/trailofbits/slither/wiki/Printer-documentation#human-summary)
* `inheritance-graph` : [Exporte le graphe d'héritage de chaque contrat vers un fichier dot](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph)
* `contract-summary` : [Imprime un résumé des contrats](https://github.com/trailofbits/slither/wiki/Printer-documentation#contract-summary)
* `loc` : [Compte le nombre total de lignes de code (LOC), de lignes de code source (SLOC) et de lignes de commentaire (CLOC) trouvées dans les fichiers sources (SRC), les dépendances (DEP) et les fichiers de test (TEST).](https://github.com/trailofbits/slither/wiki/Printer-documentation#loc)
* `entry-points` : [Imprime toutes les fonctions de point d'entrée modifiant l'état et leurs variables des contrats](https://github.com/trailofbits/slither/wiki/Printer-documentation#entry-points)

### Imprimantes de révision approfondie* `call-graph`: [Exporter le graphe d'appel des contrats vers un fichier dot](https://github.com/crytic/slither/wiki/Printer-documentation#call-graph)
* `cfg`: [Exporter le CFG de chaque fonction](https://github.com/crytic/slither/wiki/Printer-documentation#cfg)
* `function-summary`: [Afficher un résumé des fonctions](https://github.com/crytic/slither/wiki/Printer-documentation#function-summary)
* `vars-and-auth`: [Afficher les variables d'état écrites et l'autorisation des fonctions](https://github.com/crytic/slither/wiki/Printer-documentation#variables-written-and-authorization)
* `not-pausable`: [Afficher les fonctions qui n'utilisent pas le modificateur `whenNotPaused`](https://github.com/crytic/slither/wiki/Printer-documentation#when-not-paused).

Pour exécuter une imprimante, utilisez `--print` et une liste d'imprimantes séparées par des virgules.

Consultez la [documentation des imprimantes](https://github.com/crytic/slither/wiki/Printer-documentation) pour la liste complète.

## Outils

* `slither-check-upgradeability`: [Vérifier la mise à niveau basée sur `delegatecall`](https://github.com/crytic/slither/blob/master/docs/src/tools/Upgradeability-Checks.md)
* `slither-prop`: [Génération automatique de tests unitaires et de propriétés](https://github.com/crytic/slither/blob/master/docs/src/tools/Property-generation.md)
* `slither-flat`: [Aplatir une base de code](https://github.com/crytic/slither/blob/master/docs/src/tools/Contract-Flattening.md)
* `slither-check-erc`: [Vérifier la conformité ERC](https://github.com/crytic/slither/blob/master/docs/src/tools/ERC-Conformance.md)
* `slither-read-storage`: [Lire les valeurs de stockage des contrats](https://github.com/crytic/slither/blob/master/docs/src/tools/ReadStorage.md)
* `slither-interface`: [Générer une interface pour un contrat](https://github.com/crytic/slither/blob/master/docs/src/tools/Interface.md)

Consultez la [documentation des outils](https://github.com/crytic/slither/blob/master/docs/src/tools/README.md) pour des outils supplémentaires.

[Contactez-nous](https://www.trailofbits.com/contact/) pour obtenir de l'aide sur la construction d'outils personnalisés.

## Documentation de l'API

La documentation sur les internes de Slither est disponible [ici](https://crytic.github.io/slither/slither.html).

## Obtenir de l'aide

N'hésitez pas à passer sur notre [canal Slack](https://empireslacking.herokuapp.com) (#ethereum) pour obtenir de l'aide sur l'utilisation ou l'extension de Slither.

* La [documentation des imprimantes](https://github.com/crytic/slither/wiki/Printer-documentation) décrit les informations que Slither est capable de visualiser pour chaque contrat.

* La [documentation des détecteurs](https://github.com/crytic/slither/wiki/Adding-a-new-detector) décrit comment écrire une nouvelle analyse de vulnérabilité.

* La [documentation de l'API](https://github.com/crytic/slither/wiki/Python-API) décrit les méthodes et objets disponibles pour les analyses personnalisées.

* La [documentation SlithIR](https://github.com/crytic/slither/wiki/SlithIR) décrit la représentation intermédiaire SlithIR.

## FAQ

Comment exclure les mocks ou les tests ?

* Consultez notre documentation sur le [filtrage de chemin](https://github.com/crytic/slither/wiki/Usage#path-filtering).

Comment corriger les problèmes de fichier inconnu ou de compilation ?

* Comme Slither nécessite l'AST de solc, toutes les dépendances doivent être disponibles.
Si un contrat a des dépendances, `slither contract.sol` échouera.
Utilisez plutôt `slither .` dans le répertoire parent de `contracts/` (vous devriez voir `contracts/` lorsque vous exécutez `ls`).
Si vous avez un dossier `node_modules/`, il doit se trouver dans le même répertoire que `contracts/`. Pour vérifier que ce problème est lié à Slither,
exécutez la commande de compilation pour le framework que vous utilisez, par exemple `npx hardhat compile`. Cela doit fonctionner avec succès ;
sinon, le moteur de compilation de Slither, crytic-compile, ne peut pas générer l'AST.

## Licence

Slither est sous licence et distribué sous la licence AGPLv3. [Contactez-nous](mailto:[email protected]) si vous recherchez une exception aux conditions.

## Publications

### Publication de 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

### Publications externes

Titre | Utilisation | Auteurs | Conférence/Publication | Code
--- | --- | --- | --- | ---
[ReJection: A AST-Based Reentrancy Vulnerability Detection Method](https://www.researchgate.net/publication/339354823_ReJection_A_AST-Based_Reentrancy_Vulnerability_Detection_Method) | Analyse basée sur l'AST construite au-dessus de 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) | Exploiter la dépendance de données via 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) | Exploiter la dépendance de données via 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) | Exécution symbolique construite au-dessus du CFG de Slither | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | -
[Smart Contract Repair](https://arxiv.org/pdf/1912.05823.pdf) | S'appuyer sur les détecteurs de vulnérabilités de Slither | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | [SCRepair](https://github.com/xiaoly8/SCRepair/)
```

---

[Read more](https://github.com/crytic/slither)
Télécharger l’outil