Skip to content

Commit

Permalink
Ensure imports have explicit access levels
Browse files Browse the repository at this point in the history
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
  • Loading branch information
glbrntt committed Feb 7, 2025
1 parent e31dd43 commit 91eb614
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 4 deletions.
14 changes: 14 additions & 0 deletions .github/workflows/soundness.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

import Synchronization
private import Synchronization

extension ServerContext {
@TaskLocal
Expand Down
6 changes: 3 additions & 3 deletions Sources/GRPCInProcessTransport/Syscalls.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
33 changes: 33 additions & 0 deletions dev/check-imports.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/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=$(realpath "${here}/..")

exclude="${root}/Sources/GRPCCore/Documentation.docc"

log "Checking all imports have an access level"
if grep -r "^import " --exclude-dir="${exclude}" "${root}/Sources"; then
# Matches are bad!
exit 1
else
exit 0
fi

0 comments on commit 91eb614

Please sign in to comment.