From ef38fef7a88121288279de3858321b80f1ef509d Mon Sep 17 00:00:00 2001 From: Gregor Dostal <10714600+Gh0stWalk3r@users.noreply.github.com> Date: Sat, 2 Dec 2023 19:09:29 +0100 Subject: [PATCH 1/8] Update .gitignore --- .gitignore | 480 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 363 insertions(+), 117 deletions(-) diff --git a/.gitignore b/.gitignore index 104b544..f79f92b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,11 @@ +# Created by https://www.toptal.com/developers/gitignore/api/git,linux,macos,csharp,fsharp,windows,aspnetcore,dotnetcore,jetbrains+all,visualstudiocode +# Edit at https://www.toptal.com/developers/gitignore?templates=git,linux,macos,csharp,fsharp,windows,aspnetcore,dotnetcore,jetbrains+all,visualstudiocode + +### ASPNETCore ### ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. -## -## Get latest from `dotnet new gitignore` - -# dotenv files -.env # User-specific files -*.rsuser *.suo *.user *.userosscache @@ -16,9 +14,6 @@ # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs -# Mono auto generated files -mono_crash.* - # Build results [Dd]ebug/ [Dd]ebugPublic/ @@ -26,65 +21,42 @@ mono_crash.* [Rr]eleases/ x64/ x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ -[Ll]ogs/ -# Visual Studio 2015/2017 cache/options directory +# Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ -# Visual Studio 2017 auto generated files -Generated\ Files/ - # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* -# NUnit +# NUNIT *.VisualState.xml TestResult.xml -nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET +# DNX project.lock.json project.fragment.lock.json artifacts/ -# Tye -.tye/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio *_i.c *_p.c -*_h.h +*_i.h *.ilk *.meta *.obj -*.iobj *.pch *.pdb -*.ipdb *.pgc *.pgd *.rsp @@ -94,9 +66,7 @@ StyleCopReport.xml *.tlh *.tmp *.tmp_proj -*_wpftmp.csproj *.log -*.tlog *.vspscc *.vssscc .builds @@ -124,9 +94,6 @@ ipch/ *.vspx *.sap -# Visual Studio Trace Files -*.e2e - # TFS 2012 Local Workspace $tf/ @@ -138,21 +105,15 @@ _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user +# JustCode is a .NET coding add-in +.JustCode + # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - # Visual Studio code coverage results *.coverage *.coveragexml @@ -188,7 +149,7 @@ publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, +# TODO: Comment the next line if you want to checkin your web deploy settings # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj @@ -200,15 +161,13 @@ PublishScripts/ # NuGet Packages *.nupkg -# NuGet Symbol Packages -*.snupkg # The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* +**/packages/* # except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ +!**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files *.nuget.props *.nuget.targets @@ -225,15 +184,12 @@ AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt -*.appx -*.appxbundle -*.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache -!?*.[Cc]ache/ +!*.[Cc]ache/ # Others ClientBin/ @@ -244,12 +200,9 @@ ClientBin/ *.jfm *.pfx *.publishsettings +node_modules/ orleans.codegen.cs -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ @@ -264,22 +217,15 @@ _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak # SQL Server files *.mdf *.ldf -*.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ @@ -289,7 +235,6 @@ FakesAssemblies/ # Node.js Tools for Visual Studio .ntvs_analysis.dat -node_modules/ # Visual Studio 6 build log *.plg @@ -297,6 +242,195 @@ node_modules/ # Visual Studio 6 workspace options file *.opt +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/ + +### Csharp ### +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser + +# User-specific files (MonoDevelop/Xamarin Studio) + +# Mono auto generated files +mono_crash.* + +# Build results +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +# Uncomment if you have tasks that create the project's static files in wwwroot + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results + +# NUnit +nunit-*.xml + +# Build Results of an ATL Project + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_h.h +*.iobj +*.ipdb +*_wpftmp.csproj +*.tlog + +# Chutzpah Test files + +# Visual C++ cache files + +# Visual Studio profiler + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace + +# Guidance Automation Toolkit + +# ReSharper is a .NET coding add-in + +# TeamCity is a build add-in + +# DotCover is a Code Coverage Tool + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results + +# NCrunch + +# MightyMoose + +# Web workbench (sass) + +# Installshield output folder + +# DocProject is a documentation generator add-in + +# Click-Once directory + +# Publish Web Output +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted + +# NuGet Packages +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files + +# Microsoft Azure Build Output + +# Microsoft Azure Emulator + +# Windows Store app package directories and files +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) + +# RIA/Silverlight projects + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.ndf + +# Business Intelligence projects +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes + +# GhostDoc plugin setting file + +# Node.js Tools for Visual Studio + +# Visual Studio 6 build log + +# Visual Studio 6 workspace options file + # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw @@ -308,30 +442,17 @@ node_modules/ *.dsp # Visual Studio 6 technical files -*.ncb -*.aps # Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions # Paket dependency manager -.paket/paket.exe -paket-files/ # FAKE - F# Make -.fake/ # CodeRush personal settings .cr/personal # Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc # Cake - Uncomment if you are using it # tools/** @@ -401,32 +522,145 @@ FodyWeavers.xsd *.msp # JetBrains Rider -*.sln.iml -.idea -## -## Visual studio for Mac -## +### DotnetCore ### +# .NET Core build folders +bin/ +obj/ + +# Common node modules locations +/node_modules +/wwwroot/node_modules + +### fsharp ### +lib/debug +lib/release +Debug +obj +bin +/build/ +*.exe +!.paket/paket.bootstrapper.exe +.fake + +### Git ### +# Created by git for backups. To disable backups in Git: +# $ git config --global mergetool.keepBackup false +*.orig + +# Created by git when using merge tools for conflicts +*.BACKUP.* +*.BASE.* +*.LOCAL.* +*.REMOTE.* +*_BACKUP_*.txt +*_BASE_*.txt +*_LOCAL_*.txt +*_REMOTE_*.txt + +### JetBrains+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### JetBrains+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* +!.idea/codeStyles +!.idea/runConfigurations + +### Linux ### -# globs -Makefile.in -*.userprefs -*.usertasks -config.make -config.status -aclocal.m4 -install-sh -autom4te.cache/ -*.tar.gz -tarballs/ -test-results/ - -# Mac bundle stuff -*.dmg -*.app - -# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### # General .DS_Store .AppleDouble @@ -455,9 +689,27 @@ Network Trash Folder Temporary Items .apdisk -# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +### macOS Patch ### +# iCloud generated files +*.icloud + +### VisualStudioCode ### +!.vscode/*.code-snippets + +# Local History for Visual Studio Code + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +### Windows ### # Windows thumbnail cache files Thumbs.db +Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db @@ -471,14 +723,8 @@ ehthumbs_vista.db $RECYCLE.BIN/ # Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp # Windows shortcuts *.lnk -# Vim temporary swap files -*.swp +# End of https://www.toptal.com/developers/gitignore/api/git,linux,macos,csharp,fsharp,windows,aspnetcore,dotnetcore,jetbrains+all,visualstudiocode From 72e1029386dff694f8ca29c8b128326a63573093 Mon Sep 17 00:00:00 2001 From: Gregor Dostal <10714600+Gh0stWalk3r@users.noreply.github.com> Date: Sat, 2 Dec 2023 22:40:32 +0100 Subject: [PATCH 2/8] Add ci.yml Add CI pipeline Add code coverage Add stryker --- .config/dotnet-tools.json | 12 +++ .github/workflows/ci.yml | 129 +++++++++++++++++++++++++++++++ source/Directory.Build.props | 4 + source/FlashOWare.Generators.sln | 42 ++++++++++ source/gen/stryker-config.yaml | 8 ++ 5 files changed, 195 insertions(+) create mode 100644 .config/dotnet-tools.json create mode 100644 .github/workflows/ci.yml create mode 100644 source/gen/stryker-config.yaml diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 0000000..8cfcb61 --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-stryker": { + "version": "3.12.0", + "commands": [ + "dotnet-stryker" + ] + } + } +} \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0663563 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,129 @@ +# This workflow will build a .NET project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net + +name: CI + +on: + pull_request: + push: + branches: + - main + workflow_dispatch: + +permissions: + pull-requests: write + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }} + cancel-in-progress: true + +env: + DOTNET_CLI_PERF_LOG: false + DOTNET_CLI_TELEMETRY_OPTOUT: true + DOTNET_GENERATE_ASPNET_CERTIFICATE: false + DOTNET_NOLOGO: true + SuppressNETCoreSdkPreviewMessage: true + SLN_PATH: source/FlashOWare.Generators.sln + +jobs: + build: + name: Restore & Build & Test + continue-on-error: false + strategy: + fail-fast: false + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + configuration: [Debug, Release] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + global-json-file: global.json + - name: Restore dependencies + run: dotnet restore ${{ env.SLN_PATH }} --configfile nuget.config --no-cache + - name: Build + run: dotnet build ${{ env.SLN_PATH }} --configuration ${{ matrix.configuration }} --no-restore + - name: Test + run: dotnet test ${{ env.SLN_PATH }} --configuration ${{ matrix.configuration }} --no-build + codeCoverage: + name: Collect Code Coverage + needs: + - build + runs-on: ubuntu-latest + env: + COVERAGE_OUTPUT_PATH: artifacts/coverage + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + global-json-file: global.json + - name: Restore dependencies + run: dotnet restore ${{ env.SLN_PATH }} --configfile nuget.config --no-cache + - name: Build + run: dotnet build ${{ env.SLN_PATH }} --configuration Release --no-restore + - name: Test + run: dotnet test ${{ env.SLN_PATH }} --configuration Release --no-build --collect:"XPlat Code Coverage" --logger trx --results-directory ${{ env.COVERAGE_OUTPUT_PATH }} + - name: Code Coverage Summary Report + uses: irongut/CodeCoverageSummary@v1.3.0 + with: + filename: '${{ env.COVERAGE_OUTPUT_PATH }}/*/coverage.cobertura.xml' + badge: true + format: 'markdown' + output: 'both' + - name: Add Coverage PR Comment + uses: marocchino/sticky-pull-request-comment@v2 + if: github.event_name == 'pull_request' + with: + header: Code Coverage + recreate: true + path: code-coverage-results.md + - name: Write to Job Summary + run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY + mutationTesting: + name: Mutation Testing + needs: + - build + env: + STRYKER_OUTPUT_PATH: ${{ github.workspace }}/artifacts/stryker + runs-on: ubuntu-latest + steps: + - name: Setup Variables + # https://stryker-mutator.io/docs/stryker-net/reporters/#markdown-summary-reporter + run: echo "STRYKER_REPORT_PATH=${{ env.STRYKER_OUTPUT_PATH }}/reports/mutation-report.md" >> $GITHUB_ENV + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + global-json-file: global.json + - name: Restore tools + run: dotnet tool restore --configfile nuget.config --tool-manifest .config/dotnet-tools.json --no-cache + - name: Restore dependencies + run: dotnet restore ${{ env.SLN_PATH }} --configfile nuget.config --no-cache + - name: Build + # Although Stryker states that restore/build is not needed, I got a warning that sources could not be found. + # Therefore always restore/build! + run: dotnet build ${{ env.SLN_PATH }} --configuration Debug --no-restore + - name: Run dotnet-stryker + run: dotnet stryker --config-file stryker-config.yaml --output ${{ env.STRYKER_OUTPUT_PATH }} + working-directory: source/gen + - name: Add Mutation Test PR Comment + uses: marocchino/sticky-pull-request-comment@v2 + if: github.event_name == 'pull_request' + with: + header: Mutation Test + recreate: true + path: ${{ env.STRYKER_REPORT_PATH }} + - name: Write to Job Summary + run: cat ${{ env.STRYKER_REPORT_PATH }} >> $GITHUB_STEP_SUMMARY diff --git a/source/Directory.Build.props b/source/Directory.Build.props index 22fa39c..2bf38e2 100644 --- a/source/Directory.Build.props +++ b/source/Directory.Build.props @@ -26,4 +26,8 @@ $(WarningsNotAsErrors);CS0612;CS0618;CS1030 + + + + diff --git a/source/FlashOWare.Generators.sln b/source/FlashOWare.Generators.sln index 8737d3a..02734f8 100644 --- a/source/FlashOWare.Generators.sln +++ b/source/FlashOWare.Generators.sln @@ -4,33 +4,73 @@ Microsoft Visual Studio Solution File, Format Version 12.00 VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{68723E45-536E-4638-9751-87CCA07814DA}" + ProjectSection(SolutionItems) = preProject + examples\Directory.Build.props = examples\Directory.Build.props + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashOWare.Generators.Example", "examples\FlashOWare.Generators.Example\FlashOWare.Generators.Example.csproj", "{F57E367D-E386-4F5B-8E3B-61FB26D7E441}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gen", "gen", "{3FA455A7-9AB9-43AA-AE32-20F50F4BCF5C}" + ProjectSection(SolutionItems) = preProject + gen\Directory.Build.props = gen\Directory.Build.props + gen\stryker-config.yaml = gen\stryker-config.yaml + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashOWare.Generators", "gen\FlashOWare.Generators\FlashOWare.Generators.csproj", "{8B7C094D-BD6C-4378-B9B1-C032B862E5D9}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{4E4E7766-31AB-4486-A9B9-C27DEF55A1FA}" + ProjectSection(SolutionItems) = preProject + lib\Directory.Build.props = lib\Directory.Build.props + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashOWare.Generators.Attributes", "lib\FlashOWare.Generators.Attributes\FlashOWare.Generators.Attributes.csproj", "{25FEEDC6-727D-49AE-89B7-73CB7DE5D4BF}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "package", "package", "{44AC5637-7B29-48C4-BD22-A611BBEDB0E3}" + ProjectSection(SolutionItems) = preProject + package\Directory.Build.props = package\Directory.Build.props + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashOWare.Generators.Package", "package\FlashOWare.Generators.Package\FlashOWare.Generators.Package.csproj", "{0C437E75-0681-4166-8ADC-525087CE444F}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "perf", "perf", "{FD3F39BB-5A2F-4CB8-AA06-0DD65E161B4C}" + ProjectSection(SolutionItems) = preProject + perf\Directory.Build.props = perf\Directory.Build.props + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashOWare.Generated.Benchmarks", "perf\FlashOWare.Generated.Benchmarks\FlashOWare.Generated.Benchmarks.csproj", "{169547E5-6BDA-4E0F-8D44-2F06FB4E7A0C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashOWare.Generators.Benchmarks", "perf\FlashOWare.Generators.Benchmarks\FlashOWare.Generators.Benchmarks.csproj", "{BE4DBAD4-613F-474C-93C4-248A073F5016}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{CC256320-312F-49E0-B3BE-C0E5E596B8C1}" + ProjectSection(SolutionItems) = preProject + tests\Directory.Build.props = tests\Directory.Build.props + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashOWare.Generated.Tests", "tests\FlashOWare.Generated.Tests\FlashOWare.Generated.Tests.csproj", "{422D58CF-5DD4-408E-8D35-48C187311FE5}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashOWare.Generators.Tests", "tests\FlashOWare.Generators.Tests\FlashOWare.Generators.Tests.csproj", "{998580C9-1518-43A8-A91B-B4C3D6B25B18}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_solution items", "_solution items", "{04634A03-F288-4A1B-9F81-258F23537516}" + ProjectSection(SolutionItems) = preProject + ..\global.json = ..\global.json + ..\nuget.config = ..\nuget.config + Version.props = Version.props + Directory.Build.targets = Directory.Build.targets + Directory.Build.props = Directory.Build.props + ..\.gitignore = ..\.gitignore + ..\.gitattributes = ..\.gitattributes + ..\.editorconfig = ..\.editorconfig + ..\LICENSE = ..\LICENSE + ..\README.md = ..\README.md + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{AB36FB60-1828-4E44-AEB5-A856ABC2DFBB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{31CB57D9-89FB-4857-A0DE-738DCD87140A}" + ProjectSection(SolutionItems) = preProject + ..\.github\workflows\ci.yml = ..\.github\workflows\ci.yml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -82,6 +122,8 @@ Global {BE4DBAD4-613F-474C-93C4-248A073F5016} = {FD3F39BB-5A2F-4CB8-AA06-0DD65E161B4C} {422D58CF-5DD4-408E-8D35-48C187311FE5} = {CC256320-312F-49E0-B3BE-C0E5E596B8C1} {998580C9-1518-43A8-A91B-B4C3D6B25B18} = {CC256320-312F-49E0-B3BE-C0E5E596B8C1} + {AB36FB60-1828-4E44-AEB5-A856ABC2DFBB} = {04634A03-F288-4A1B-9F81-258F23537516} + {31CB57D9-89FB-4857-A0DE-738DCD87140A} = {AB36FB60-1828-4E44-AEB5-A856ABC2DFBB} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {46EE281F-3A08-4E42-B0B0-809B895E15C0} diff --git a/source/gen/stryker-config.yaml b/source/gen/stryker-config.yaml new file mode 100644 index 0000000..63cb10d --- /dev/null +++ b/source/gen/stryker-config.yaml @@ -0,0 +1,8 @@ + stryker-config: + solution: '../FlashOWare.Generators.sln' + project: 'FlashOWare.Generators/FlashOWare.Generators.csproj' + test-projects: + - '../tests/FlashOWare.Generated.Tests/FlashOWare.Generated.Tests.csproj' + - '../tests/FlashOWare.Generators.Tests/FlashOWare.Generators.Tests.csproj' + reporters: + - 'markdown' From 4c18d696ffa13d7fe221346b17c39b524aa257df Mon Sep 17 00:00:00 2001 From: Gregor Dostal <10714600+Gh0stWalk3r@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:56:46 +0100 Subject: [PATCH 3/8] Pin OS version --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0663563..1b8389d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-latest, ubuntu-latest, windows-latest] + os: [macos-12, ubuntu-22.04, windows-2022] configuration: [Debug, Release] runs-on: ${{ matrix.os }} steps: From 6fc57c30c7467bd56e7c9cb888b4612953e533f4 Mon Sep 17 00:00:00 2001 From: Gregor Dostal <10714600+Gh0stWalk3r@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:58:17 +0100 Subject: [PATCH 4/8] Remove comment --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b8389d..a284f1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,3 @@ -# This workflow will build a .NET project -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net - name: CI on: From 5386412542228821f813a4d6857b1616b28c1d6a Mon Sep 17 00:00:00 2001 From: Gregor Dostal <10714600+Gh0stWalk3r@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:08:13 +0100 Subject: [PATCH 5/8] Append new line --- .config/dotnet-tools.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 8cfcb61..95df29c 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -9,4 +9,4 @@ ] } } -} \ No newline at end of file +} From ff63a2d064183bc09200e392e3e2452fabba3dd3 Mon Sep 17 00:00:00 2001 From: Gregor Dostal <10714600+Gh0stWalk3r@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:10:00 +0100 Subject: [PATCH 6/8] Pin all OS versions --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a284f1c..8e1c0de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,7 +51,7 @@ jobs: name: Collect Code Coverage needs: - build - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 env: COVERAGE_OUTPUT_PATH: artifacts/coverage steps: @@ -91,7 +91,7 @@ jobs: - build env: STRYKER_OUTPUT_PATH: ${{ github.workspace }}/artifacts/stryker - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Setup Variables # https://stryker-mutator.io/docs/stryker-net/reporters/#markdown-summary-reporter From e331d4b4e7477ec30ed91421975610160ceef44d Mon Sep 17 00:00:00 2001 From: Gregor Dostal <10714600+Gh0stWalk3r@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:44:45 +0100 Subject: [PATCH 7/8] Collect code coverage for Debug build --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e1c0de..2cf2aaf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,9 +66,9 @@ jobs: - name: Restore dependencies run: dotnet restore ${{ env.SLN_PATH }} --configfile nuget.config --no-cache - name: Build - run: dotnet build ${{ env.SLN_PATH }} --configuration Release --no-restore + run: dotnet build ${{ env.SLN_PATH }} --configuration Debug --no-restore - name: Test - run: dotnet test ${{ env.SLN_PATH }} --configuration Release --no-build --collect:"XPlat Code Coverage" --logger trx --results-directory ${{ env.COVERAGE_OUTPUT_PATH }} + run: dotnet test ${{ env.SLN_PATH }} --configuration Debug --no-build --collect:"XPlat Code Coverage" --logger trx --results-directory ${{ env.COVERAGE_OUTPUT_PATH }} - name: Code Coverage Summary Report uses: irongut/CodeCoverageSummary@v1.3.0 with: From cd78d28b2214cc50a5f3ceddcf50741c88c578ae Mon Sep 17 00:00:00 2001 From: Gregor Dostal <10714600+Gh0stWalk3r@users.noreply.github.com> Date: Mon, 18 Dec 2023 14:22:49 +0100 Subject: [PATCH 8/8] Fix style --- source/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/Directory.Build.props b/source/Directory.Build.props index 2bf38e2..851a337 100644 --- a/source/Directory.Build.props +++ b/source/Directory.Build.props @@ -27,7 +27,7 @@ - +