-
Notifications
You must be signed in to change notification settings - Fork 193
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
Breaks when using reproducible builds #1899
Comments
This is actually way more concerning to me, as this fallback method is basically deprecated and we are intending to remove it:
We will want to fix this for users using reproducible builds, fixing this will also fix the other errors. It seems like Buildalyzer cannot deal with projects using reproducible builds in CI (so in CI mode which as you said before makes things deterministic including normalizing source paths). The fix might be to simply delete the CI msbuild property from the buildalyzer analysis. We should discuss with upstream if this is something that should be done in general or if this is something that should be done on a case-by-case basis. |
I'm currently trying to reproduce this issue on a local checkout of the repository and what's baffling is the non reproducible nature of this bug. Performing the following commands on a local checkout sometimes works and sometimes fails with the
And that's really sometimes, I can't reproduce this problem 100% of the time! |
OK, so I found something very interesting: when selecting the if (targetFramework == null)
{
return analyzerResults.First();
} But the One of them is the expected (valid) analyzer result and the other one is a broken analyzer result containing no references nor source files. I noticed that for the broken result, the As a workaround, using |
Further investigating into Buildalyzer, I figured it will probably difficult to fix this issue in Buildalyzer because a null target framework is expected for C++ projects. // use an empty string if no target framework was found, for example in case of C++ projects with VS >= 2022 So filtering out analyzer results that don't have a target framework as hinted in my previous comment is probably the way to go. |
I just opened #1900 to address this issue. |
…uildalyzer (#1900) Fixes #1899 Co-authored-by: Rouke Broersma <[email protected]>
The order itself is not relevant (the `NuGetFrameworkSorter` used to sort target frameworks doesn't guarantee any specific order anyway) but the order is deterministic, meaning that several builds of the same project will always yield the same order of the target frameworks and results. The nondeterministic nature of the current implementation made it hard to diagnose an implementation issue in Stryker.NET: stryker-mutator/stryker-net#1899 (comment)
I opened phmonte/Buildalyzer#198 on the Buildalyzer repository. |
The order itself is not relevant (the `NuGetFrameworkSorter` used to sort target frameworks doesn't guarantee any specific order anyway) but the order is deterministic, meaning that several builds of the same project will always yield the same order of the target frameworks and results. The nondeterministic nature of the current implementation made it hard to diagnose an implementation issue in Stryker.NET: stryker-mutator/stryker-net#1899 (comment)
The order itself is not relevant (the `NuGetFrameworkSorter` used to sort target frameworks doesn't guarantee any specific order anyway) but the order is deterministic, meaning that several builds of the same project will always yield the same order of the target frameworks and results. The nondeterministic nature of the current implementation made it hard to diagnose an implementation issue in Stryker.NET: stryker-mutator/stryker-net#1899 (comment)
The order itself is not relevant (the `NuGetFrameworkSorter` used to sort target frameworks doesn't guarantee any specific order anyway) but the order is deterministic, meaning that several builds of the same project will always yield the same order of the target frameworks and results. The nondeterministic nature of the current implementation made it hard to diagnose an implementation issue in Stryker.NET: stryker-mutator/stryker-net#1899 (comment)
The order itself is not relevant (the `NuGetFrameworkSorter` used to sort target frameworks doesn't guarantee any specific order anyway) but the order is deterministic, meaning that several builds of the same project will always yield the same order of the target frameworks and results. The nondeterministic nature of the current implementation made it hard to diagnose an implementation issue in Stryker.NET: stryker-mutator/stryker-net#1899 (comment)
When attempting to mutation test something built with deterministic/continuous integration set in versions equal to or greater than 1.3.0, the test usually (but not always) fails with a varying error:
Expected behavior
Mutation test to complete.
Desktop (please complete the following information):
Additional context
Can be reproduced by cloning Verlite, setting the
GITHUB_ACTIONS
env var totrue
and launching the mutation test:log-20220210.txt
VsTest-log.host.22-02-10_19-12-32_80171_9.txt
VsTest-log.txt
The text was updated successfully, but these errors were encountered: