PMDバージョン: 7.0.0-rc4
AvoidTrailingComma
公式ドキュメント: AvoidTrailingComma
Since: PMD 5.1
Priority: High (1)
Description:
ブラウザによってオブジェクトや配列リテラルの末尾のコンマの扱いが異なるため、末尾にコンマを書かないように留意することでコードの移植性を向上させるのに役立つ。
Property:
名前 | デフォルト値 | 説明 | 複数指定 |
---|---|---|---|
allowObjectLiteral | false | オブジェクトリテラル内の最後のカンマを許可する | - |
allowArrayLiteral | false | 配列リテラル内の末尾のカンマを許可する | - |
Configuration:
<rule ref="category/ecmascript/errorprone.xml/AvoidTrailingComma" /> <rule ref="category/ecmascript/errorprone.xml/AvoidTrailingComma"> <properties> <property name="allowObjectLiteral" value="false" /> <property name="allowArrayLiteral" value="false" /> </properties> </rule>
Example:
function(arg) { var obj1 = { a : 1 }; // OK var arr1 = [ 1, 2 ]; // OK var obj2 = { a : 1, }; // NG 一部のブラウザで構文エラーが発生 var arr2 = [ 1, 2, ]; // NG ブラウザによって、長さ2または3となる }
EqualComparison
公式ドキュメント: EqualComparison
Since: PMD 5.0
Priority: Medium (3)
Description:
条件付きで==
を使用すると、変数が自動的に同じ型にキャストされるため、予期しない結果になることがある。
演算子===
を使うと、キャスティングが回避される。
Configuration:
<rule ref="category/ecmascript/errorprone.xml/EqualComparison" />
Example:
// OK if (someVar === true) { ... } // OK if (someVar !== 3) { ... } // NG // someVarが暗黙的にキャストされるため、予期せぬ挙動を示す可能性がある if (someVar == true) { ... } // NG // someVarが暗黙的にキャストされるため、予期せぬ挙動を示す可能性がある if (someVar != 3) { ... }
InnaccurateNumericLiteral
公式ドキュメント: InnaccurateNumericLiteral
Since: PMD 5.0
Priority: Medium High (2)
Description:
数値リテラルは浮動小数点数の精度を高くしすぎた場合に実行時に異なる値を持つ可能性がある。 その結果、数値計算がエラーになることがある。
Configuration:
<rule ref="category/ecmascript/errorprone.xml/InnaccurateNumericLiteral" />
Example:
var a = 9; // OK var b = 999999999999999; // OK var c = 999999999999999999999; // NG var w = 1.12e-4; // OK var x = 1.12; // OK var y = 1.1234567890123; // OK var z = 1.12345678901234567; // NG