Skip to content

Latest commit

 

History

History
116 lines (78 loc) · 6.02 KB

getting-started.md

File metadata and controls

116 lines (78 loc) · 6.02 KB

はじめかた

インストール

各リリースにビルド済みバイナリが添付されており、これが最短の経路です。ダウンロードして展開すれば動きます。アーカイブに入っているのは codehelion という自己完結の実行ファイル 1 つで、SQLite は同梱されています。

プラットフォーム アーカイブ
Linux x86-64 codehelion-<version>-linux-x86_64.tar.gz
Linux ARM64 codehelion-<version>-linux-aarch64.tar.gz
macOS Apple silicon codehelion-<version>-macos-aarch64.tar.gz
Windows x86-64 codehelion-<version>-windows-x86_64.zip

SHA256SUMS も併せて添付されるので、展開する前にアーカイブを検証できます。

Rust ツールチェインがあるなら、同じバイナリをソースからビルドできます。

cargo install codehelion

チェックアウトからビルドする場合は次のとおりです。

cargo install --path crates/codehelion-cli

ビルドには、任意の Rust Semantic helper を含め Rust 1.98 以降が必要です。この下限は helper が使う解析ライブラリが決めており、コンポーネントごとに分かれてはいません。ダウンロードしたバイナリにはツールチェインは要りません。

最初のスキャン

codehelion scan

引数を付けなければ、カレントディレクトリを Fast モードで読み、text レポートを出力します。ある程度以上の規模のツリーでは Structural モードを使ってください。欠落を伴うコピーを検出でき、抑制ポリシーが働くため、上から読んでいける一覧になります。

codehelion scan --mode structural

レポートは何を読んだかで始まり、上位のグループを列挙し、合計で終わります。

codehelion scan · structural mode · ~/src/codehelion

 #1  0.56  type-1 ×2      109 tokens  64f5bc34
     ├─ ◆ corpus/synthetic/rust/seed.rs:30-49                   values_equal
     └─   corpus/synthetic/rust/type1.rs:35-54                  values_equal

 #2  0.54  type-1 run ×2  106 tokens  53c92308
     ├─ ◆ crates/codehelion-cli/src/scan/structural.rs:160-172  run_with
     └─   crates/codehelion-cli/src/scan.rs:61-73               run

... and 1233 more groups (--limit 0 lists every one)

seams: frontend-c-cpp 12 asymmetric changes, 7 breaches (last 6e014d86), 394 findings
       readme-en-ja 1 asymmetric change, 1 breach (last 634aa5c9)
       artifact-fixture-scripts 3 asymmetric changes, 1 breach (last 6f5d63c3)

1,602 groups (type-1 83, type-2 198, type-3 1321) · 367 suppressed · sorted by priority
supplemental: 503 siblings (--show-siblings; 103 dropped by search ceilings), 1,000 near misses (--show-near-misses; 5,986 dropped by the retention cap)
560 files, 206,818 lines, 1,083,595 tokens · run 11 (replay: codehelion report --run 11)
◆ the occurrence a group is measured against · "run" a repeated stretch of statements, not a whole unit · ×N the number of occurrences
open one: codehelion explain 64f5bc34 · list every group: --limit 0

見出しの各フィールドの意味はレポートの読み方にあります。末尾の短い 16 進文字列がグループの安定 ID で、これは codehelion explain が受け付ける最短の prefix です。

codehelion explain 64f5bc34

上限の発火や何にも一致しなかったルールなど、実行そのものを限定する情報は標準エラー出力に回るため、標準出力のレポートはパイプに流せる状態を保ちます。

結果が置かれる場所

各スキャンは、scan root を含む Git リポジトリ直下の .codehelion/ にローカルの SQLite データベースを作って記録します。サブディレクトリをスキャンしたときも新しいデータベースを作らず、リポジトリのものを使い続けます。リポジトリの .gitignore に .codehelion/ を追加してください。

実行が記録されているため、ツリーを読み直さずにレポートを描き直せます。

codehelion report                    # 最新の完了済みスキャンを再描画
codehelion report --run 1            # 特定の記録済みスキャンを再描画
codehelion report --format json --output report.json

データベースの場所と扱いは設定に、コマンドとフラグの一覧はコマンドラインにあります。

任意: コンパイラ由来の情報

Semantic モードはコンパイラが解決した型と名前の情報を加えます。解析したい言語ごとに別途 helper を導入する必要があり、これが compiler API を CLI 自体から締め出しています。

cargo install codehelion-backend-rust
cargo install codehelion-backend-clang # システムの libclang も必要
codehelion doctor

doctor は、このマシンにあるコンポーネント、各 helper が問い合わせに何を答えたか、実行が使うローカルデータベースはどれかを報告します。導入されていない helper は「任意で、いまは無い」として報告され、それによって失敗することはありません。

任意: 成果物解析

artifact コマンドは、コンパイル済み成果物(WASM・ELF・Mach-O・PE/COFF・静的アーカイブ)のバイト列を、ロードも実行もせずに読みます。

codehelion artifact analyze path/to/binary

ソーススキャンはこれに一切依存しません。成果物解析を参照してください。

次に読むもの