AI Slop Code RIsk Monitor

icsharpcode/ILSpy

.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!

6.2 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for icsharpcode/ILSpy, a C# project with 26,522 GitHub stars. SynthScan examined 419,290 lines of code across 2003 source files, recording 2310 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 6.2 (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.

6.2
Adjusted Signal
6.2
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
26.5K
Stars
C#
Language
419.3K
Lines of Code
2.0K
Files
2.3K
Pattern Hits
2026-10-12
Scan Date
0.01
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 24.1/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 2282 finding(s).

Hallucinated Dependency & Supply Chain Risk 3.2/100 · LOW

Are imports declared and package/API names verified? 28 finding(s).

Agent Over-Engineering Ratio 0.0/100 · LOW

Are wrappers, guards, and repeated structures necessary? 0 finding(s).

PR Review Velocity Impact 26.4/100 · MEDIUM

Which changes need focused human review? 2310 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

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.

CRITICAL 27HIGH 3MEDIUM 3LOW 2277

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 2310 distinct pattern matches across 7 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.

Over-Commented Block2273 hits · 2273 pts
SeverityFileLineSnippetContext
LOWICSharpCode.ILSpyCmd/ValidationAttributes.cs1// Copyright (c) 2019 Christoph WilleCOMMENT
LOWICSharpCode.ILSpyCmd/InputFileLoader.cs1// Copyright (c) 2026 Siegfried PammerCOMMENT
LOWICSharpCode.ILSpyCmd/IlspyCmdProgram.cs1// Copyright (c) 2019 Christoph WilleCOMMENT
LOWICSharpCode.ILSpyCmd/IlspyCmdProgram.cs1001 /// Resolves a type name supplied on the command line to a single type definition.COMMENT
LOWICSharpCode.ILSpyCmd/BamlAwareWholeProjectDecompiler.cs1// Copyright (c) 2026 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyCmd/ResourceExtensions.cs1// Copyright (c) 2026 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyCmd/TypesParser.cs1// Copyright (c) 2017 Christoph WilleCOMMENT
LOWICSharpCode.ILSpyCmd/DotNetToolUpdateChecker.cs1// Copyright (c) 2023 Christoph WilleCOMMENT
LOWICSharpCode.ILSpyCmd/ProgramExitCodes.cs1// Copyright (c) 2019 Christoph WilleCOMMENT
LOWICSharpCode.ILSpyCmd/ILAstDumper.cs1// Copyright (c) 2026 Siegfried PammerCOMMENT
LOWICSharpCode.ILSpyCmd/Properties/AssemblyInfo.cs1// Copyright (c) 2011 Daniel GrunwaldCOMMENT
LOWILSpy.ReadyToRun/ReadyToRunOptionsViewModel.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWILSpy.ReadyToRun/ReadyToRunOptionsView.axaml.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWILSpy.ReadyToRun/ReadyToRunDisassembler.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWILSpy.ReadyToRun/ReadyToRunLanguage.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWILSpy.ReadyToRun/ReadyToRunOptions.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWILSpy.ReadyToRun/Properties/AssemblyInfo.cs1// Copyright (c) 2019 Andrew AuCOMMENT
LOWILSpy.ReadyToRun/Properties/Resources.Designer.cs1//------------------------------------------------------------------------------COMMENT
LOWICSharpCode.ILSpyX/AssemblyListManager.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/LoadedPackage.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/ApiVisibility.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/LanguageVersion.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/LoadedAssembly.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/LoadedAssembly.cs41 /// <summary>COMMENT
LOWICSharpCode.ILSpyX/LoadedAssembly.cs61 /// </summary>COMMENT
LOWICSharpCode.ILSpyX/LoadedAssembly.cs141 /// Returns the effective target framework identifier in the form '&lt;framework&gt;,Version=v&lt;version&gt;'.COMMENT
LOWICSharpCode.ILSpyX/LoadedAssembly.cs381 /// </summary>COMMENT
LOWICSharpCode.ILSpyX/LoadedAssembly.cs641 ILSpyXEventSource.Log.AssemblyResolveStop(reference, outcome);COMMENT
LOWICSharpCode.ILSpyX/LoadedAssemblyExtensions.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWICSharpCode.ILSpyX/AssemblyList.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/AssemblyList.cs421 lock (lockObj)COMMENT
LOWICSharpCode.ILSpyX/AssemblyListSnapshot.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/Settings/ISettingsProvider.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/Settings/ILSpySettings.cs1// Copyright (c) 2011 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/Settings/DecompilerSettings.cs1// Copyright (c) 2024 Tom EnglertCOMMENT
LOWICSharpCode.ILSpyX/Settings/SettingsServiceBase.cs1// Copyright (c) 2024 Tom EnglertCOMMENT
LOWICSharpCode.ILSpyX/Settings/MutexProtector.cs1// Copyright (c) 2026 AlphaSierraPapa for the SharpDevelop TeamCOMMENT
LOWICSharpCode.ILSpyX/Analyzers/AnalyzerContext.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWICSharpCode.ILSpyX/Analyzers/AnalyzerHelpers.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWICSharpCode.ILSpyX/Analyzers/IAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWICSharpCode.ILSpyX/Analyzers/IAnalyzer.cs21using ICSharpCode.Decompiler.TypeSystem;COMMENT
LOWICSharpCode.ILSpyX/Analyzers/AnalyzerScope.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOWICSharpCode.ILSpyX/Analyzers/ExportAnalyzerAttribute.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW….ILSpyX/Analyzers/Builtin/EventOverriddenByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…ILSpyX/Analyzers/Builtin/TypeInstantiatedByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…ILSpyX/Analyzers/Builtin/MethodOverriddenByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…LSpyX/Analyzers/Builtin/MethodVirtualUsedByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…Code.ILSpyX/Analyzers/Builtin/TypeExposedByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…Analyzers/Builtin/MemberImplementsInterfaceAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…ILSpyX/Analyzers/Builtin/FindTypeInAttributeDecoder.cs1// Copyright (c) 2022 Siegfried PammerCOMMENT
LOW…arpCode.ILSpyX/Analyzers/Builtin/MethodUsesAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…ILSpyX/Analyzers/Builtin/EventImplementedByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…pCode.ILSpyX/Analyzers/Builtin/MethodUsedByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…de.ILSpyX/Analyzers/Builtin/MemberOverridesAnalyzer.cs1// Copyright (c) 2026 Siegfried PammerCOMMENT
LOW…pyX/Analyzers/Builtin/PropertyImplementedByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…rpCode.ILSpyX/Analyzers/Builtin/FieldAccessAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…ILSpyX/Analyzers/Builtin/AttributeAppliedToAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…arpCode.ILSpyX/Analyzers/Builtin/TypeUsedByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
LOW…arpCode.ILSpyX/Analyzers/Builtin/TypeUsedByAnalyzer.cs61 {COMMENT
LOW…SpyX/Analyzers/Builtin/PropertyOverriddenByAnalyzer.cs1// Copyright (c) 2018 Siegfried PammerCOMMENT
2213 more matches not shown…
Hallucination Indicators27 hits · 275 pts
SeverityFileLineSnippetContext
CRITICALICSharpCode.ILSpyX/Search/CSharpLexer.cs278 // Debug.WriteLine(ICSharpCode.NRefactory.Parser.CSharp.Tokens.GetTokenString(curToken.kind) + " -- " + curToken.valCOMMENT
CRITICALICSharpCode.ILSpyX/Search/CSharpLexer.cs290 // Debug.WriteLine(ICSharpCode.NRefactory.Parser.CSharp.Tokens.GetTokenString(curToken.kind) + " -- " + curToken.val COMMENT
CRITICALILSpy.AddIn.VS2022/Utils.cs178 viewHost.TextView.TextDataModel.DocumentBuffer.Properties.TryGetProperty(typeof(ITextDocument), out textDocument);CODE
CRITICAL…Code.Decompiler/IL/ControlFlow/AsyncAwaitDecompiler.cs62 var entrypoint = System.Reflection.Metadata.Ecma335.MetadataTokens.MethodDefinitionHandle(module.CorHeader?.EntryPoinCODE
CRITICAL…Code.Decompiler/IL/ControlFlow/AsyncAwaitDecompiler.cs68 var entrypoint = System.Reflection.Metadata.Ecma335.MetadataTokens.MethodDefinitionHandle(module.CorHeader?.EntryPoinCODE
CRITICAL…ecompiler.Tests/Documentation/IdStringProviderTests.cs1766 "M:DeepNesting.Level1.Level2.Level3.Level4.DeepMethod(System.Int32)");STRING
CRITICALICSharpCode.Decompiler.Tests/Output/ILAmbienceTests.cs288 [TestCase(StandardConversionFlags, ".property instance int32 ICSharpCode.Decompiler.Tests.Output.Interface.Item(int32 CODE
CRITICALICSharpCode.Decompiler.Tests/Output/ILAmbienceTests.cs289 [TestCase(ILSpyMainTreeViewMemberFlags, "ICSharpCode.Decompiler.Tests.Output.Interface.Item(int32) : int32")]CODE
CRITICAL…arpCode.Decompiler.Tests/TestCases/Pretty/Issue1080.cs18 ICSharpCode.Decompiler.Tests.TestCases.Pretty.Issue1080.SpaceC.Extensions.Extension(type);CODE
CRITICAL…Tests/TestCases/Pretty/VariableNamingWithoutSymbols.cs110 brush = new ICSharpCode.Decompiler.Tests.TestCases.Pretty.First.Brush();CODE
CRITICAL…Tests/TestCases/Pretty/VariableNamingWithoutSymbols.cs116 brush2 = new ICSharpCode.Decompiler.Tests.TestCases.Pretty.Second.Brush();CODE
CRITICALILSpy/ViewModels/MetadataTablePageModel.cs209 if (!ICSharpCode.ILSpy.Metadata.Filters.CompiledFilter.Compile(flagsState).Matches(actual))CODE
CRITICALILSpy/TreeNodes/AssemblyTreeNode.cs631 _ => file.Reader.PEHeaders.CoffHeader.Machine.ToString(),CODE
CRITICALILSpy/Metadata/MetadataColumnBuilder.cs335 var schema = ICSharpCode.ILSpy.Metadata.Filters.FlagsSchemaInferer.For(enumType);CODE
CRITICALILSpy/Metadata/MetadataColumnBuilder.cs405 ICSharpCode.ILSpy.Metadata.Filters.FilterStatePersistence.ApplyXml(state, savedXml);CODE
CRITICALILSpy/Metadata/MetadataColumnBuilder.cs411 settings.FilterStates[key] = ICSharpCode.ILSpy.Metadata.Filters.FilterStatePersistence.ToXml(state);CODE
CRITICALILSpy.Tests/EntityReferenceResolveTests.cs63 System.Reflection.Metadata.Ecma335.MetadataTokens.TypeDefinitionHandle(2));CODE
CRITICAL…Tests/AssemblyTree/NavigateToReferenceAssemblyTests.cs45 const string TargetId = "M:ICSharpCode.ILSpy.Tests.AssemblyTree.NavigateToReferenceAssemblyTests.TargetMember(System.StCODE
CRITICALILSpy.Tests/Bookmarks/BookmarkAnchoringTests.cs80 fallback.Token.Should().Be((uint)System.Reflection.Metadata.Ecma335.MetadataTokens.GetToken(type.MetadataToken));CODE
CRITICALILSpy.Tests/Bookmarks/BookmarkNavigationViewTests.cs104 view.Editor.TextArea.Caret.Line.Should().Be(targetLine,CODE
CRITICALILSpy.Tests/Bookmarks/BookmarkNavigationViewTests.cs168 activeView.Editor.TextArea.Caret.Line.Should().Be(targetLine,CODE
CRITICALILSpy.Tests/Bookmarks/BookmarkNavigationViewTests.cs221 view.Editor.TextArea.Caret.Line.Should().Be(targetLine,CODE
CRITICALILSpy.Tests/Metadata/MetadataFilterTests.cs172 new(ICSharpCode.ILSpy.Metadata.Filters.FlagsSchemaInferer.For(typeof(SampleFlags)));CODE
CRITICALILSpy.Tests/Editor/MarginPointerTests.cs83 view.Editor.TextArea.Selection.IsEmpty.Should().BeTrue("a middle press on the line numbers must not select the line");CODE
CRITICALILSpy.Tests/Editor/FoldingGroupTests.cs77 <member name="M:ICSharpCode.ILSpy.Tests.TextView.FoldGroupSample.Documented(System.Int32)">CODE
CRITICALILSpy.Tests/Editor/ReferenceClickTests.cs100 view.Editor.TextArea.Selection.IsEmpty.Should().BeFalse(CODE
CRITICALILSpy.Tests/Editor/ReferenceClickTests.cs175 view.Editor.TextArea.Selection.IsEmpty.Should().BeTrue(CODE
Synthetic Comment Markers3 hits · 22 pts
SeverityFileLineSnippetContext
HIGHILSpy.ReadyToRun/Properties/Resources.Designer.cs3// This code was generated by a tool.COMMENT
HIGHILSpy.AddIn.VS2022/Resources.Designer.cs3// This code was generated by a tool.COMMENT
HIGHILSpy/Properties/Resources.Designer.cs3// This code was generated by a tool.COMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUM…pCode.Decompiler.Tests/Semantics/TypeInferenceTests.cs1452 // We filter those out to make the test more robust against changes.COMMENT
MEDIUM…er.Tests/Instrumentation/DecompilerEventSourceTests.cs46 /// (e.g. the decompiled type's full name) to stay robust under parallel test runs.COMMENT
MEDIUMILSpy.Tests/Instrumentation/ILSpyXEventSourceTests.cs50 /// robust under parallel test runs.COMMENT
Slop Phrases2 hits · 3 pts
SeverityFileLineSnippetContext
LOWICSharpCode.Decompiler/FlowAnalysis/DataFlowVisitor.cs278 /// Derived classes may add to this set of flags to ensure they don't forget to override an interesting method.COMMENT
LOW…SharpCode.Decompiler/CSharp/Resolver/CSharpResolver.cs149 /// <remarks>Don't forget to also set CurrentTypeDefinition when setting CurrentMember;COMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…Decompiler.Generators/DecompilerSyntaxTreeGenerator.cs820 paramName = "placeholder";CODE
TODO Padding1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…piler/IL/Instructions/CompoundAssignmentInstruction.cs311 public bool IsLifted => false; // TODO: implement lifted user-defined compound assignmentsCODE