xUnit.net is a free, open source, community-focused unit testing tool for .NET.
This report summarizes scanner evidence for xunit/xunit, a C# project with 4,611 GitHub stars. SynthScan examined 204,890 lines of code across 1660 source files, recording 893 pattern matches distributed across 3 syntactic categories. The legacy adjusted pattern signal is 5.1 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 868 finding(s).
Are imports declared and package/API names verified? 13 finding(s).
Are wrappers, guards, and repeated structures necessary? 12 finding(s).
Which changes need focused human review? 893 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 893 distinct pattern matches across 3 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/xunit.v3.core.tests/Runners/TestRunnerTests.cs | 241 | // InvokeTest | COMMENT |
| LOW | src/xunit.v3.core.tests/Runners/TestRunnerTests.cs | 281 | msg => Assert.Equal("OnTestClassConstructionStarting", msg), | COMMENT |
| LOW | src/xunit.v3.core.tests/Runners/TestRunnerTests.cs | 421 | Assert.Collection( | COMMENT |
| LOW | src/xunit.v3.core.tests/Runners/TestRunnerTests.cs | 461 | // CreateTestClassInstance | COMMENT |
| LOW | …t.v3.common.aot/Extensions/ReflectionExtensions_aot.cs | 41 | [typeof(decimal?)] = null, | COMMENT |
| LOW | …t.v3.common.aot/Extensions/ReflectionExtensions_aot.cs | 61 | /// <item><see langword="char" /></item> | COMMENT |
| LOW | …common.aot/Configuration/RegisteredRunnerConfig_aot.cs | 21 | /// <summary> | COMMENT |
| LOW | …common.aot/Configuration/RegisteredRunnerConfig_aot.cs | 61 | } | COMMENT |
| LOW | …lity/Registration/CodeGenTestCollectionRegistration.cs | 41 | } | COMMENT |
| LOW | …lity/Registration/CodeGenTestCollectionRegistration.cs | 61 | /// </summary> | COMMENT |
| LOW | …lity/Registration/CodeGenTestCollectionRegistration.cs | 81 | if (factory != null) | COMMENT |
| LOW | …rutility/Registration/CodeGenTestMethodRegistration.cs | 21 | readonly string methodName; | COMMENT |
| LOW | src/xunit.v3.generatorutility/Traits/TraitGenerator.cs | 61 | /// <param name="result">The generator result</param> | COMMENT |
| LOW | src/xunit.v3.generatorutility/Traits/TraitGenerator.cs | 81 | /// <param name="testCollectionName">The test collection name (will be <see langword="null"/> for type-based collectio | COMMENT |
| LOW | src/xunit.v3.generatorutility/Traits/TraitGenerator.cs | 101 | /// <remarks> | COMMENT |
| LOW | ….v3.generatorutility/TestMethod/TheoryMethodDetails.cs | 181 | /// Gets the factory for method invokers, responsible for enumerating over data rows and invoking | COMMENT |
| LOW | ….v3.generatorutility/TestMethod/TheoryMethodDetails.cs | 201 | /// <summary> | COMMENT |
| LOW | …v3.generatorutility/TestMethod/ITestMethodGenerator.cs | 1 | #nullable enable | COMMENT |
| LOW | …it.v3.generatorutility/TestMethod/TestMethodDetails.cs | 21 | /// and <see cref="CallerLineNumberAttribute"/>, and uses any values passed to those parameters as | COMMENT |
| LOW | …it.v3.generatorutility/TestMethod/TestMethodDetails.cs | 81 | COMMENT | |
| LOW | …it.v3.generatorutility/TestMethod/TestMethodDetails.cs | 101 | public INamedTypeSymbol ClassSymbol { get; } | COMMENT |
| LOW | …it.v3.generatorutility/TestMethod/TestMethodDetails.cs | 121 | /// Gets the explicit test flag for the test method | COMMENT |
| LOW | …it.v3.generatorutility/TestMethod/TestMethodDetails.cs | 141 | COMMENT | |
| LOW | …it.v3.generatorutility/TestMethod/TestMethodDetails.cs | 161 | public INamedTypeSymbol? SkipType { get; set; } | COMMENT |
| LOW | …it.v3.generatorutility/TestMethod/TestMethodDetails.cs | 181 | public int? SourceLineNumber { get; set; } | COMMENT |
| LOW | …it.v3.generatorutility/TestMethod/TestMethodDetails.cs | 281 | /// <item><c>DisplayName</c></item> | COMMENT |
| LOW | …it.v3.generatorutility/TestMethod/FactMethodDetails.cs | 1 | #nullable enable | COMMENT |
| LOW | …it.v3.generatorutility/TestMethod/FactMethodDetails.cs | 41 | COMMENT | |
| LOW | …neratorutility/TheoryData/DataAttributeRegistration.cs | 21 | /// </remarks> | COMMENT |
| LOW | …neratorutility/TheoryData/DataAttributeRegistration.cs | 41 | /// </summary> | COMMENT |
| LOW | …neratorutility/TheoryData/DataAttributeRegistration.cs | 61 | /// </summary> | COMMENT |
| LOW | …neratorutility/TheoryData/DataAttributeRegistration.cs | 81 | /// <returns> | COMMENT |
| LOW | …neratorutility/TheoryData/DataAttributeRegistration.cs | 181 | /// <param name="testClass">The test class</param> | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/XunitGenerator.cs | 21 | /// <remarks> | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/XunitGenerator.cs | 41 | /// for <c>xunit.v3.core.aot</c> (for test projects). | COMMENT |
| LOW | …v3.generatorutility/Utility/XunitAttributeGenerator.cs | 21 | /// <param name="fullyQualifiedAttributeTypeName">The fully qualified attribute name (e.g., | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/ComparerHelper.cs | 1 | #nullable enable | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/ComparerHelper.cs | 21 | /// </summary> | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/ComparerHelper.cs | 41 | T? y) | COMMENT |
| LOW | …ility/Utility/XunitAssemblyAttributeGeneratorResult.cs | 1 | #nullable enable | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/HashCodeHelper.cs | 21 | HashCodeHelper(int start) => | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/HashCodeHelper.cs | 41 | /// Starts a new instance of <see cref="HashCodeHelper"/>, when you are the not derived from a base | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/HashCodeHelper.cs | 61 | COMMENT | |
| LOW | ….v3.generatorutility/Utility/XunitMSBuildProperties.cs | 1 | #nullable enable | COMMENT |
| LOW | ….v3.generatorutility/Utility/XunitMSBuildProperties.cs | 21 | /// <summary> | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/Names.cs | 1 | #nullable enable | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/Extensions.cs | 441 | /// object will return <see langword="null"/>. | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/Extensions.cs | 461 | /// Produces a quoted and escaped value of a character, appropriate for placement into generated source. | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/Extensions.cs | 541 | COMMENT | |
| LOW | src/xunit.v3.generatorutility/Utility/Extensions.cs | 601 | /// </summary> | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/Extensions.cs | 681 | list.Add(value); | COMMENT |
| LOW | src/xunit.v3.generatorutility/Utility/Extensions.cs | 841 | /// <summary> | COMMENT |
| LOW | …it.v3.generatorutility/Utility/XunitGeneratorResult.cs | 41 | get => generatorNamespace ?? throw new InvalidOperationException("Failed to initialize generator result"); | COMMENT |
| LOW | …unit.v3.runner.inproc.console/Utility/AutomatedMode.cs | 1 | namespace Xunit.Runner.InProc.SystemConsole; | COMMENT |
| LOW | …runner.inproc.console/Utility/ProjectAssemblyRunner.cs | 61 | "xUnit.net v3 In-Process Runner v{0} ({1}-bit {2})", | COMMENT |
| LOW | …Configuration/ConfigReader_Configuration_reflection.cs | 1 | #if NETFRAMEWORK | COMMENT |
| LOW | …/xunit.v3.runner.utility/Configuration/ConfigReader.cs | 1 | // This is in this namespace so that it aligns with ConfigReader_Json, which comes from xunit.v3.runner.common | COMMENT |
| LOW | …nit.v3.runner.utility/SimpleRunner/TestFinishedInfo.cs | 1 | using Xunit.Sdk; | COMMENT |
| LOW | src/xunit.v3.runner.utility/SimpleRunner/TestInfo.cs | 1 | namespace Xunit.SimpleRunner; | COMMENT |
| LOW | src/xunit.v3.runner.utility/SimpleRunner/TestInfo.cs | 21 | public required IReadOnlyDictionary<string, IReadOnlyCollection<string>> Traits { get; set; } | COMMENT |
| 808 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/xunit.v3.runner.utility/Utility/RemotingUtility.cs | 23 | System.Runtime.Remoting.Channels.ChannelServices.UnregisterChannel(channel); | CODE |
| CRITICAL | src/common.tests/EntryPoint.cs | 13 | return global::Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult(); | CODE |
| CRITICAL | src/common.tests/EntryPoint.cs | 21 | return global::Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult(); | CODE |
| CRITICAL | …c/xunit.v2.tests/Sdk/TestCaseDescriptorFactoryTests.cs | 111 | Assert.Equal($"S :F:TestCaseDescriptorFactoryTests+TestClass:FactMethod:1:0:{testCase.TestMethod.TestClass.TestCollec | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 23 | return global::Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult(); | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 43 | global.Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult() | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 56 | Return Global.Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult() | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 79 | return global::Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult(); | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 94 | global.Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult() | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 104 | Return Global.Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult() | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 130 | return global::Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult(); | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 150 | global.Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult() | CODE |
| CRITICAL | src/xunit.v3.msbuildtasks/XunitEntryPointGenerator.cs | 163 | Return Global.Xunit.Runner.InProc.SystemConsole.ConsoleRunner.Run(args).GetAwaiter().GetResult() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …s/Generators/TestCaseOrdererAttributeGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.core.aot.generators. </auto-generated> #if xunit_gener | STRING |
| HIGH | …nerators/TestClassOrdererAttributeOfTGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.core.aot.generators. </auto-generated> #if xunit_gener | STRING |
| HIGH | …enerators/TestCaseOrdererAttributeOfTGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.core.aot.generators. </auto-generated> #if xunit_gener | STRING |
| HIGH | …erators/TestMethodOrdererAttributeOfTGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.core.aot.generators. </auto-generated> #if xunit_gener | STRING |
| HIGH | …ors/TestCollectionOrdererAttributeOfTGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.core.aot.generators. </auto-generated> #if xunit_gener | STRING |
| HIGH | …Generators/TestMethodOrdererAttributeGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.core.aot.generators. </auto-generated> #if xunit_gener | STRING |
| HIGH | …/Generators/TestClassOrdererAttributeGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.core.aot.generators. </auto-generated> #if xunit_gener | STRING |
| HIGH | …rators/TestCollectionOrdererAttributeGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.core.aot.generators. </auto-generated> #if xunit_gener | STRING |
| HIGH | …tTestingPlatformResultWriterAttributeGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.runner.common.aot.generators. </auto-generated> #if xu | STRING |
| HIGH | …/RegisterConsoleResultWriterAttributeGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.runner.common.aot.generators. </auto-generated> #if xu | STRING |
| HIGH | …gisterConsoleResultWriterAttributeOfTGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.runner.common.aot.generators. </auto-generated> #if xu | STRING |
| HIGH | …stingPlatformResultWriterAttributeOfTGeneratorTests.cs | 0 | // <auto-generated> this file has been auto generated by xunit.v3.runner.common.aot.generators. </auto-generated> #if xu | STRING |