{ "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Single source of truth for Sonar rule suppressions across SonarCloud, Codacy, and local builds", "rules": [ { "id": "S107", "reason": "Methods should not have too many parameters - high-performance SIMD methods require multiple parameters for zero-allocation patterns" }, { "id": "S1144", "reason": "Unused private types or members should be removed - false positives on reflection/serialization patterns" }, { "id": "S1192", "reason": "String literals should not be duplicated - guard clause exception messages are inline by .NET convention, not localizable strings" }, { "id": "S1244", "reason": "Floating point numbers should not be tested for equality - intentional exact comparisons in financial calculations" }, { "id": "S1944", "reason": "Inappropriate casts should not be made - false positives on generic constraint patterns" }, { "id": "S2053", "reason": "Hashes should include unpredictable salt - not applicable to non-cryptographic hashing" }, { "id": "S2245", "reason": "Using pseudorandom number generators is security-sensitive - GBM uses deterministic seeds for reproducibility" }, { "id": "S2259", "reason": "Null pointers should not be dereferenced - false positives with nullable reference types" }, { "id": "S2583", "reason": "Conditionally executed code should be reachable - false positives on defensive programming patterns" }, { "id": "S2589", "reason": "Boolean expressions should not be gratuitous - false positives on explicit clarity patterns" }, { "id": "S3236", "reason": "Caller information arguments should not be provided explicitly - intentional for testing/debugging" }, { "id": "S3329", "reason": "Cipher Block Chaining IVs should be unpredictable - not applicable to non-cryptographic code" }, { "id": "S3604", "reason": "Member initializer values should not be redundant - null! is intentional for nullable reference types in Quantower adapters" }, { "id": "S3655", "reason": "Empty nullable value should not be accessed - false positives with HasValue checks" }, { "id": "S3776", "reason": "Cognitive Complexity of methods should not be too high - complex algorithms require complex implementations" }, { "id": "S3949", "reason": "Calculations should not overflow - false positives on checked arithmetic contexts" }, { "id": "S3966", "reason": "Objects should not be disposed more than once - false positives on defensive dispose patterns" }, { "id": "S4158", "reason": "Empty collections should not be accessed or iterated - false positives on lazy initialization" }, { "id": "S4347", "reason": "Secure random number generators should not output predictable values - deterministic seeds for reproducibility" }, { "id": "S5773", "reason": "Types allowed to be deserialized should be restricted - not applicable to this codebase" }, { "id": "S6781", "reason": "JWT tokens should not be created using insecure secrets - not applicable to this codebase" }, { "id": "S109", "reason": "Magic numbers should be replaced with named constants - numeric literals in SIMD/math algorithms are intentional and self-documenting" }, { "id": "S122", "reason": "Statements should be on separate lines - compact initialization patterns improve readability in coefficient setup" }, { "id": "S134", "reason": "Control flow statements should not be nested too deeply - complex algorithms require nested loops" }, { "id": "S138", "reason": "Methods should not have too many lines - SIMD batch calculations are intentionally monolithic for performance" }, { "id": "S1067", "reason": "Expressions should not be too complex - validation guard clauses benefit from compound conditions" }, { "id": "S1227", "reason": "Break statements should not be used - early exit patterns improve performance in search loops" }, { "id": "S1309", "reason": "Track uses of in-source issue suppressions - intentional suppressions are documented" }, { "id": "S1451", "reason": "File headers should match a defined format - no file header requirement for this project" }, { "id": "S1541", "reason": "Cyclomatic complexity should not be too high - optimized algorithms require complex control flow" }, { "id": "S1659", "reason": "Multiple variables should not be declared on the same line - SIMD register declarations benefit from grouping" }, { "id": "S2360", "reason": "Optional parameters should not be used - optional parameters are idiomatic for indicator constructors" }, { "id": "S3254", "reason": "Default parameter values should not be passed as arguments - explicit defaults improve clarity" }, { "id": "S3264", "reason": "Events should be invoked - events may be conditionally invoked or used for chaining" }, { "id": "S3904", "reason": "Assemblies should have version information - version is set via Directory.Build.props" }, { "id": "S3906", "reason": "Event handlers should have the correct signature - custom delegates are used for performance" }, { "id": "S3908", "reason": "Generic event handlers should be used - TValuePublishedHandler is a performance-optimized custom delegate" }, { "id": "S3990", "reason": "Assemblies should be marked CLSCompliant - CLS compliance not required for internal library" }, { "id": "S3992", "reason": "Assemblies should have ComVisible attribute - COM interop not required" }, { "id": "S4035", "reason": "Classes implementing IComparable should also implement IEquatable - performance-optimized value types use custom equality semantics" } ] }