Refactor confirm button #6696
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Dead code detection | |
on: | |
pull_request: | |
types: [opened, labeled, unlabeled, synchronize] | |
paths: | |
- '**/*.swift' | |
jobs: | |
dead-code-check: | |
runs-on: macos-15 | |
permissions: | |
pull-requests: write | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Setup Xcode | |
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer | |
- name: Install Periphery | |
run: brew install peripheryapp/periphery/periphery | |
- name: Build project and run Periphery scan | |
id: periphery-scan | |
run: | | |
periphery scan --config .periphery.yml --clean-build --retain-codable-properties 2>&1 > periphery_report_feature_formatted_sorted.txt | |
ruby ci_scripts/dead_code/process_periphery_output.rb periphery_report_feature_formatted_sorted.txt unused_code_feature.json | |
- name: Copy .periphery.yml to temporary location | |
run: | | |
# Copy necessary files to temporary directory provided by GitHub Actions runner | |
cp .periphery.yml "$RUNNER_TEMP/" | |
cp -r ci_scripts/dead_code/ "$RUNNER_TEMP/" | |
- name: Compare Periphery output with master baseline | |
run: | | |
git fetch origin ${{ github.base_ref }}:${{ github.base_ref }} | |
git checkout ${{ github.base_ref }} | |
cp "$RUNNER_TEMP/.periphery.yml" .periphery.yml | |
mkdir -p ci_scripts/dead_code/ | |
cp -r "$RUNNER_TEMP/" ci_scripts/dead_code/ | |
periphery scan --config .periphery.yml --clean-build --retain-codable-properties 2>&1 > periphery_report_master_formatted_sorted.txt | |
ruby ci_scripts/dead_code/process_periphery_output.rb periphery_report_master_formatted_sorted.txt unused_code_master.json | |
- name: Compare Unused Code JSON Files | |
id: compare-dead-code | |
run: | | |
ruby ci_scripts/dead_code/compare_unused_code.rb unused_code_master.json unused_code_feature.json | |
# Check if new_dead_code.txt exists and is not empty | |
if [ -s new_dead_code.txt ]; then | |
echo "New dead code detected." | |
echo "diff<<EOF" >> $GITHUB_ENV | |
cat new_dead_code.txt >> $GITHUB_ENV | |
echo "EOF" >> $GITHUB_ENV | |
else | |
echo "No new dead code detected." | |
fi | |
- uses: peter-evans/find-comment@v3 | |
id: find_comment | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
body-includes: '[find-dead-code]' | |
- uses: peter-evans/create-or-update-comment@v3 | |
id: create_update_comment | |
if: env.diff != '' && !contains(github.event.pull_request.labels.*.name, 'skip dead code check') | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
body: | | |
🚨 New dead code detected in this PR: | |
```diff | |
${{ env.diff }} | |
``` | |
Please remove the dead code before merging. | |
If this is intentional, you can bypass this check by adding the label `skip dead code check` to this PR. | |
ℹ️ If this comment appears to be left in error, double check that the flagged code is actually used and/or make sure your branch is up-to-date with `master`. | |
[find-dead-code] | |
edit-mode: replace | |
comment-id: ${{ steps.find_comment.outputs.comment-id }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: peter-evans/create-or-update-comment@v3 | |
id: create_update_comment_ignored | |
if: env.diff != '' && contains(github.event.pull_request.labels.*.name, 'skip dead code check') | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
body: | | |
⚠️ New dead code detected in this PR but ignored: | |
```diff | |
${{ env.diff }} | |
``` | |
This dead code check has been bypassed with the `skip dead code check` label. | |
ℹ️ If this comment appears to be left in error, double check that the flagged code is actually used and/or make sure your branch is up-to-date with `master`. | |
[find-dead-code] | |
edit-mode: replace | |
comment-id: ${{ steps.find_comment.outputs.comment-id }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: peter-evans/create-or-update-comment@v3 | |
id: resolve_comment | |
if: env.diff == '' && steps.find_comment.outputs.comment-id != '' | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
body: | | |
✅ Dead code has been resolved in this PR. | |
[find-dead-code] | |
edit-mode: replace | |
comment-id: ${{ steps.find_comment.outputs.comment-id }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Fail if not acknowledged | |
if: env.diff != '' && !contains(github.event.pull_request.labels.*.name, 'skip dead code check') | |
run: exit 1 |