#------------------------------------------------------------- # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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. # #------------------------------------------------------------- name: Java Codestyle # Two Java style gates share this workflow: # * Checkstyle -- whole-tree rule check (dev/checkstyle), on push and PR. # * Java Format -- Eclipse formatter (dev/CodeStyle_eclipse.xml) applied to # ONLY the lines a PR edits; fails if any edited line would # change. The tree is not yet fully formatter-clean, so # scoping to edited lines keeps it actionable and lets the # codebase converge line-by-line. This gate needs the PR # base commit, so it runs on pull_request only. # They are separate jobs so each reports its own pass/fail status. on: push: paths-ignore: - 'docs/**' - '*.md' - '*.html' - 'src/main/python/**' branches: - main pull_request: paths-ignore: - 'docs/**' - '*.md' - '*.html' - 'src/main/python/**' branches: - main permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: java_checkstyle: name: Java Checkstyle runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v7 - name: Setup Java 17 adopt uses: actions/setup-java@v5 with: distribution: adopt java-version: '17' cache: 'maven' - name: Run Checkstyle run: mvn -ntp -B -Dcheckstyle.skip=false checkstyle:check # java_format: # name: Java Format Check # # line-scoped to the PR diff -> needs the pull_request base commit # if: github.event_name == 'pull_request' # runs-on: ubuntu-latest # steps: # - name: Checkout Repository # uses: actions/checkout@v7 # with: # fetch-depth: 0 # - name: Setup Java 17 adopt # uses: actions/setup-java@v5 # with: # distribution: adopt # java-version: '17' # cache: 'maven' # - name: Setup Python # uses: actions/setup-python@v7 # with: # python-version: '3.11' # - name: Unit-test the format checker # run: | # python -m pip install --quiet pytest # python -m pytest dev/tests -q # - name: Check formatting of PR-edited lines # env: # BASE_SHA: ${{ github.event.pull_request.base.sha }} # run: | # # Fails only if the Eclipse formatter would change a line this PR edited. # # See dev/format_changed.py for the line-scoping logic. # if ! python3 dev/format_changed.py --check "$BASE_SHA"; then # echo "::error::Some lines edited by this PR are not formatted per dev/CodeStyle_eclipse.xml." # echo "Fix only your edited lines locally and commit the result:" # echo "" # echo " dev/format-changed.sh" # echo "" # echo "(Do NOT run a bare 'mvn formatter:format' -- it reformats the whole tree.)" # exit 1 # fi