aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorTSRBerry <20988865+TSRBerry@users.noreply.github.com>2023-07-24 18:35:04 +0200
committerGitHub <noreply@github.com>2023-07-24 18:35:04 +0200
commiteb528ae0f05f057e671eb9e92f44f1caa9bcc84b (patch)
tree504546e6728af666215a3c55e967510bef7a711f /.github
parent487261592eb9e9c31cacd08860f8894027bb1a07 (diff)
Add workflow to automatically check code style issues for PRs (#4670)
* Add workflow to perform automated checks for PRs * Downgrade Microsoft.CodeAnalysis to 4.4.0 This is a workaround to fix issues with dotnet-format. See: - https://github.com/dotnet/format/issues/1805 - https://github.com/dotnet/format/issues/1800 * Adjust editorconfig to be more compatible with Ryujinx code-style * Adjust .editorconfig line endings to match .gitattributes * Disable 'prefer switch expression' rule * Remove naming styles These are the default rules, so we don't need to override them. * Silence IDE0060 in .editorconfig * Slightly adjust .editorconfig * Add lost workflow changes * Move .editorconfig comment to the top * .editorconfig: private static readonly fields should be _lowerCamelCase * .editorconfig: Remove alignment for declarations as well * editorconfig: Add rule for local constants * Disable CA1822 for HLE services * Disable CA1822 for ViewModels Bindings won't work with static members, but this issue is silently ignored. * Run dotnet format for the whole solution * Check result code of SDL_GetDisplayBounds * Fix dotnet format style issues * Add missing trailing commas * Update Microsoft.CodeAnalysis.CSharp to 4.6.0 Skipping 4.5.0 since it breaks dotnet format * Restore old default naming rules for dotnet format * Add naming rule exception for CPU tests * checks: Include all files before excluding paths * Fix dotnet format issues * Check dotnet format version * checks: Run dotnet format with severity info again * checks: Disable naming style rules until they won't crash the process anymore * Remove unread private member * checks: Attempt to run analyzers 3 times before giving up * checks: Enable naming style rules again with the new retry logic
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/build.yml13
-rw-r--r--.github/workflows/checks.yml71
-rw-r--r--.github/workflows/nightly_pr_comment.yml4
3 files changed, 76 insertions, 12 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index bf8fd000..c93fd0d3 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,19 +1,10 @@
name: Build job
on:
- workflow_dispatch:
- inputs: {}
- pull_request:
- branches: [ master ]
- paths-ignore:
- - '.github/**'
- - '*.yml'
- - '*.json'
- - '*.config'
- - 'README.md'
+ workflow_call:
concurrency:
- group: pr-checks-${{ github.event.number }}
+ group: pr-builds-${{ github.event.number }}
cancel-in-progress: true
env:
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
new file mode 100644
index 00000000..c34d196f
--- /dev/null
+++ b/.github/workflows/checks.yml
@@ -0,0 +1,71 @@
+name: Perform checks
+
+on:
+ pull_request:
+ branches: [ master ]
+ paths:
+ - '**'
+ - '!.github/**'
+ - '!*.yml'
+ - '!*.config'
+ - '!README.md'
+ - '.github/workflows/*.yml'
+
+permissions:
+ pull-requests: write
+ checks: write
+
+concurrency:
+ group: pr-checks-${{ github.event.number }}
+ cancel-in-progress: true
+
+jobs:
+ format:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - uses: actions/setup-dotnet@v3
+ with:
+ global-json-file: global.json
+
+ - run: dotnet restore
+
+ - name: Print dotnet format version
+ run: dotnet format --version
+
+ - name: Run dotnet format whitespace
+ run: |
+ dotnet format whitespace --verify-no-changes --report ./whitespace-report.json -v d
+
+ - name: Run dotnet format style
+ run: |
+ dotnet format style --severity info --verify-no-changes --report ./style-report.json -v d
+
+ # For some reason this step sometimes fails with exit code 139 (segfault?),
+ # so should that be the case we'll try again (3 tries max).
+ - name: Run dotnet format analyzers
+ run: |
+ attempt=0
+ exit_code=139
+ until [ $attempt -ge 3 ] || [ $exit_code -ne 139 ]; do
+ ((attempt+=1))
+ exit_code=0
+ echo "Attempt: ${attempt}/3"
+ dotnet format analyzers --severity info --verify-no-changes --report ./analyzers-report.json -v d || exit_code=$?
+ done
+ exit $exit_code
+
+ - name: Upload report
+ if: failure()
+ uses: actions/upload-artifact@v3
+ with:
+ name: dotnet-format
+ path: ./*-report.json
+
+ pr_build:
+ uses: ./.github/workflows/build.yml
+ needs: format
+ secrets: inherit
diff --git a/.github/workflows/nightly_pr_comment.yml b/.github/workflows/nightly_pr_comment.yml
index deabae67..f59a6be1 100644
--- a/.github/workflows/nightly_pr_comment.yml
+++ b/.github/workflows/nightly_pr_comment.yml
@@ -1,8 +1,10 @@
name: Comment PR artifacts links
+
on:
workflow_run:
- workflows: ['Build job']
+ workflows: ['Perform checks']
types: [completed]
+
jobs:
pr_comment:
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'