buildozer: do not remove visibility from macros or loaded rules in fix

Previously, buildozer's removeVisibility routine stripped visibility
attributes (such as "//visibility:private" or matching package default_visibility)
from any rule whose visibility matched defaultVisibility.

However, Starlark macros and loaded rules frequently implement custom fallback
visibility logic (e.g. falling back to a non-private default if visibility
is omitted). Stripping visibility from such macros causes them to silently
broaden their visibility.

Skip visibility removal if a rule's kind contains a dot (indicating a dotted
macro or module) or matches any symbol loaded via a load() statement in the
BUILD file.
2 files changed
tree: f0fe9b3f6c76fb13dbaeef6c33d447d0b1593a24
  1. .bazelci/
  2. .github/
  3. api_proto/
  4. build/
  5. build_proto/
  6. buildifier/
  7. buildozer/
  8. bzlenv/
  9. config/
  10. convertast/
  11. deps_proto/
  12. differ/
  13. edit/
  14. extra_actions_base_proto/
  15. file/
  16. generatetables/
  17. labels/
  18. lang/
  19. release/
  20. tables/
  21. testutils/
  22. unused_deps/
  23. warn/
  24. wspace/
  25. .bazelrc
  26. .bazelversion
  27. .gitignore
  28. .mailmap
  29. .pre-commit-config.yaml
  30. AGENTS.md
  31. BUILD.bazel
  32. CODEOWNERS
  33. CONTRIBUTING.md
  34. CONTRIBUTORS
  35. go.mod
  36. go.sum
  37. launcher.js
  38. LICENSE
  39. MODULE.bazel
  40. README.md
  41. status.py
  42. update_generated.sh
  43. WARNINGS.md
  44. WORKSPACE
  45. WORKSPACE.bzlmod
README.md

Buildtools for bazel

This repository contains developer tools for working with Google's bazel buildtool.

Build status

Setup

See instructions in each tool's directory.