From da7fa3a9b069cb6a286ad92eec8915721ca12e26 Mon Sep 17 00:00:00 2001 From: George Barnett Date: Fri, 7 Feb 2025 15:02:10 +0000 Subject: [PATCH 1/2] Ensure imports have explicit access levels 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 --- .github/workflows/soundness.yml | 14 +++++++++ .../ServerContext+RPCCancellationHandle.swift | 2 +- Sources/GRPCInProcessTransport/Syscalls.swift | 6 ++-- dev/check-imports.sh | 31 +++++++++++++++++++ 4 files changed, 49 insertions(+), 4 deletions(-) create mode 100755 dev/check-imports.sh diff --git a/.github/workflows/soundness.yml b/.github/workflows/soundness.yml index 35a50d70a..cd3f196aa 100644 --- a/.github/workflows/soundness.yml +++ b/.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 diff --git a/Sources/GRPCCore/Call/Server/ServerContext+RPCCancellationHandle.swift b/Sources/GRPCCore/Call/Server/ServerContext+RPCCancellationHandle.swift index 5e0f63367..f958978b8 100644 --- a/Sources/GRPCCore/Call/Server/ServerContext+RPCCancellationHandle.swift +++ b/Sources/GRPCCore/Call/Server/ServerContext+RPCCancellationHandle.swift @@ -14,7 +14,7 @@ * limitations under the License. */ -import Synchronization +private import Synchronization extension ServerContext { @TaskLocal diff --git a/Sources/GRPCInProcessTransport/Syscalls.swift b/Sources/GRPCInProcessTransport/Syscalls.swift index 96737a791..df49a49f2 100644 --- a/Sources/GRPCInProcessTransport/Syscalls.swift +++ b/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 { diff --git a/dev/check-imports.sh b/dev/check-imports.sh new file mode 100755 index 000000000..cbce0551f --- /dev/null +++ b/dev/check-imports.sh @@ -0,0 +1,31 @@ +#!/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; } +error() { printf -- "** ERROR: %s\n" "$*" >&2; } +fatal() { error "$@"; exit 1; } + +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 From 5d857bdd9252b3fcbb8930301e25353f4c03a495 Mon Sep 17 00:00:00 2001 From: George Barnett Date: Fri, 7 Feb 2025 15:22:35 +0000 Subject: [PATCH 2/2] remove unsued funcs --- dev/check-imports.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/dev/check-imports.sh b/dev/check-imports.sh index cbce0551f..1ff7fd982 100755 --- a/dev/check-imports.sh +++ b/dev/check-imports.sh @@ -16,8 +16,6 @@ set -euo pipefail log() { printf -- "** %s\n" "$*" >&2; } -error() { printf -- "** ERROR: %s\n" "$*" >&2; } -fatal() { error "$@"; exit 1; } here="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" root="${here}/.."