BcMathExponentNotation
error native on by defaultGroup: Probable bugs
Use ordinary decimal notation for BCMath operands.
Example
php
<?php
$x = bcadd('2e4', '3', 0);Reported:
- line 2: Use ordinary decimal notation for BCMath operands.
Detection
- A numeric operand of bcadd, bcsub, bcmul, bcdiv, bcmod, bcpow, bcpowmod, bccomp or bcsqrt is a constant string containing exponent notation, with an otherwise valid signed decimal mantissa and integer exponent. The exponent argument of bcpow and bcpowmod is a numeric operand like the base and the modulus, whether passed positionally or by name.
- Resolve builtin functions, extension classes, constants and method receivers, including aliases and supported named arguments. Inspect reachable operations in one lexical scope with bounded local flow.
- Emit one finding per violating operation. Never infer policy from names or comments. When the proof is inconclusive, nothing is reported.
Exceptions (no report)
- Exclude shadowed or unresolved symbols, incomplete code, unknown required constants, ambiguous receiver identity and unsupported versions. Reassignment, escaping aliases, and unknown calls invalidate dependent flow facts.
- Both @custos-ignore BcMathExponentNotation and @noinspection BcMathExponentNotation suppress this native rule.
Fix
None. A safe repair requires choosing values, error handling, or application behavior.
PHP versions
Apply throughout PHP 5.3–8.5 only where the extension API and syntax exist. Do not flag API unavailability through this rule. Invalid-input error forms vary by PHP version; the BCMath operand contract is unchanged.
Options
None. Use normal rule configuration to enable or disable the inspection.
Configure
In custos.json:
json
{
"rules": {
"BcMathExponentNotation": {
"enabled": false
}
}
}Suppress
Before the statement or declaration (or the first statement of the file):
php
// @custos-ignore BcMathExponentNotation