SC2321: Warn about redundant $(()) in arr[$((i))]=x (ref: #1666)
This commit is contained in:
parent
d1d574c091
commit
30bb0e0093
|
@ -4,6 +4,7 @@
|
||||||
- SC2317: Warn about unreachable commands
|
- SC2317: Warn about unreachable commands
|
||||||
- SC2318: Warn about backreferences in 'declare x=1 y=$x'
|
- SC2318: Warn about backreferences in 'declare x=1 y=$x'
|
||||||
- SC2319/SC2320: Warn when $? refers to echo/printf/[ ]/[[ ]]/test
|
- SC2319/SC2320: Warn when $? refers to echo/printf/[ ]/[[ ]]/test
|
||||||
|
- SC2321: Suggest removing $((..)) in array[$((idx))]=val
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- SC2086: Now uses DFA to make more accurate predictions about values
|
- SC2086: Now uses DFA to make more accurate predictions about values
|
||||||
|
|
|
@ -206,6 +206,7 @@ nodeChecks = [
|
||||||
,checkCommandIsUnreachable
|
,checkCommandIsUnreachable
|
||||||
,checkSpacefulnessCfg
|
,checkSpacefulnessCfg
|
||||||
,checkOverwrittenExitCode
|
,checkOverwrittenExitCode
|
||||||
|
,checkUnnecessaryArithmeticExpansionIndex
|
||||||
]
|
]
|
||||||
|
|
||||||
optionalChecks = map fst optionalTreeChecks
|
optionalChecks = map fst optionalTreeChecks
|
||||||
|
@ -4913,5 +4914,22 @@ checkOverwrittenExitCode params t =
|
||||||
_ -> False
|
_ -> False
|
||||||
|
|
||||||
|
|
||||||
|
prop_checkUnnecessaryArithmeticExpansionIndex1 = verify checkUnnecessaryArithmeticExpansionIndex "a[$((1+1))]=n"
|
||||||
|
prop_checkUnnecessaryArithmeticExpansionIndex2 = verifyNot checkUnnecessaryArithmeticExpansionIndex "a[1+1]=n"
|
||||||
|
prop_checkUnnecessaryArithmeticExpansionIndex3 = verifyNot checkUnnecessaryArithmeticExpansionIndex "a[$(echo $((1+1)))]=n"
|
||||||
|
checkUnnecessaryArithmeticExpansionIndex params t =
|
||||||
|
case t of
|
||||||
|
T_Assignment _ mode var [TA_Sequence _ [ TA_Expansion _ [expansion@(T_DollarArithmetic id _)]]] val ->
|
||||||
|
styleWithFix id 2321 "Array indices are already arithmetic contexts. Prefer removing the $(( and ))." $ fix id
|
||||||
|
_ -> return ()
|
||||||
|
|
||||||
|
where
|
||||||
|
fix id =
|
||||||
|
fixWith [
|
||||||
|
replaceStart id params 3 "", -- Remove "$(("
|
||||||
|
replaceEnd id params 2 "" -- Remove "))"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
return []
|
return []
|
||||||
runTests = $( [| $(forAllProperties) (quickCheckWithResult (stdArgs { maxSuccess = 1 }) ) |])
|
runTests = $( [| $(forAllProperties) (quickCheckWithResult (stdArgs { maxSuccess = 1 }) ) |])
|
||||||
|
|
Loading…
Reference in New Issue