-
Notifications
You must be signed in to change notification settings - Fork 213
New solution support #3340
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
New solution support #3340
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds support for solution file parsing and platform configuration in Stryker.NET. The changes introduce a new Stryker.Solutions library that leverages Microsoft.VisualStudio.SolutionPersistence to parse solution files and extract project configurations.
Key changes:
- New
Stryker.Solutionslibrary withSolutionFileclass for parsing Visual Studio solution files - Support for specifying platform (e.g., "Any CPU") alongside configuration when building projects
- Refactored
InputFileResolverto use solution file parsing when analyzing solution contexts - Updated
StrykerOptionsto support platform configuration through the Configuration property - Multiple code quality improvements including null safety, simplified LINQ expressions, and better error handling
Reviewed Changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 31 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Stryker.sln | Added two new projects: Stryker.Solutions and Stryker.Solutions.Test |
| src/Stryker.Solutions/SolutionFile.cs | New class for parsing and querying Visual Studio solution files |
| src/Stryker.Solutions/Stryker.Solutions.csproj | New project file for the Solutions library |
| src/Stryker.Solutions.Test/* | New test project with comprehensive tests for SolutionFile functionality |
| src/Stryker.Utilities/Buildalyzer/IAnalyzerResultExtensions.cs | Refactored with improved null annotations, simplified LINQ, and moved helper class to bottom |
| src/Stryker.Utilities/Buildalyzer/Buildalyzer.cs | Removed unused overload taking solution file path |
| src/Stryker.Options/Options/StrykerOptions.cs | Added Platform property and logic to parse it from Configuration string |
| src/Stryker.Options/Options/Inputs/ConfigurationInput.cs | Updated description and removed whitespace validation |
| src/Stryker.Core/Stryker.Core/Initialisation/InputFileResolver.cs | Major refactoring to use SolutionFile for solution context analysis |
| src/Stryker.Core/Stryker.Core/Initialisation/InitialBuildProcess.cs | Added platform parameter support |
| src/Stryker.Core/Stryker.Core/Helpers/MsBuildHelper.cs | Added platform parameter to build commands |
| src/Stryker.Core/Stryker.Core.UnitTest/* | Updated tests to accommodate new parameters and solution provider |
| src/Directory.Packages.props | Added Microsoft.VisualStudio.SolutionPersistence package |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 33 out of 33 changed files in this pull request and generated 7 comments.
src/Stryker.Core/Stryker.Core/Initialisation/InputFileResolver.cs
Outdated
Show resolved
Hide resolved
src/Stryker.Core/Stryker.Core/Initialisation/InputFileResolver.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 33 out of 33 changed files in this pull request and generated 14 comments.
src/Stryker.Core/Stryker.Core/Initialisation/InitialisationProcess.cs
Outdated
Show resolved
Hide resolved
src/Stryker.Core/Stryker.Core/Initialisation/InputFileResolver.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 33 out of 33 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
src/Stryker.Core/Stryker.Core/Initialisation/InputFileResolver.cs:1
- This test verifies that an
InvalidOperationExceptionis thrown when the solution is not found, but the implementation at line 62 inSolutionFile.csthrowsInvalidOperationException, while the error handling inInputFileResolver.cs(lines 77-91) catchesIOException,UnauthorizedAccessException, andAggregateException. The test should verify the logged error and empty return, not an exception being thrown.
using System;
src/Stryker.Core/Stryker.Core/Initialisation/InitialisationProcess.cs
Outdated
Show resolved
Hide resolved
618520e to
d20788a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 33 out of 33 changed files in this pull request and generated 11 comments.
src/Stryker.Core/Stryker.Core/Initialisation/InputFileResolver.cs
Outdated
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 33 out of 33 changed files in this pull request and generated 7 comments.
|
@dupdob it will be at least two weeks before I am able to review, sorry |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 34 out of 34 changed files in this pull request and generated 9 comments.
# Conflicts: # src/Directory.Packages.props # src/Stryker.CLI/Stryker.CLI.UnitTest/packages.lock.json # src/Stryker.CLI/Stryker.CLI/packages.lock.json # src/Stryker.Core/Stryker.Core.UnitTest/packages.lock.json # src/Stryker.TestRunner.VsTest.UnitTest/packages.lock.json
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 42 out of 42 changed files in this pull request and generated no new comments.
|
|
Any chance to approve this and release soon? |
This comment has been minimized.
This comment has been minimized.
|
Anyone waiting on this can expedite the process by helping review and test the PR 😊 |



Reach 'full' support of solutions:
snlxfiles (on top of sln files)Support of solution level configurations offers permits to define a Stryker specific configuration(s) to exclude some project for example.
Platform can be specified via the `|'.
May fix #3269