#sonar #cargo #输出格式 #持续集成 #命令行界面

bin+lib cargo-sonar

将 Rust 工具生成的代码质量报告转换为有效的 Sonar 报告的辅助工具

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 插件

Download history 393/week @ 2024-04-15 415/week @ 2024-04-22 442/week @ 2024-04-29 443/week @ 2024-05-06 490/week @ 2024-05-13 530/week @ 2024-05-20 653/week @ 2024-05-27 942/week @ 2024-06-03 512/week @ 2024-06-10 461/week @ 2024-06-17 767/week @ 2024-06-24 690/week @ 2024-07-01 693/week @ 2024-07-08 762/week @ 2024-07-15 609/week @ 2024-07-22 572/week @ 2024-07-29

2,680 每月下载量
用于 rrules

MIT 许可证

105KB
2.5K SLoC

cargo-sonarcargo-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-scannersonar=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

请注意,目前仅支持 advisorieslicenses

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

待办事项列表

依赖关系

~10–25MB
~332K SLoC