AI Slop Code Risk Monitor

nissl-lab/npoi

SlopCodeMonitor badge for nissl-lab/npoi Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

a .NET library that can read/write Office formats without Microsoft Office installed. No COM+, no interop.

1.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for nissl-lab/npoi, a C# project with 6,208 GitHub stars. SynthScan examined 823,123 lines of code across 3184 source files, recording 1248 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 1.8 (Low 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.

1.8
Adjusted Signal
1.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
6.2K
Stars
C#
Language
823.1K
Lines of Code
3.2K
Files
1.2K
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 7.1/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.4/100 · LOW

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

Agent Over-Engineering Ratio 0.2/100 · LOW

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

PR Review Velocity Impact 8.6/100 · LOW

Which changes need focused human review? 1248 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 19HIGH 6MEDIUM 12LOW 1211

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 1248 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 Block1177 hits · 1144 pts
SeverityFileLineSnippetContext
LOWtools/DocPartViewer/DocPartViewer/MainForm.Designer.cs141 this.toolStripButton1.Text = "toolStripButton1";COMMENT
LOW…DocPartViewer/DocPartViewer/Properties/AssemblyInfo.cs21COMMENT
LOW…tViewer/DocPartViewer/Properties/Resources.Designer.cs1//------------------------------------------------------------------------------COMMENT
LOW…tyleViewer/NPOI.StyleViewer/Properties/AssemblyInfo.cs21COMMENT
LOW…ewer/NPOI.StyleViewer/Properties/Resources.Designer.cs1//------------------------------------------------------------------------------COMMENT
LOW…lSerializationCodeGenerator/Properties/AssemblyInfo.cs21COMMENT
LOW…lizationCodeGenerator/Properties/Resources.Designer.cs1//------------------------------------------------------------------------------COMMENT
LOWscratchpad/HSSF/Properties/AssemblyInfo.cs21COMMENT
LOWscratchpad/HWPF/Properties/AssemblyInfo.cs21[assembly: ComVisible(false)]COMMENT
LOWscratchpad/HWPF/Model/FileInformationBlock.cs961 _longHandler.SizeInBytes() + _fieldHandler.SizeInBytes();COMMENT
LOWscratchpad/HWPF/Model/SectionDescriptor.cs21 using NPOI.Util;COMMENT
LOWscratchpad/HWPF/UserModel/Range.cs1141COMMENT
LOWscratchpad/HWPF/UserModel/Range.cs1161 //}COMMENT
LOWscratchpad/HWPF/UserModel/CharacterProperties.cs381 // cp.field_22_dttmRMark = (DateAndTime)field_22_dttmRMark.Clone();COMMENT
LOWscratchpad/HWPF/UserModel/Picture.cs341 // int fileNameSize = LittleEndian.GetShort(dataStream, fileNameSizeOffSet);COMMENT
LOWscratchpad/HWPF/UserModel/TableProperties.cs61 // {COMMENT
LOWscratchpad/HWPF/SPRM/ParagraphSprmUncompressor.cs441 // int delSize = grpprl[Offset++];COMMENT
LOWscratchpad/HWPF/SPRM/ParagraphSprmUncompressor.cs461 // Byte val = Byte.ValueOf(grpprl[(LittleEndian.INT_SIZE * (AddSize - x)) + x]);COMMENT
LOWscratchpad/HWPF/SPRM/ParagraphSprmUncompressor.cs481 // tabDescriptors[x] = ((Byte)tabMap.Get(key)).byteValue();COMMENT
LOWscratchpad/HWPF/SPRM/ParagraphSprmCompressor.cs101 // offset += oldTabArray.Length;COMMENT
LOWscratchpad/HWPF/SPRM/TableSprmUncompressor.cs201COMMENT
LOWscratchpad/HWPF/SPRM/TableSprmUncompressor.cs221 // else if ((varParam[2] & 0x04) > 0)COMMENT
LOWscratchpad/HSLF/Record/RecordTypes.cs41 //public static RecordType DocumentAtom = new RecordType(1001, typeof(DocumentAtom));COMMENT
LOWscratchpad/HSLF/Record/RecordTypes.cs61 //public static RecordType DocRoutingSlip = new RecordType(1030, null);COMMENT
LOWscratchpad/HSLF/Record/RecordTypes.cs81 //public static RecordType ExObjRefAtom = new RecordType(3009, null);COMMENT
LOWscratchpad/HSLF/Record/RecordTypes.cs101 //public static RecordType FontEmbeddedData = new RecordType(4024, null);COMMENT
LOWscratchpad/HSLF/Record/RecordTypes.cs121 //public static RecordType RecolorInfoAtom = new RecordType(4071, null);COMMENT
LOWscratchpad/HSLF/Record/RecordTypes.cs141 //public static RecordType ExWAVAudioLink = new RecordType(4112, null);COMMENT
LOWscratchpad/HSLF/Record/RecordTypes.cs161 public static RecordType Comment2000Atom = new RecordType(12001, typeof(Comment2000Atom));COMMENT
LOWscratchpad/HSLF/Properties/AssemblyInfo.cs21COMMENT
LOWooxml/POIXMLDocumentPart.cs421 /// Add a new child POIXMLDocumentPartCOMMENT
LOWooxml/POIXMLPropertiesTextExtractor.cs181COMMENT
LOWooxml/SS/UserModel/WorkbookFactory.cs41 /// </summary>COMMENT
LOWooxml/SS/UserModel/WorkbookFactory.cs181 public static IWorkbook Create(string file, string password)COMMENT
LOWooxml/XWPF/Model/XWPFHeaderFooterPolicy.cs261 //{COMMENT
LOWooxml/XWPF/Usermodel/Borders.cs601 ZigZag = (190),COMMENT
LOWooxml/XWPF/Usermodel/Borders.cs621 //}COMMENT
LOWooxml/XWPF/Usermodel/UnderlinePatterns.cs141 //private int value;COMMENT
LOWooxml/XWPF/Usermodel/UnderlinePatterns.cs161 // throw new ArgumentException("Unknown underline pattern: "COMMENT
LOWooxml/XWPF/Usermodel/LineSpacingRule.cs61 //public int GetValue() {COMMENT
LOWooxml/XWPF/Usermodel/BreakType.cs61COMMENT
LOWooxml/XWPF/Usermodel/BreakType.cs81 // if (bType == null)COMMENT
LOWooxml/XWPF/Usermodel/BreakClear.cs101 // foreach (BreakClear p in values()) {COMMENT
LOWooxml/XWPF/Usermodel/XWPFComment.cs221 // cursor.toParent();COMMENT
LOWooxml/XWPF/Usermodel/XWPFComment.cs241 // cursor.toCursor(p2);COMMENT
LOWooxml/XWPF/Usermodel/XWPFComment.cs261 //private bool isCursorInCmt(XmlCursor cursor)COMMENT
LOWooxml/XWPF/Usermodel/XWPFComment.cs281 // XmlObject o = null;COMMENT
LOWooxml/XWPF/Usermodel/XWPFComment.cs301 // if (o is CT_P || o is CT_Tbl)COMMENT
LOWooxml/XWPF/Usermodel/XWPFComment.cs341 // if (!(o is CT_Row))COMMENT
LOWooxml/XWPF/Usermodel/XWPFComment.cs401 // using (XmlCursor c = ctP.newCursor())COMMENT
LOWooxml/XWPF/Usermodel/TextAlignment.cs61 //value = val;COMMENT
LOWooxml/XWPF/Usermodel/XWPFSDTContentCell.cs101 }COMMENT
LOWooxml/XWPF/Usermodel/XWPFSDTContentCell.cs121 // }COMMENT
LOWooxml/XWPF/Usermodel/XWPFAbstractNum.cs141 /// Hybrid Multilevel Numbering DefinitionCOMMENT
LOWooxml/XWPF/Usermodel/XWPFAbstractNum.cs161 /// Lowercase Roman NumeralsCOMMENT
LOWooxml/XWPF/Usermodel/XWPFAbstractNum.cs181 /// Cardinal TextCOMMENT
LOWooxml/XWPF/Usermodel/XWPFAbstractNum.cs201 /// IdeographsCOMMENT
LOWooxml/XWPF/Usermodel/XWPFAbstractNum.cs221 /// Double Byte Arabic NumeralsCOMMENT
LOWooxml/XWPF/Usermodel/XWPFAbstractNum.cs241 /// Decimal Numbers Enclosed in a CircleCOMMENT
LOWooxml/XWPF/Usermodel/XWPFAbstractNum.cs261 /// Initial Zero Arabic NumeralsCOMMENT
1117 more matches not shown…
Hallucination Indicators19 hits · 220 pts
SeverityFileLineSnippetContext
CRITICALscratchpad/HSLF/Model/ShapeTypes.cs45 Field[] f = NPOI.sl.usermodel.ShapeTypes.class.GetFields();CODE
CRITICALooxml/XWPF/Usermodel/XWPFRun.cs194 var pict = NPOI.OpenXmlFormats.Dml.Picture.CT_Picture.Parse(node, POIXMLDocumentPart.NamespaceManageCODE
CRITICAL⚡ooxml/XSSF/UserModel/XSSFFreeform.cs157 ctShape.spPr.custGeom.gdLst.gd.Add(gg);CODE
CRITICAL⚡ooxml/XSSF/UserModel/XSSFFreeform.cs162 ctShape.spPr.custGeom.gdLst.gd.Add(gg);CODE
CRITICAL⚡ooxml/XSSF/UserModel/XSSFFreeform.cs171 ctShape.spPr.custGeom.cxnLst.cxn.Add(cs);CODE
CRITICALooxml/XSSF/UserModel/XSSFFreeform.cs202 ctShape.spPr.custGeom.pathLst.path.Add(ctp);CODE
CRITICALmain/HSSF/Record/EscherAggregate.cs958 // // org.apache.poi.hslf.model.Picture.getPictureIndex()COMMENT
CRITICALmain/HSSF/Model/InternalWorkbook.cs2214 if (System.Threading.Thread.CurrentThread.CurrentCulture.Name.Equals("ru_RU"))CODE
CRITICALmain/HSSF/UserModel/HSSFCell.cs1231 return NPOI.SS.Formula.Eval.ErrorEval.GetText(((BoolErrRecord)_record).ErrorValue);CODE
CRITICALmain/SS/Formula/Functions/AggregateFunction.cs235 double[] ds = NPOI.SS.Formula.Functions.AggregateFunction.ValueCollector.CollectValues(arg0);CODE
CRITICALmain/SS/Formula/Functions/AggregateFunction.cs292 double[] ds = NPOI.SS.Formula.Functions.AggregateFunction.ValueCollector.CollectValues(arg0);CODE
CRITICALtestcases/test-data/spreadsheet/failxls.txt262 at NPOI.HSSF.Record.RecordFactoryInputStream.StreamEncryptionInfo.CreateDecryptingStream(Stream original) in f:\GloriCODE
CRITICALtestcases/test-data/spreadsheet/failxls.txt361 at NPOI.HSSF.Record.RecordFactoryInputStream.StreamEncryptionInfo.CreateDecryptingStream(Stream original) in f:\GloriCODE
CRITICAL…l/OpenXmlFormats/Spreadsheet/VmlDrawingDocumentTest.cs73// NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_Drawing_Accessor.serializer.Serialize(stream, drawing, NPOI.OpeCOMMENT
CRITICAL…l/OpenXmlFormats/Spreadsheet/VmlDrawingDocumentTest.cs209 // result = (NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_Drawing)NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_DrCOMMENT
CRITICAL…l/OpenXmlFormats/Spreadsheet/VmlDrawingDocumentTest.cs279 result = (NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_Drawing)NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_DrawCODE
CRITICAL…oxml/OpenXmlFormats/Spreadsheet/DrawingDocumentTest.cs73 NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_Drawing_Accessor.serializer.Serialize(stream, drawing, NPOI.OpenXCODE
CRITICAL…oxml/OpenXmlFormats/Spreadsheet/DrawingDocumentTest.cs133 result = (NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_Drawing)NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_DrawCODE
CRITICAL…oxml/OpenXmlFormats/Spreadsheet/DrawingDocumentTest.cs203 result = (NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_Drawing)NPOI.OpenXmlFormats.Dml.Spreadsheet.CT_DrawCODE
Synthetic Comment Markers6 hits · 45 pts
SeverityFileLineSnippetContext
HIGH…alizationCodeGenerator/Properties/Settings.Designer.cs3// This code was generated by a tool.COMMENT
HIGH…lizationCodeGenerator/Properties/Resources.Designer.cs3// This code was generated by a tool.COMMENT
HIGH.github/workflows/PR.yml4# This code was generated.COMMENT
HIGH.github/workflows/CI.yml4# This code was generated.COMMENT
HIGHtestcases/main/Util/TestIOUtils.cs198 /// as requested. This tests that the fallback to read() works.COMMENT
HIGHtestcases/main/Properties/Settings.Designer.cs3// This code was generated by a tool.COMMENT
Decorative Section Separators12 hits · 40 pts
SeverityFileLineSnippetContext
MEDIUM⚡…rks/NPOI.Benchmarks/SetCellStylePropertiesBenchmark.cs46 // ── HSSF workbook ──────────────────────────────────────────────────COMMENT
MEDIUM⚡…rks/NPOI.Benchmarks/SetCellStylePropertiesBenchmark.cs55 // ── XSSF workbook ──────────────────────────────────────────────────COMMENT
MEDIUM⚡…rks/NPOI.Benchmarks/SetCellStylePropertiesBenchmark.cs64 // ── Style property maps ────────────────────────────────────────────COMMENT
MEDIUM…rks/NPOI.Benchmarks/SetCellStylePropertiesBenchmark.cs97 // ── Benchmarks ─────────────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/PR.yml1# ------------------------------------------------------------------------------COMMENT
MEDIUM.github/workflows/PR.yml15# ------------------------------------------------------------------------------COMMENT
MEDIUM.github/workflows/CI.yml1# ------------------------------------------------------------------------------COMMENT
MEDIUM.github/workflows/CI.yml15# ------------------------------------------------------------------------------COMMENT
MEDIUMmain/SS/Util/StyleKey.cs31 // ── shorts ───────────────────────────────────────────────────────────COMMENT
MEDIUMmain/SS/Util/StyleKey.cs43 // ── int (font index stored as int in property map) ────────────────────COMMENT
MEDIUMmain/SS/Util/StyleKey.cs46 // ── enums stored as int ──────────────────────────────────────────────COMMENT
MEDIUMmain/SS/Util/StyleKey.cs58 // ── bools packed into a single byte ──────────────────────────────────COMMENT
TODO Padding13 hits · 19 pts
SeverityFileLineSnippetContext
LOWscratchpad/HSLF/Model/PPGraphics2D.cs1759 //TODO: implement more dashing stylesCOMMENT
LOWscratchpad/HSLF/Model/ShapePainter.cs67 //TODO: implement gradient and texture fill patternsCOMMENT
LOWscratchpad/HSLF/Model/ShapePainter.cs79 //TODO: implement more dashing stylesCOMMENT
LOWooxml/XSSF/Extractor/XSSFExportToXml.cs210 // TODO: implement filtering management in xpathCOMMENT
LOWooxml/XSSF/Streaming/SXSSFCell.cs487 //TODO: implement correctlyCOMMENT
LOWooxml/XSSF/Binary/XSSFBSheetHandler.cs44 private bool _formulasNotResults;//TODO: implement thisCODE
LOWOpenXmlFormats/Drawing/ShapeEffects.cs50 //TODO: implement http://www.schemacentral.com/sc/ooxml/t-a_CT_Blip.htmlCOMMENT
LOW…cases/ooxml/XSSF/Streaming/SXSSFCreationHelperTests.cs24 //TODO: Add tests.COMMENT
LOW…cases/ooxml/XSSF/Streaming/SXSSFEvaluationCellTests.cs24 //TODO:Add tests.COMMENT
LOW…s/ooxml/XSSF/Streaming/SXSSFEvaluationWorkbookTests.cs24 //TODO:Add testsCOMMENT
LOW…ses/ooxml/XSSF/Streaming/SXSSFFormulaEvaluatorTests.cs24 //TODO:Add tests.COMMENT
LOWtestcases/ooxml/XSSF/Streaming/SXSSFSheetTests.cs24 //TODO: Add tests.COMMENT
LOWtestcases/main/POIFS/Storage/TestHeaderBlockWriting.cs66 // TODO: Add test logic hereCOMMENT
Fake / Example Data19 hits · 19 pts
SeverityFileLineSnippetContext
LOWbenchmarks/NPOI.Benchmarks/AutoSizeColumnBenchmark.cs11 private static readonly string[] lorem = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tCODE
LOWbenchmarks/NPOI.Benchmarks/AutoSizeColumnBenchmark.cs11 private static readonly string[] lorem = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tCODE
LOWbenchmarks/NPOI.Benchmarks/AutoSizeColumnBenchmark.cs63 private static readonly string[] lorem = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tCODE
LOWbenchmarks/NPOI.Benchmarks/AutoSizeColumnBenchmark.cs63 private static readonly string[] lorem = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tCODE
LOWOpenXmlFormats/Wordprocessing/CustomXml.cs384 if (childNode.LocalName == "placeholder")CODE
LOWOpenXmlFormats/Wordprocessing/CustomXml.cs399 this.placeholder.Write(sw, "placeholder");CODE
LOWOpenXmlFormats/Wordprocessing/Sdt.cs1799 [XmlElement("placeholder", typeof(CT_Placeholder), Order = 0)]CODE
LOWOpenXmlFormats/Wordprocessing/Sdt.cs1884 else if (childNode.LocalName == "placeholder")CODE
LOWOpenXmlFormats/Wordprocessing/Sdt.cs1976 placeholder.Write(sw, "placeholder");CODE
LOWtestcases/ooxml/SS/Util/TestSheetUtilAutoSize.cs206 string[] words = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor".Split(' ');CODE
LOWtestcases/ooxml/SS/Util/TestSheetUtilAutoSize.cs206 string[] words = "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor".Split(' ');CODE
LOWtestcases/ooxml/XWPF/TestDocumentProtection.cs143 r1.SetText("Lorem ipsum dolor sit amet.");CODE
LOWtestcases/ooxml/XWPF/TestDocumentProtection.cs143 r1.SetText("Lorem ipsum dolor sit amet.");CODE
LOWtestcases/ooxml/XWPF/Extractor/TestXWPFWordExtractor.cs52 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc at risus vel erat tempus posuere. AeCODE
LOWtestcases/ooxml/XWPF/Extractor/TestXWPFWordExtractor.cs52 "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc at risus vel erat tempus posuere. AeCODE
LOWtestcases/ooxml/XWPF/UserModel/TestChangeTracking.cs61 r1.SetText("Lorem ipsum dolor sit amet.");CODE
LOWtestcases/ooxml/XWPF/UserModel/TestChangeTracking.cs61 r1.SetText("Lorem ipsum dolor sit amet.");CODE
LOWtestcases/openxml4net/TestPackageCoreProperties.cs295 ClassicAssert.AreEqual("Lorem Ipsum", props.GetTitleProperty());CODE
LOWtestcases/openxml4net/TestPackageCoreProperties.cs320 ClassicAssert.AreEqual("Lorem Ipsum", props.GetTitleProperty());CODE
Slop Phrases2 hits · 3 pts
SeverityFileLineSnippetContext
LOWscratchpad/HSLF/Record/RecordContainer.cs343 // Don't forget to knock 8 more off, since we don't include theCOMMENT
LOWscratchpad/HSLF/Record/RecordContainer.cs375 // Don't forget to knock 8 more off, since we don't include theCOMMENT