項目31:ツールのエコシステムを活用しよう
https://effective-rust.com/use-tools.html
radish-miyazaki.icon があまり使ったことのない標準の cargo ツール(コマンド)
cargo check: 機械語 を生成せずに コンパイル チェックのみを行う
高速な構文チェックとして有用
cargo doc: ドキュメントを生成する(項目27:パブリックインターフェイスのドキュメントを書こう)
cargo bench: ベンチマークテスト を実行する(項目30:ユニットテスト以上のものを書こう)
cargo update: 依存クレートを最新バージョンにアップグレードする
デフォルトでは セマンティックバージョニング の互換性がある最新のバージョンに更新する
cargo tree: 依存グラフ を表示する
cargo metadata: ワークスペース内のパッケージと依存クレートの メタデータ を取得する
cargo_metadata クレートでは、メタデータの型が提供されている
cargo-udeps や cargo-deny は cargo metadata で取得したメタデータを利用している
この他、抽象構文木 を用いた cargo ツールも作られている
このようなツールは syn クレートに依存していることが多い
このクレートは 手続き的マクロ で利用されることも多いが、それ以外の用途で使われることも多い
Currently this library is geared toward use in Rust procedural macros, but contains some APIs that may be useful more generally.
e.g.
cargo-expand
cargo-tarpaulin: コードのカバレッジ情報の生成と管理をサポート
ブログなどでまとめられているツールのリストは主観的ですぐに古くなるので、「使用できるツールを探そう」
cargo-<something> というツールで検索すれば、複数のツールがヒットする
メンテナンスされていないものもあるので吟味すること
Rust に対して 形式的検証 を適用する取り組みも行われている
https://alastairreid.github.io/automatic-rust-verification-tools-2021/
コードの正確性についてより高いレベルの保証が必要な場合は役立つ?
複数回使うようなツールであれば、「ツールを CI システムに統合しよう」(項目32:CIシステムを設定しよう)
もしツールが高速で 偽陽性 を出さないならば「ツールを IDE に統合しよう」
参考: https://www.rust-lang.org/tools
覚えておくべきツール
Miri: コンパイラが検出できない unsafe を用いた際のエラーを検出できるツール
項目16:unsafeコードを書かないようにしよう
Dependabot: 依存クレートの更新を管理するツール
項目21:セマンティックバージョン(SemVer)を理解しよう / 項目25:依存グラフを管理しよう
cargo-semver-check: SemVer が正しく付けられているかをチェックするツール
項目21:セマンティックバージョン(SemVer)を理解しよう
Godbolt compiler explorer: Rust のコードから生成される機械語のコードを確認するツール
cargo-fuzz: ファズテスト を行うためのツール:
criterion: cargo bench よりも詳細なデータ分析が可能なベンチマーク測定ツール
項目30:ユニットテスト以上のものを書こう
cargo-bindgen: C のコードから Rust の FFI ラッパを自動生成するツール
項目35:手動でFFIマッピングを書かずにbindgenを用いよう
#Rust #Effective_Rust_―_Rustコードを改善し、エコシステムを最大限に活用するための35項目