PMDバージョン: 7.0.0-rc4
AssignmentInOperand
公式ドキュメント: AssignmentInOperand
Since: PMD 5.0
Priority: Medium High (2)
Description:
条件式内での値の代入は避ける。コードが複雑になり、読みにくくなる。
等号演算子「==
」の代わりに代入演算子「=
」が使用されるバグを検出することがある。
Property:
名前 | デフォルト値 | 説明 | 複数指定 |
---|---|---|---|
allowIf | false | if文の条件式内での代入を許可する | - |
allowFor | false | for文の条件式内での代入を許可する | - |
allowWhile | false | while文の条件式内での代入を許可する | - |
allowTernary | false | 三項演算子の条件式内での代入を許可する | - |
allowTernaryResults | false | 三項演算子の結果式内での代入を許可する | - |
allowIncrementDecrement | false | if文、for文、while文の条件式にインクリメント、デクリメント演算子を使用できるようにする | - |
Configuration:
<!-- プロパティ設定なし --> <rule ref="category/ecmascript/codestyle.xml/AssignmentInOperand" /> <!-- プロパティ設定あり --> <rule ref="category/ecmascript/codestyle.xml/AssignmentInOperand" > <properties> <property name="allowIf" value="false" /> <property name="allowFor" value="false" /> <property name="allowWhile" value="false" /> <property name="allowTernary" value="false" /> <property name="allowTernaryResults" value="false" /> <property name="allowIncrementDecrement" value="false" /> </properties> </rule>
Example:
var x = 2; // NG // 条件式内で変数に代入を行っている if ((x = getX()) == 3) { alert('3!'); } // OK function getX() { return 3; }
ForLoopsMustUseBraces
公式ドキュメント: ForLoopsMustUseBraces
Since: PMD 5.0
Priority: Medium (3)
Description:
中括弧を使用しないfor文の使用は避ける。
Configuration:
<rule ref="category/ecmascript/codestyle.xml/ForLoopsMustUseBraces" />
Example:
// OK for (var i = 0; i < 42; i++) { foo(); } // NG // for文を使用する際には必ず「{}」を付ける for (var i = 0; i < 42; i++) foo();
IfElseStmtsMustUseBraces
公式ドキュメント: IfElseStmtsMustUseBraces
Since: PMD 5.0
Priority: Medium (3)
Description:
中括弧を使用しないif..else文の使用は避ける。
Configuration:
<rule ref="category/ecmascript/codestyle.xml/IfElseStmtsMustUseBraces" />
Example:
// OK if (foo) { x++; } else { y++; } // NG // if..else文を使用する際には必ず「{}」を付ける if (foo) x++; else y++;
IfStmtsMustUseBraces
公式ドキュメント: IfStmtsMustUseBraces
Since: PMD 5.0
Priority: Medium (3)
Description:
中括弧を使用しないif文の使用は避ける。
Configuration:
<rule ref="category/ecmascript/codestyle.xml/IfStmtsMustUseBraces" />
Example:
// OK if (foo) { x++; } // NG // if文を使用する際には必ず「{}」を付ける if (foo) x++;
NoElseReturn
公式ドキュメント: NoElseReturn
Since: PMD 5.5.0
Priority: Medium (3)
Description:
if-else構文のelseブロックは、ifブロックにreturnが含まれている場合、ブロック外に記載すればよいので不要となる。
Configuration:
<rule ref="category/ecmascript/codestyle.xml/NoElseReturn" />
Example:
// NG // elseに記載の内容はブロック内に記載する必要はない if (x) { return y; } else { return z; } // OK if (x) { return y; } return z;
UnnecessaryBlock
公式ドキュメント: UnnecessaryBlock
Since: PMD 5.0
Priority: Medium (3)
Description:
不要なBlockが存在する。
このようなブロックは、他の言語では新しい変数スコープを導入するためによく使用される。
ECMAScipt では Blocks はこのように動作しないので、これを使用すると誤解を招く可能性がある。
この不要なブロックを削除することを検討すべきである。
Configuration:
<rule ref="category/ecmascript/codestyle.xml/UnnecessaryBlock" />
Example:
if (foo) { // Ok } if (bar) { { // NG // ここに記載の処理が、本当にブロックで囲まれている必要があるのかを検討するべき } }
UnnecessaryParentheses
公式ドキュメント: UnnecessaryParentheses
Since: PMD 5.0
Priority: Medium Low (4)
Description:
不要な括弧は削除する。
Configuration:
<rule ref="category/ecmascript/codestyle.xml/UnnecessaryParentheses" />
Example:
var x = 1; // OK var y = (1 + 1); // OK var z = ((1 + 1)); // NG 括弧を過剰に書かない
UnreachableCode
公式ドキュメント: UnreachableCode
Since: PMD 5.0
Priority: High (1)
Description:
return
, break
, continue
, throw
文は、ブロックの中で最後に記述する。
これより後の文は決して実行されない。
return
, break
, continue
, throw
文以降に処理が記載されているのはバグ、あるいは極めて稚拙なスタイルである。
Configuration:
<rule ref="category/ecmascript/codestyle.xml/UnreachableCode" />
Example:
// OK function foo() { return 1; } // NG // return以降に処理を記載しない function bar() { var x = 1; return x; x = 2; }
WhileLoopsMustUseBraces
公式ドキュメント: WhileLoopsMustUseBraces
Since: PMD 5.0
Priority: Medium (3)
Description:
中括弧を使用しないwhile
文の使用は避ける。
Configuration:
<rule ref="category/ecmascript/codestyle.xml/WhileLoopsMustUseBraces" />
Example:
// OK while (true) { x++; } // NG // while文を使用する際には必ず「{}」を付ける while (true) x++;