This is the contribution guide for Stryker.NET. Great to have you here! Here are a few ways you can help make this project better.
Do you have an idea for a feature or have you found a bug? Please create an issue so we can talk about it!
If you found a bug, please run dotnet stryker --verbosity debug
and add the output of the Stryker run to the issue.
New features are welcome! Either as requests or proposals.
- Please create an issue first, so we know what to expect from you.
- Create a fork on your github account.
- When writing your code, please conform to the Microsoft coding guidelines.
- Please create or edit unit tests or integration tests.
- Run the tests and verify they pass.
- Update documentation.
Please read the dedicated document.
While developing on Stryker.NET we advise to work in the latest Visual Studio and to set Stryker up to run on a UnitTest project on your local disk.
- Clone the repository
https://github.com/stryker-mutator/stryker-net.git
- Open
Stryker.sln
- On
Stryker.CLI
openproperties > Debug
- Create a new Debug profile
- Set
Launch
asProject
- Set
WorkingDirectory
as your local installation dir, pointing to a UnitTest projectexample: (C:\Repos\MyProject\src\MyProject\MyProject.UnitTest)
. You can use the ready made projects in.\integrationtest\TargetProjects
for this. - Run the program with
Stryker.CLI
as the startup project with the newly created Debug profile
* Running Stryker on itself doesn't work as the assemblies will be in use by Visual Studio. You can clone Stryker another time to use as a test project.
We advise to use the .NET Compiler Platform SDK
during development. The Syntax Visualizer
can help to understand Abstract Syntax Trees and find out types of SyntaxNodes
you need to target for certain mutators. The .NET Compiler Platform SDK
is available as a component in the Visual Studio Installer.
- Roslyn Quoter, for determining SyntaxFactory AST builder methods required to construct a syntax tree for the any C# input.
- Sharplab, for visualising different compilation steps of C# (AST, IL etc.)
When merging pull requests or creating commits, please conform to the angular commit message style, so our changelog will be updated.
Namely in the form <type>(<scope>): <subject>\n\n[body]
- Type: feat, fix, docs, style, refactor, test, chore.
- Scope: the file or group of files (not a strict right or wrong)
- Subject and body: present tense (
changedchange,addedadd) and include motivation and contrasts with previous behavior
Do you want to help? Great! These are a few things you can do:
- Evangelize mutation testing. Mutation testing is still relatively new, especially in .NET Core. Please help us get the word out there!
- Share your stories in blog posts an on social media. Please inform us about it! Did you use Stryker? Your feedback is very valuable to us. Good and bad! Please contact us and let us know what you think