浏览代码

Ensure imports have explicit access levels (#2192)

Motivation:

The imports should all have access level set explicitly. Some were
missing.

Modifications:

- Add a script and CI to check for this
- Add a few missing access levels

Result:

Better consistency
George Barnett 9 月之前
父节点
当前提交
362efe542c

+ 14 - 0
.github/workflows/soundness.yml

@@ -35,3 +35,17 @@ jobs:
       - name: Run soundness checks
         run: |
           ./dev/check-generated-code.sh
+
+  check-imports:
+    name: Check imports have access level
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout repository
+        uses: actions/checkout@v4
+        with:
+          persist-credentials: false
+      - name: Mark the workspace as safe
+        run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
+      - name: Check import access level
+        run: |
+          ./dev/check-imports.sh

+ 1 - 1
Sources/GRPCCore/Call/Server/ServerContext+RPCCancellationHandle.swift

@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-import Synchronization
+private import Synchronization
 
 extension ServerContext {
   @TaskLocal

+ 3 - 3
Sources/GRPCInProcessTransport/Syscalls.swift

@@ -15,11 +15,11 @@
  */
 
 #if canImport(Darwin)
-import Darwin
+private import Darwin
 #elseif canImport(Glibc)
-import Glibc
+private import Glibc
 #elseif canImport(Musl)
-import Musl
+private import Musl
 #endif
 
 enum System {

+ 29 - 0
dev/check-imports.sh

@@ -0,0 +1,29 @@
+#!/bin/bash
+## Copyright 2025, gRPC Authors All rights reserved.
+##
+## Licensed under the Apache License, Version 2.0 (the "License");
+## you may not use this file except in compliance with the License.
+## You may obtain a copy of the License at
+##
+##     http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+
+set -euo pipefail
+
+log() { printf -- "** %s\n" "$*" >&2; }
+
+here="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+root="${here}/.."
+
+log "Checking all imports have an access level"
+if grep -r "^import " --exclude-dir="Documentation.docc" "${root}/Sources"; then
+  # Matches are bad!
+  exit 1
+else
+  exit 0
+fi