Skip to content

Invalid Renaming in Project Level Workspace #68

Invalid Renaming in Project Level Workspace

Invalid Renaming in Project Level Workspace #68

name: Compilation Test with .NET
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
permissions:
pull-requests: write
jobs:
build-on-solution:
strategy:
fail-fast: false
matrix:
plugins:
- "--shuffle-declarations"
- "--rename-symbols --rename-namespaces --rename-classes --rename-properties --rename-fields --rename-methods --rename-variables"
- "--disable-console-output --disable-symbols=T:System.Console,T:System.Diagnostics.Debug"
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup .NET tools
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Restore NuGet dependencies
run: |
dotnet restore ./src/Plana.sln
- name: Phase.1 -- Build Original Source
run: |
dotnet build ./src/Plana.sln --no-restore --configuration=Release /p:WarningLevel=0
mkdir -p ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.Extensions/bin/Release/net8.0/Plana.Composition.Extensions.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.DisableConsoleOutput/bin/Release/net8.0/Plana.Composition.DisableConsoleOutput.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.RenameSymbols/bin/Release/net8.0/Plana.Composition.RenameSymbols.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.ShuffleDeclarations/bin/Release/net8.0/Plana.Composition.ShuffleDeclarations.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
dotnet ./src/Plana.CLI/bin/Release/net8.0/Plana.CLI.dll obfuscate --log-level verbose --workspace ./src/Plana.sln --plugins ./src/Plana.CLI/bin/Releases/net8.0/plugins --write ${{ matrix.plugins }}
- name: Phase.2 -- Re-Build Obfuscated Source
run: |
! git diff-index --quiet HEAD
dotnet build ./src/Plana.sln --no-restore --configuration=Release /p:WarningLevel=0
mkdir -p ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.Extensions/bin/Release/net8.0/Plana.Composition.Extensions.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.DisableConsoleOutput/bin/Release/net8.0/Plana.Composition.DisableConsoleOutput.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.RenameSymbols/bin/Release/net8.0/Plana.Composition.RenameSymbols.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.ShuffleDeclarations/bin/Release/net8.0/Plana.Composition.ShuffleDeclarations.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
git add -A
git stash save
- name: Phase.3 -- Re-Test with obfuscated source
run: |
# --log-level=verbose cannot be used because the target class has been obfuscated and renamed.
# It will be possible to control it by adding the PublicAPI attribute.
dotnet ./src/Plana.CLI/bin/Release/net8.0/Plana.CLI.dll obfuscate --workspace ./src/Plana.sln --plugins ./src/Plana.CLI/bin/Releases/net8.0/plugins --write ${{ matrix.plugins }}
! git diff-index --quiet HEAD
git --no-pager diff --ignore-all-space --ignore-blank-lines
build-on-project:
strategy:
fail-fast: false
matrix:
plugins:
- "--shuffle-declarations"
- "--rename-symbols --rename-namespaces --rename-classes --rename-properties --rename-fields --rename-methods --rename-variables"
- "--disable-console-output --disable-symbols=T:System.Console,T:System.Diagnostics.Debug"
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup .NET tools
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Restore NuGet dependencies
run: |
dotnet restore ./src/Plana.sln
- name: Phase.1 -- Build Original Source
run: |
dotnet build ./src/Plana.sln --no-restore --configuration=Release /p:WarningLevel=0
mkdir -p ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.Extensions/bin/Release/net8.0/Plana.Composition.Extensions.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.DisableConsoleOutput/bin/Release/net8.0/Plana.Composition.DisableConsoleOutput.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.RenameSymbols/bin/Release/net8.0/Plana.Composition.RenameSymbols.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.ShuffleDeclarations/bin/Release/net8.0/Plana.Composition.ShuffleDeclarations.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
dotnet ./src/Plana.CLI/bin/Release/net8.0/Plana.CLI.dll obfuscate --log-level verbose --workspace ./src/Plana.CLI/Plana.CLI.csproj --plugins ./src/Plana.CLI/bin/Releases/net8.0/plugins --write ${{ matrix.plugins }}
- name: Phase.2 -- Re-Build Obfuscated Source
run: |
! git diff-index --quiet HEAD
dotnet build ./src/Plana.sln --no-restore --configuration=Release /p:WarningLevel=0
mkdir -p ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.Extensions/bin/Release/net8.0/Plana.Composition.Extensions.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.DisableConsoleOutput/bin/Release/net8.0/Plana.Composition.DisableConsoleOutput.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.RenameSymbols/bin/Release/net8.0/Plana.Composition.RenameSymbols.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
cp ./src/Plana.Composition.ShuffleDeclarations/bin/Release/net8.0/Plana.Composition.ShuffleDeclarations.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins
git add -A
git stash save
- name: Phase.3 -- Re-Test with obfuscated source
run: |
# --log-level=verbose cannot be used because the target class has been obfuscated and renamed.
# It will be possible to control it by adding the PublicAPI attribute.
dotnet ./src/Plana.CLI/bin/Release/net8.0/Plana.CLI.dll obfuscate --workspace ./src/Plana.CLI/Plana.CLI.csproj --plugins ./src/Plana.CLI/bin/Releases/net8.0/plugins --write ${{ matrix.plugins }}
! git diff-index --quiet HEAD
git --no-pager diff --ignore-all-space --ignore-blank-lines