😎

cargo-semver-checksメモ [blessed.rsシリーズ3]

2024/04/23に公開

概要

https://blessed.rs/crates

こちらのリストにあるものを見て書いたメモの共有です。

内容はまとめておらず、順番もぐちゃぐちゃ。あくまでメモになります。

また、網羅的にメモしているわけではなく、自分が必要だと思ったもののみメモしているため、内容が偏っているかもしれません。

今回はcargo-semver-checksについてです。

cargo-semver-checksとは

SemVerの仕様にのっとった互換性ルールをチェックするリンター

SemVerとは

https://zenn.dev/whiteshirt/articles/cargo-semver-checks

Rust(cargo)ではSemantic Versioning(SemVer)を使用してバージョン管理を行っている。

https://ja.wikipedia.org/wiki/セマンティックバージョニング

「1.23.45」といったように"."で区切った3つの数字で表される。

前から順にメジャーバージョン、マイナーバージョン、パッチバージョンと呼ぶ。

APIの変更に互換性のない場合はメジャーバージョンを、後方互換性があり機能性を追加した場合はマイナーバージョンを、後方互換性を伴うバグ修正をした場合はパッチバージョンを上げる

https://semver.org/

SemVerの仕様

https://doc.rust-lang.org/cargo/reference/semver.html

また、こちらでライブラリの互換性を保つためのルールが文章化されている

使用方法

https://github.com/obi1kenobi/cargo-semver-checks?tab=readme-ov-file#quick-start

インストール方法などは上に

インストールされていればデフォルトの設定だと以下で確認できる

$ cargo semver-checks

また、github actionsを使用する際には以下でできる

- name: Check semver
  uses: obi1kenobi/cargo-semver-checks-action@v2

versionの参照

https://github.com/obi1kenobi/cargo-semver-checks?tab=readme-ov-file#does-the-crate-im-checking-have-to-be-published-on-cratesio

デフォルトではcrate.ioに公開してあるものを参照して互換性の確認を行う

ここにあるフラグを指定すれば、他の方法でも確認できる

何で比較しているか

https://github.com/obi1kenobi/cargo-semver-checks?tab=readme-ov-file#how-is-cargo-semver-checks-similar-to-and-different-from-other-tools

rustdocのjson出力からデータを取得して比較してる

Contributing

https://github.com/obi1kenobi/cargo-semver-checks/blob/main/CONTRIBUTING.md

コントリビュートしたい場合は上記を参照

Discussion