Numeric Coercion Risks
Detects implicit numeric conversions that risk truncation, overflow, or loss of precision. Flags unchecked downcasts, float-to-int conversions, and assignments from large types to small types.
Why this rule exists
Numeric truncation is silent. An int cast from a long value that exceeds Int32.MaxValue wraps around without warning. Precision loss in float-to-int conversions causes calculations to diverge. checked{} throws on overflow, making the failure visible.
Code example
+ int size = collection.Length; // Length is long, could truncate
+ int ratio = (int)(totalRatio * 100); // float to int precision loss+ int size = checked((int)collection.Length); // throws on overflow
+ decimal ratio = (decimal)totalRatio * 100; // use decimal for precisionConfiguration
Disable or adjust the severity of this rule in .gauntletci.json:
{
"rules": {
"GCI0051": { "enabled": true, "severity": "Warn" }
}
}See Configuration for the full schema.
Related rules
Float and Double Equality Comparison
Detects direct equality (== / !=) comparisons involving floating-point values, which produce unreliable results due to precision loss.
Data Integrity Risk
Detects unchecked casts, mass assignment without validation, and SQL ON CONFLICT IGNORE patterns that silently discard errors.
Implemented in src/GauntletCI.Core/Rules/Implementations/GCI0051_*.cs.
Eric Cogen -- Founder, GauntletCI
Twenty years in .NET production. Most of those years, the bugs that hurt me were not the ones tests caught. They were the assumptions I did not know I was making: a removed guard clause, a renamed method that still did the old thing, a catch {} that turned a page into a silent dashboard lie. GauntletCI is the checklist I wish I had run before every commit. It runs the rules I learned the hard way, so you do not have to.
