Skip to content

cmd/gopherbot: use longest prefix matching for compiler/runtime issue labeling#134

Open
wuyang9311 wants to merge 2 commits into
golang:masterfrom
wuyang9311:fix/gopherbot-prefix-match
Open

cmd/gopherbot: use longest prefix matching for compiler/runtime issue labeling#134
wuyang9311 wants to merge 2 commits into
golang:masterfrom
wuyang9311:fix/gopherbot-prefix-match

Conversation

@wuyang9311

Copy link
Copy Markdown

When an issue is filed against a compiler/runtime-owned sub-package
that is not explicitly listed in the owners file (e.g.,
"cmd/compile/internal/noder"), gopherbot's labelCompilerRuntimeIssues
fails to apply the "compiler/runtime" label because it requires an
exact package name match.

This happens because dev.golang.org/owners has entries for
"cmd/compile" but not for every sub-package like
"cmd/compile/internal/noder". New sub-packages are added over time
and the owners file doesn't always keep up.

This change adds a longestPrefixMatch helper that falls back to
finding the longest prefix match in the crtPackages set when an
exact match is not found. For example, "cmd/compile/internal/noder"
will match "cmd/compile" as its closest compiler-owned ancestor.

The prefix boundary check (requiring a '/' after the candidate
prefix) ensures that "cmd/compilefoo" does not accidentally match
"cmd/compile".

Unit tests cover 27 cases including exact matches, prefix matches
at various depths, non-matches, longest-prefix preference, boundary
conditions, and empty crtPackages.

Fixes golang/go#80421

…atching

When an issue is filed with a package prefix like
'cmd/compile/internal/noder' that is not explicitly
listed in the owners file but is clearly under a
compiler/runtime-owned package (like 'cmd/compile'),
gopherbot should still apply the compiler/runtime label.

Previously, only exact matches against the owners file
were supported, so new sub-packages would silently miss
the label. This change adds longestPrefixMatch, which
falls back to finding the longest prefix match in the
crtPackages set when no exact match exists.

Fixes golang/go#80421
Add missing test coverage for:
- Single-level prefix match (runtime/metric -> runtime)
- x/ path prefix match (x/sys/unix/foo -> x/sys/unix)
- cmd/ subcommand prefix (cmd/asm/internal/arch -> cmd/asm)
- Another runtime prefix (runtime/pprof/internal -> runtime/pprof)
- Deeply nested (6 levels) prefix match
- Empty crtPackages edge case (new test function)

Updates golang/go#80421
@google-cla

google-cla Bot commented Jul 20, 2026

Copy link
Copy Markdown

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.

@wuyang9311

Copy link
Copy Markdown
Author

@googlebot I signed it!

@wuyang9311
wuyang9311 force-pushed the fix/gopherbot-prefix-match branch from e2d9597 to 53fb32f Compare July 20, 2026 12:04
@gopherbot

Copy link
Copy Markdown
Contributor

This PR (HEAD: 53fb32f) has been imported to Gerrit for code review.

Please visit Gerrit at https://go-review.googlesource.com/c/build/+/802960.

Important tips:

  • Don't comment on this PR. All discussion takes place in Gerrit.
  • You need a Gmail or other Google account to log in to Gerrit.
  • To change your code in response to feedback:
    • Push a new commit to the branch used by your GitHub PR.
    • A new "patch set" will then appear in Gerrit.
    • Respond to each comment by marking as Done in Gerrit if implemented as suggested. You can alternatively write a reply.
    • Critical: you must click the blue Reply button near the top to publish your Gerrit responses.
    • Multiple commits in the PR will be squashed by GerritBot.
  • The title and description of the GitHub PR are used to construct the final commit message.
    • Edit these as needed via the GitHub web interface (not via Gerrit or git).
    • You should word wrap the PR description at ~76 characters unless you need longer lines (e.g., for tables or URLs).
  • See the Sending a change via GitHub and Reviews sections of the Contribution Guide as well as the FAQ for details.

@gopherbot

Copy link
Copy Markdown
Contributor

Message from Gopher Robot:

Patch Set 1:

Congratulations on opening your first change. Thank you for your contribution!

Next steps:
A maintainer will review your change and provide feedback. See
https://go.dev/doc/contribute#review for more info and tips to get your
patch through code review.

Most changes in the Go project go through a few rounds of revision. This can be
surprising to people new to the project. The careful, iterative review process
is our way of helping mentor contributors and ensuring that their contributions
have a lasting impact.


Please don’t reply on this GitHub thread. Visit golang.org/cl/802960.
After addressing review feedback, remember to publish your drafts!

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.

x/build: gopherbot labelCompilerRuntimeIssues should use closest matching prefix

2 participants