Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
slither — SolidityおよびVyper用静的解析ツール | Kitploit
ツール/GitHubGitHub/crytic/slither
静的分析脆弱性分析コード分析
GitHubcrytic/slither

slither

SolidityおよびVyper用静的解析ツール

リポジトリを見るウェブサイト
6.3k1.1k544日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
# [Slither:スマートコントラクト静的解析ツール](https://crytic.github.io/slither/slither.html)

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

[![Build Status](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 - Read the Docs](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)

> Empire Hacking Slack に参加
>
> [![Slack Status](https://slack.empirehacking.nyc/badge.svg)](https://slack.empirehacking.nyc/)
> > _- 議論とサポート_

**Slither** は、Python3 で書かれた Solidity および Vyper の静的解析フレームワークです。脆弱性検出器一式を実行し、コントラクトの詳細に関する視覚情報を出力し、カスタム解析を簡単に記述するための API を提供します。Slither により、開発者は脆弱性の発見、コード理解の向上、カスタム解析の迅速なプロトタイピングが可能になります。

* [特徴](#features)
* [使い方](#usage)
* [インストール方法](#how-to-install)
  * [uv を使用 (推奨)](#using-uv-recommended)
  * [Pip を使用](#using-pip)
  * [Git を使用](#using-git-development)
  * [Docker を使用](#using-docker)
  * [統合](#integration)
* [検出器](#detectors)
* [プリンター](#printers)
  * [クイックレビュープリンター](#quick-review-printers)
  * [詳細レビュープリンター](#in-depth-review-printers)
* [ツール](#tools)
* [API ドキュメント](#api-documentation)
* [ヘルプ](#getting-help)
* [FAQ](#faq)
* [ライセンス](#license)
* [出版物](#publications)
  * [Trail of Bits の出版物](#trail-of-bits-publication)
  * [外部の出版物](#external-publications)

## 特徴

* 誤検出の少ない脆弱な Solidity コードの検出([トロフィー](https://github.com/crytic/slither/blob/master/trophies.md)のリストを参照)
* ソースコード内のエラー発生箇所の特定
* 継続的インテグレーションおよび Hardhat/Foundry ビルドへの容易な統合
* 組み込みの「プリンター」による重要なコントラクト情報の迅速なレポート
* カスタム解析を Python で記述するための検出器 API
* Solidity >= 0.4 で書かれたコントラクトの解析機能
* 中間表現 ([SlithIR](https://github.com/crytic/slither/wiki/SlithIR)) によるシンプルかつ高精度な解析
* 公開されている Solidity コードの 99.9% を正しくパース
* コントラクトあたりの平均実行時間は 1 秒未満
* [CI](https://github.com/marketplace/actions/slither-action) における GitHub のコードスキャンとの統合
* Vyper スマートコントラクトのサポート

## 使い方

Slither を Hardhat/Foundry/Dapp/Brownie アプリケーションで実行:```console
slither .
```
これは、プロジェクトに依存関係がある場合の推奨されるオプションです。Slitherは基盤となるコンパイルフレームワークに依存してソースコードをコンパイルします。

ただし、依存関係をインポートしない単一ファイル上でSlitherを実行することもできます:```console
slither tests/uninitialized.sol
```
## インストール方法

> **注記**
> SlitherはPython 3.10以上が必要です。
[サポートされているコンパイルフレームワーク](https://github.com/crytic/crytic-compile)のいずれかを使用**しない**場合は、Solidityコンパイラである[solc](https://github.com/ethereum/solidity/)が必要です。solcのバージョンを簡単に切り替えるには、[solc-select](https://github.com/crytic/solc-select)の使用をお勧めします。

### uvを使用する(推奨)

[uv](https://github.com/astral-sh/uv)は高速なPythonパッケージマネージャで、pipよりも10〜100倍高速です。```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>
```
アップグレードするには:```console
uv tool upgrade slither-analyzer
```
### Pipを使用する```console
python3 -m pip install slither-analyzer
```
アップグレードするには:```console
python3 -m pip install --upgrade slither-analyzer
```
### Brew を使用する```console
brew install slither-analyzer
```
### Gitの使用(開発)```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>
```
The `-e`フラグは編集可能モードでインストールします。つまり、ソースコードへの変更は再インストールなしで即座に反映されます。

### Dockerの使用

[`eth-security-toolbox`](https://github.com/crytic/eth-security-toolbox/) Dockerイメージを使用してください。これには、すべてのセキュリティツールと、主要なすべてのバージョンのSolidityが1つのイメージに含まれています。 `/home/share` はコンテナ内の `/share` にマウントされます。```bash
docker pull trailofbits/eth-security-toolbox
```
コンテナ内でディレクトリを共有するには:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
```
### 統合

* GitHub Actionとの統合には、[slither-action](https://github.com/marketplace/actions/slither-action)を使用してください。
* pre-commitとの統合には、 (`$GIT_TAG` を実際のタグに置き換えて) 使用してください  ```YAML
  - repo: https://github.com/crytic/slither
    rev: $GIT_TAG
    hooks:
      - id: slither
  ```
* マークダウンレポートを生成するには、`slither [target] --checklist` を使用します。
* GitHub のソースコードハイライト付きマークダウンを生成するには、`slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/` を使用します(`ORG`、`REPO`、`COMMIT` を置き換えてください)。

## 検出器

番号 | 検出器 | 検出内容 | 影響度 | 信頼度
--- | --- | --- | --- | ---
1 | `abiencoderv2-array` | [ストレージ abiencoderv2 配列](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-abiencoderv2-array) | 高 | 高
2 | `arbitrary-send-erc20` | [任意の `from` を使用した transferFrom](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom) | 高 | 高
3 | `array-by-reference` | [ストレージ配列を値で変更](https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value) | 高 | 高
4 | `encode-packed-collision` | [ABI encodePacked の衝突](https://github.com/crytic/slither/wiki/Detector-Documentation#abi-encodePacked-collision) | 高 | 高
5 | `incorrect-shift` | [シフト命令のパラメータの順序が不正](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-shift-in-assembly) | 高 | 高
6 | `multiple-constructors` | [複数のコンストラクタスキーム](https://github.com/crytic/slither/wiki/Detector-Documentation#multiple-constructor-schemes) | 高 | 高
7 | `name-reused` | [コントラクト名の再利用](https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused) | 高 | 高
8 | `protected-vars` | [保護されていない変数を検出](https://github.com/crytic/slither/wiki/Detector-Documentation#protected-variables) | 高 | 高
9 | `public-mappings-nested` | [ネストされた変数を持つ公開マッピング](https://github.com/crytic/slither/wiki/Detector-Documentation#public-mappings-with-nested-variables) | 高 | 高
10 | `rtlo` | [右から左へのオーバーライド制御文字の使用](https://github.com/crytic/slither/wiki/Detector-Documentation#right-to-left-override-character) | 高 | 高
11 | `shadowing-state` | [状態変数のシャドーイング](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing) | 高 | 高
12 | `suicidal` | [誰でもコントラクトを破棄できる関数](https://github.com/crytic/slither/wiki/Detector-Documentation#suicidal) | 高 | 高
13 | `uninitialized-state` | [初期化されていない状態変数](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables) | 高 | 高
14 | `uninitialized-storage` | [初期化されていないストレージ変数](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-storage-variables) | 高 | 高
15 | `unprotected-upgrade` | [保護されていないアップグレード可能なコントラクト](https://github.com/crytic/slither/wiki/Detector-Documentation#unprotected-upgradeable-contract) | 高 | 高
16 | `arbitrary-send-erc20-permit` | [permit と共に任意の from を使用した transferFrom](https://github.com/crytic/slither/wiki/Detector-Documentation#arbitrary-from-in-transferfrom-used-with-permit) | 高 | 中
17 | `arbitrary-send-eth` | [任意の宛先に Ether を送信する関数](https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations) | 高 | 中
18 | `controlled-array-length` | [汚染された配列長の代入](https://github.com/crytic/slither/wiki/Detector-Documentation#array-length-assignment) | 高 | 中
19 | `controlled-delegatecall` | [制御された delegatecall の宛先](https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall) | 高 | 中
20 | `delegatecall-loop` | [ループ内で `delegatecall` を使用する payable 関数](https://github.com/crytic/slither/wiki/Detector-Documentation/#payable-functions-using-delegatecall-inside-a-loop) | 高 | 中
21 | `incorrect-exp` | [不正な指数演算](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation) | 高 | 中
22 | `incorrect-return` | [アセンブリモードで `return` が誤って使用された場合](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-return-in-assembly) | 高 | 中
23 | `msg-value-loop` | [ループ内の `msg.value`](https://github.com/crytic/slither/wiki/Detector-Documentation/#msgvalue-inside-a-loop) | 高 | 中
24 | `reentrancy-eth` | [再入可能性の脆弱性(Ether の盗難)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities) | 高 | 中
25 | `reentrancy-balance` | [古い残高チェックにつながる再入可能性の脆弱性](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | 高 | 中
26 | `return-leave` | [`return` が `leave` の代わりに使用された場合](https://github.com/crytic/slither/wiki/Detector-Documentation#return-instead-of-leave-in-assembly) | 高 | 中
27 | `storage-array` | [符号付きストレージ整数配列のコンパイラバグ](https://github.com/crytic/slither/wiki/Detector-Documentation#storage-signed-integer-array) | 高 | 中
28 | `unchecked-transfer` | [未チェックのトークン転送](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer) | 高 | 中
29 | `weak-prng` | [脆弱な PRNG](https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG) | 高 | 中
30 | `domain-separator-collision` | [EIP-2612 の DOMAIN_SEPARATOR() とシグネチャが衝突する関数を持つ ERC20 トークンを検出](https://github.com/crytic/slither/wiki/Detector-Documentation#domain-separator-collision) | 中 | 高
31 | `enum-conversion` | [危険な列挙型変換を検出](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-enum-conversion) | 中 | 高
32 | `erc20-interface` | [不正な ERC20 インターフェース](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface) | 中 | 高
33 | `erc721-interface` | [不正な ERC721 インターフェース](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc721-interface) | 中 | 高
34 | `incorrect-equality` | [危険な厳密な等価性](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities) | 中 | 高
35 | `locked-ether` | [Ether をロックするコントラクト](https://github.com/crytic/slither/wiki/Detector-Documentation#contracts-that-lock-ether) | 中 | 高
36 | `mapping-deletion` | [構造体を含むマッピングの削除](https://github.com/crytic/slither/wiki/Detector-Documentation#deletion-on-mapping-containing-a-structure) | 中 | 高
37 | `pyth-deprecated-functions` | [Pyth の非推奨関数を検出](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-deprecated-functions) | 中 | 高
38 | `pyth-unchecked-confidence` | [Pyth 価格の信頼度レベルがチェックされていないことを検出](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-unchecked-confidence-level) | 中 | 高
39 | `pyth-unchecked-publishtime` | [Pyth 価格の publishTime がチェックされていないことを検出](https://github.com/crytic/slither/wiki/Detector-Documentation#pyth-unchecked-publishtime) | 中 | 高
40 | `shadowing-abstract` | [抽象コントラクトからの状態変数のシャドーイング](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing-from-abstract-contracts) | 中 | 高
41 | `tautological-compare` | [変数をそれ自身と比較すると、比較に応じて常に真または偽を返す](https://github.com/crytic/slither/wiki/Detector-Documentation#tautological-compare) | 中 | 高
42 | `tautology` | [トートロジーまたは矛盾](https://github.com/crytic/slither/wiki/Detector-Documentation#tautology-or-contradiction) | 中 | 高
43 | `write-after-write` | [未使用の書き込み](https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write) | 中 | 高
44 | `boolean-cst` | [ブール定数の誤用](https://github.com/crytic/slither/wiki/Detector-Documentation#misuse-of-a-boolean-constant) | 中 | 中
45 | `chronicle-unchecked-price` | [Chronicle 価格がチェックされていないことを検出](https://github.com/crytic/slither/wiki/Detector-Documentation#chronicle-unchecked-price) | 中 | 中
46 | `constant-function-asm` | [アセンブリコードを使用する定数関数](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-using-assembly-code) | 中 | 中
47 | `constant-function-state` | [状態を変更する定数関数](https://github.com/crytic/slither/wiki/Detector-Documentation#constant-functions-changing-the-state) | 中 | 中
48 | `divide-before-multiply` | [不正確な算術演算の順序](https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply) | 中 | 中
49 | `gelato-unprotected-randomness` | [保護されていない関数内での `_requestRandomness` の呼び出し](https://github.com/crytic/slither/wiki/Detector-Documentation#gelato-unprotected-randomness) | 中 | 中
50 | `out-of-order-retryable` | [順序が正しくないリトライ可能トランザクション](https://github.com/crytic/slither/wiki/Detector-Documentation#out-of-order-retryable-transactions) | 中 | 中
51 | `reentrancy-no-eth` | [再入可能性の脆弱性(Ether の盗難なし)](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1) | 中 | 中
52 | `reused-constructor` | [再利用されたベースコンストラクタ](https://github.com/crytic/slither/wiki/Detector-Documentation#reused-base-constructors) | 中 | 中
53 | `tx-origin` | [`tx.origin` の危険な使用](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin) | 中 | 中
54 | `unchecked-lowlevel` | [未チェックの低レベル呼び出し](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-low-level-calls) | 中 | 中
55 | `unchecked-send` | [未チェックの send](https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-send) | 中 | 中
56 | `uninitialized-local` | [初期化されていないローカル変数](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables) | 中 | 中
57 | `unused-return` | [未使用の戻り値](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return) | 中 | 中
58 | `chainlink-feed-registry` | [Chainlink フィードレジストリが使用されている場合を検出](https://github.com/crytic/slither/wiki/Detector-Documentation#chainlink-feed-registry-usage) | 低 | 高
59 | `incorrect-modifier` | [デフォルト値を返す可能性のある修飾子](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier) | 低 | 高
60 | `optimism-deprecation` | [非推奨の Optimism プリデプロイまたは関数が使用されている場合を検出](https://github.com/crytic/slither/wiki/Detector-Documentation#optimism-deprecated-predeploy-or-function) | 低 | 高
61 | `shadowing-builtin` | [組み込みシンボルのシャドーイング](https://github.com/crytic/slither/wiki/Detector-Documentation#builtin-symbol-shadowing) | 低 | 高
62 | `shadowing-local` | [ローカル変数のシャドーイング](https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing) | 低 | 高
63 | `uninitialized-fptr-cst` | [コンストラクタ内の未初期化関数ポインタ呼び出し](https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-function-pointers-in-constructors) | 低 | 高
64 | `variable-scope` | [宣言前に使用されるローカル変数](https://github.com/crytic/slither/wiki/Detector-Documentation#pre-declaration-usage-of-local-variables) | 低 | 高
65 | `void-cst` | [実装されていないコンストラクタ呼び出し](https://github.com/crytic/slither/wiki/Detector-Documentation#void-constructor) | 低 | 高
66 | `calls-loop` | [ループ内の複数の呼び出し](https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop) | 低 | 中
67 | `events-access` | [アクセス制御イベントの欠落](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control) | 低 | 中
68 | `events-maths` | [算術イベントの欠落](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic) | 低 | 中
69 | `incorrect-unary` | [危険な単項演算式](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-unary-expressions) | 低 | 中
70 | `missing-zero-check` | [ゼロアドレス検証の欠落](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation) | 低 | 中
71 | `reentrancy-benign` | [良性の再入可能性の脆弱性](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2) | 低 | 中
72 | `reentrancy-events` | [順序不正のイベントにつながる再入可能性の脆弱性](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3) | 低 | 中
73 | `return-bomb` | [低レベルの呼び出し先が、予期せず呼び出し元のガスをすべて消費する可能性がある](https://github.com/crytic/slither/wiki/Detector-Documentation#return-bomb) | 低 | 中
74 | `timestamp` | [`block.timestamp` の危険な使用](https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp) | 低 | 中
75 | `assembly` | [アセンブリの使用](https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage) | 情報 | 高
76 | `assert-state-change` | [アサート状態変更](https://github.com/crytic/slither/wiki/Detector-Documentation#assert-state-change) | 情報 | 高
77 | `boolean-equal` | [ブール定数との比較](https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality) | 情報 | 高
78 | `cyclomatic-complexity` | [サイクロマティック複雑度が高い(11 超)関数を検出](https://github.com/crytic/slither/wiki/Detector-Documentation#cyclomatic-complexity) | 情報 | 高
79 | `deprecated-standards` | [非推奨の Solidity 標準](https://github.com/crytic/slither/wiki/Detector-Documentation#deprecated-standards) | 情報 | 高
80 | `erc20-indexed` | [インデックス化されていない ERC20 イベントパラメータ](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-erc20-event-parameters) | 情報 | 高
81 | `function-init-state` | [状態変数を初期化する関数](https://github.com/crytic/slither/wiki/Detector-Documentation#function-initializing-state) | 情報 | 高
82 | `incorrect-using-for` | [特定のライブラリの関数が特定の型と一致しない場合の using-for ステートメントの使用を検出](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-usage-of-using-for-statement) | 情報 | 高
83 | `low-level-calls` | [低レベル呼び出し](https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls) | 情報 | 高
84 | `missing-inheritance` | [継承の欠落](https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance) | 情報 | 高
85 | `naming-convention` | [Solidity 命名規則への準拠](https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions) | 情報 | 高
86 | `pragma` | [異なるプラグマディレクティブが使用されている場合](https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used) | 情報 | 高
87 | `redundant-statements` | [冗長なステートメント](https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements) | 情報 | 高
88 | `solc-version` | [不適切な Solidity バージョン](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity) | 情報 | 高
89 | `unimplemented-functions` | [未実装の関数](https://github.com/crytic/slither/wiki/Detector-Documentation#unimplemented-functions) | 情報 | 高
90 | `unindexed-event-address` | [アドレスパラメータがあるがインデックス化されたパラメータがないイベント](https://github.com/crytic/slither/wiki/Detector-Documentation#unindexed-event-address-parameters) | 情報 | 高
91 | `unused-state` | [未使用の状態変数](https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable) | 情報 | 高
92 | `costly-loop` | [ループ内の高コストな操作](https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop) | 情報 | 中
93 | `dead-code` | [使用されていない関数](https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code) | 情報 | 中
94 | `reentrancy-unlimited-gas` | [send と transfer を通じた再入可能性の脆弱性](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4) | 情報 | 中
95 | `too-many-digits` | [数値表記のベストプラクティスへの準拠](https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits) | 情報 | 中
96 | `cache-array-length` | [ループ条件で何らかのストレージ配列の `length` メンバを使用し、それを変更しない `for` ループを検出](https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length) | 最適化 | 高
97 | `constable-states` | [定数として宣言できる状態変数](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant) | 最適化 | 高
98 | `external-function` | [external として宣言できる public 関数](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external) | 最適化 | 高
99 | `immutable-states` | [immutable として宣言できる状態変数](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-immutable) | 最適化 | 高
100 | `var-read-using-this` | [コントラクトが `this` を使用して自身の変数を読み取る](https://github.com/crytic/slither/wiki/Detector-Documentation#public-variable-read-in-external-context) | 最適化 | 高

詳細については、以下を参照してください。

* 各検出器の詳細については、[検出器ドキュメント](https://github.com/crytic/slither/wiki/Detector-Documentation)
* 選択した検出器のみを実行するには、[検出器選択](https://github.com/crytic/slither/wiki/Usage#detector-selection)。デフォルトでは、すべての検出器が実行されます。
* 個々の結果をフィルタリングするには、[トリアージモード](https://github.com/crytic/slither/wiki/Usage#triage-mode)

## プリンター

### クイックレビュープリンター

* `human-summary`: [コントラクトの人間が読める概要を出力](https://github.com/trailofbits/slither/wiki/Printer-documentation#human-summary)
* `inheritance-graph`: [各コントラクトの継承グラフを dot ファイルにエクスポート](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph)
* `contract-summary`: [コントラクトの概要を出力](https://github.com/trailofbits/slither/wiki/Printer-documentation#contract-summary)
* `loc`: [ソースファイル(SRC)、依存関係(DEP)、テストファイル(TEST)にあるコード行数(LOC)、ソースコード行数(SLOC)、コメント行数(CLOC)の合計をカウント](https://github.com/trailofbits/slither/wiki/Printer-documentation#loc)
* `entry-points`: [コントラクトのすべての状態変更エントリポイント関数とその変数を出力](https://github.com/trailofbits/slither/wiki/Printer-documentation#entry-points)

### 詳細レビュープリンター* `call-graph`: [コントラクトのコールグラフをdotファイルにエクスポートする](https://github.com/crytic/slither/wiki/Printer-documentation#call-graph)
* `cfg`: [各関数のCFGをエクスポートする](https://github.com/crytic/slither/wiki/Printer-documentation#cfg)
* `function-summary`: [関数のサマリーを出力する](https://github.com/crytic/slither/wiki/Printer-documentation#function-summary)
* `vars-and-auth`: [書き込まれる状態変数と関数の認可を出力する](https://github.com/crytic/slither/wiki/Printer-documentation#variables-written-and-authorization)
* `not-pausable`: [`whenNotPaused` 修飾子を使用しない関数を出力する](https://github.com/crytic/slither/wiki/Printer-documentation#when-not-paused)

プリンタを実行するには、`--print` を使用し、カンマ区切りでプリンタのリストを指定します。

完全なリストについては、[プリンタドキュメント](https://github.com/crytic/slither/wiki/Printer-documentation) を参照してください。

## ツール

* `slither-check-upgradeability`: [`delegatecall` ベースのアップグレード可能性をレビューする](https://github.com/crytic/slither/blob/master/docs/src/tools/Upgradeability-Checks.md)
* `slither-prop`: [自動単体テストとプロパティ生成](https://github.com/crytic/slither/blob/master/docs/src/tools/Property-generation.md)
* `slither-flat`: [コードベースをフラット化する](https://github.com/crytic/slither/blob/master/docs/src/tools/Contract-Flattening.md)
* `slither-check-erc`: [ERC 準拠をチェックする](https://github.com/crytic/slither/blob/master/docs/src/tools/ERC-Conformance.md)
* `slither-read-storage`: [コントラクトからストレージ値を読み取る](https://github.com/crytic/slither/blob/master/docs/src/tools/ReadStorage.md)
* `slither-interface`: [コントラクトのインターフェースを生成する](https://github.com/crytic/slither/blob/master/docs/src/tools/Interface.md)

追加のツールについては、[ツールドキュメント](https://github.com/crytic/slither/blob/master/docs/src/tools/README.md) を参照してください。

カスタムツールの構築に関する支援については、[お問い合わせください](https://www.trailofbits.com/contact/)。

## APIドキュメント

Slither の内部に関するドキュメントは[こちら](https://crytic.github.io/slither/slither.html)で入手できます。

## ヘルプ

Slither の使用または拡張についてのヘルプは、[Slack チャンネル](https://empireslacking.herokuapp.com) (#ethereum) にお気軽にお立ち寄りください。

* [プリンタドキュメント](https://github.com/crytic/slither/wiki/Printer-documentation) は、Slither が各コントラクトについて可視化できる情報を説明しています。
* [ディテクタドキュメント](https://github.com/crytic/slither/wiki/Adding-a-new-detector) は、新しい脆弱性分析の書き方を説明しています。
* [APIドキュメント](https://github.com/crytic/slither/wiki/Python-API) は、カスタム分析で利用可能なメソッドとオブジェクトを説明しています。
* [SlithIRドキュメント](https://github.com/crytic/slither/wiki/SlithIR) は、SlithIR 中間表現を説明しています。

## FAQ

モックやテストを除外するにはどうすればよいですか?

* [パスフィルタリング](https://github.com/crytic/slither/wiki/Usage#path-filtering) に関するドキュメントを参照してください。

「unknown file」やコンパイルの問題を修正するにはどうすればよいですか?

* slither は solc AST を必要とするため、すべての依存関係が利用可能でなければなりません。
コントラクトに依存関係がある場合、`slither contract.sol` は失敗します。
代わりに、`contracts/` の親ディレクトリで `slither .` を使用してください(`ls` を実行すると `contracts/` が表示されるはずです)。
`node_modules/` フォルダがある場合は、`contracts/` と同じディレクトリになければなりません。この問題が slither に関連していることを確認するには、
使用しているフレームワークのコンパイルコマンド(例:`npx hardhat compile`)を実行してください。それが正常に動作する必要があります。
そうでない場合、slither のコンパイルエンジンである crytic-compile は AST を生成できません。

## ライセンス

Slither は AGPLv3 ライセンスの下でライセンスおよび配布されています。条件の例外を求める場合は、[お問い合わせください](mailto:[email protected])。

## 出版物

### Trail of Bits の出版物

* [Slither: スマートコントラクトのための静的解析フレームワーク](https://arxiv.org/abs/1908.09878), Josselin Feist, Gustavo Grieco, Alex Groce - WETSEB '19

### 外部出版物

タイトル | 使用方法 | 著者 | 発表先 | コード
--- | --- | --- | --- | ---
[ReJection: ASTベースの再入可能性脆弱性検出手法](https://www.researchgate.net/publication/339354823_ReJection_A_AST-Based_Reentrancy_Vulnerability_Detection_Method) | Slither上に構築されたASTベースの分析 | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 | -
[MPro: 静的解析と記号解析を組み合わせたスマートコントラクトのスケーラブルなテスト](https://arxiv.org/pdf/1911.00570.pdf) | Slitherを通じたデータ依存性の活用 | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | [MPro](https://github.com/QuanZhang-William/M-Pro)
```

---

[Read more](https://github.com/crytic/slither)
ツールをダウンロード