35 个版本 (3 个稳定版)
1.2.0 | 2023年11月6日 |
---|---|
1.0.0 | 2023年9月13日 |
0.21.0 | 2023年9月13日 |
0.18.0 | 2023年7月12日 |
0.9.0 | 2021年11月29日 |
#82 in Cargo 插件
2,680 每月下载量
用于 rrules
105KB
2.5K SLoC
cargo-sonar
和 cargo-codeclimate
cargo-sonar
帮助您使用 Rust 社区的工具并将信息报告给 Sonarcloud(或 Sonarqube)。
cargo-codeclimate
以相同的方式帮助您,提供 CodeClimate 输出格式。请注意,Gitlab 也支持 CodeClimate 格式。
您甚至可以将其设置为持续集成,以便自动将此报告转发到 Sonar、CodeClimate 或 Gitlab。
请注意,此项目最初是为 cargo-sonar
创建的。因此,大部分内容都围绕 cargo-sonar
进行了文档化,但 cargo-codeclimate
与其具有完全相同的 CLI API(只有输出格式不同)。请注意,cargo- codeclimate
仍然是 cargo-sonar
crate 和 docker images 的一部分。因此,如果您安装了 cargo-sonar
,则也安装了 cargo-codeclimate
。
目录
安装
从二进制文件安装
如果您使用 cargo-binstall
,可以使用以下命令安装 cargo-sonar
。
cargo binstall cargo-sonar
cargo sonar --help
您还可以直接从 发布页面 下载二进制文件。
从 Docker/Podman 安装
export CONTAINER_ENGINE=docker # or CONTAINER_ENGINE=podman
${CONTAINER_ENGINE} pull docker.io/woshilapin/cargo-sonar
${CONTAINER_ENGINE} run docker.io/woshilapin/cargo-sonar --help
默认情况下,容器中的工作目录为 /tmp
。
请注意,如果您想使用 cargo-codeclimate
,您需要使用 --entrypoint '/cargo-codeclimate
修改入口点。
从 crates.io 安装
cargo install cargo-sonar
cargo sonar --help
从 Docker/Podman 安装
OCI 镜像托管在项目的 Gitlab 容器注册库中。
export CONTAINER_ENGINE=docker # or CONTAINER_ENGINE=podman
${CONTAINER_ENGINE} pull registry.gitlab.com/woshilapin/cargo-sonar
${CONTAINER_ENGINE} run registry.gitlab.com/woshilapin/cargo-sonar --help
如果您更喜欢 DockerHub,也可以从 DockerHub 拉取它们。
export CONTAINER_ENGINE=docker # or CONTAINER_ENGINE=podman
${CONTAINER_ENGINE} pull docker.io/woshilapin/cargo-sonar
${CONTAINER_ENGINE} run docker.io/woshilapin/cargo-sonar --help
默认情况下,容器中的工作目录为 /tmp
。
使用
cargo-sonar
只是一个工具,用于将其他工具的报告转换为与 Sonar 兼容的报告(见支持的工具)。一旦生成 Sonar 报告,就可以使用 sonar-scanner
将其发送到 sonarcloud.io 或任何 SonarQube 实例。
首先,从任何支持的工具生成报告,例如 clippy
。
cargo clippy --message-format > my-clippy-report.json
然后转换此报告。
cargo sonar --clippy --clippy-path my-clippy-report.json
这将创建一个文件 sonar-issues.json
。现在您可以在您的 sonar- project.properties
文件中配置 sonar-scanner
为 sonar=sonar-issues.json
。
支持的工具
cargo-clippy
cargo clippy --message-format=json > clippy.json
cargo-audit
cargo audit --json > audit.json
cargo-deny
cargo deny --format json check 2> deny.json
请注意,目前仅支持 advisories
和 licenses
。
cargo-outdated
cargo outdated --workspace --depth 1 --format json > outdated.json
--depth 1
在这里很有用,因为转换将无法在任何更深层次的依赖项上工作。
cargo-udeps
cargo +nightly udeps --quiet --workspace --all-features --all-targets --output json > udeps.json
示例
目前最好的例子是项目 cargo-sonar
本身。在 CI 中,查看 .gitlab-ci.yml
,尤其是 执行 后使用 sonar-scanner
配置 sonar-project.properties
配置文件。最终结果可以在 sonarcloud.io 上看到。
发布
整个发布过程都是自动化的:每次您在 main
分支上推送提交时,下一个版本都会根据从上次标签以来的 conventional commit 标准自动推断。
您可以在不同的地方以不同的形式找到发布
有时,CI 可能会遇到问题。如果您需要切换到手动发布,以下是步骤。以下,1.2.3
用作示例,请替换为正确的版本。
标签
cog bump --auto
在 crates.io 上打包
git checkout 1.2.3
cargo publish
Docker 镜像
git checkout 1.2.3
buildah bud --layers --tag woshilapin/cargo-sonar:1.2.3
buildah push woshilapin/cargo-sonar:1.2.3
待办事项列表
- 添加
cargo-geiger
解析 - 创建一个 Github Action(见Docker Github Action)
依赖关系
~10–25MB
~332K SLoC