Skip to content

fix: add --locked flag to cargo install cargo-llvm-cov in coverage.sh#759

Open
xiaolai wants to merge 1 commit intogoogleworkspace:mainfrom
xiaolai:fix/nlpm-pin-cargo-llvm-cov-install
Open

fix: add --locked flag to cargo install cargo-llvm-cov in coverage.sh#759
xiaolai wants to merge 1 commit intogoogleworkspace:mainfrom
xiaolai:fix/nlpm-pin-cargo-llvm-cov-install

Conversation

@xiaolai
Copy link
Copy Markdown

@xiaolai xiaolai commented Apr 25, 2026

Automated audit: This PR was generated by NLPM, a natural language programming linter, running via claude-code-action. Please evaluate the diff on its merits.

scripts/coverage.sh installs cargo-llvm-cov via cargo install cargo-llvm-cov without the --locked flag. Without --locked, Cargo resolves the newest compatible versions of all transitive dependencies at install time rather than using the versions pinned in the tool's own Cargo.lock. This means:

  1. Different runs of the coverage script can produce different tool binaries depending on what dependency versions are available at that moment.
  2. Newly released (and potentially vulnerable or breaking) patch/minor versions of transitive dependencies can be silently pulled in.

Adding --locked ensures the install is fully reproducible and uses only the dependency graph the cargo-llvm-cov maintainers tested against.

Without --locked, cargo resolves the newest compatible versions of all
transitive dependencies at install time, which can produce different
binaries across runs and pull in unreviewed dependency updates.
The --locked flag forces cargo to use the dependency versions pinned
in cargo-llvm-cov's own Cargo.lock, making the install reproducible.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 25, 2026

🦋 Changeset detected

Latest commit: 2ca035a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@googleworkspace/cli Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request improves the reliability and security of the development environment by pinning dependencies during the installation of the cargo-llvm-cov tool. By enforcing the use of the lockfile, the installation process becomes deterministic, ensuring that every environment uses the exact same dependency graph intended by the tool maintainers.

Highlights

  • Reproducible Builds: Added the --locked flag to the cargo install command for cargo-llvm-cov to ensure dependency versions are strictly respected.
  • Security and Stability: Prevented potential issues caused by silently pulling in new, untested, or incompatible transitive dependency versions during installation.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Generative AI Prohibited Use Policy, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@google-cla
Copy link
Copy Markdown

google-cla Bot commented Apr 25, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds the --locked flag to the cargo install command for cargo-llvm-cov in the coverage script to improve installation reproducibility. A review comment points out that while --locked pins transitive dependencies, the version of the tool itself should also be explicitly pinned to ensure full reproducibility and prevent potential breaking changes or security vulnerabilities from future releases.

Comment thread scripts/coverage.sh
if ! cargo llvm-cov --version &> /dev/null; then
echo "cargo-llvm-cov is not installed. Installing..."
cargo install cargo-llvm-cov
cargo install --locked cargo-llvm-cov
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security-high high

While the --locked flag ensures that transitive dependencies are pinned to the versions specified in the tool's Cargo.lock, it does not pin the version of cargo-llvm-cov itself. For truly reproducible and secure installs, the tool version should also be pinned (e.g., cargo install --locked --version 0.6.11 cargo-llvm-cov). Without this, the script will always install the latest version available on crates.io, which could introduce breaking changes or security vulnerabilities, partially defeating the purpose of the reproducibility and security goals stated in this pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant