40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
/**
|
||
* @fileoverview Rule to flag comparisons to null without a type-checking
|
||
* operator.
|
||
* @author Ian Christian Myers
|
||
*/
|
||
|
||
"use strict";
|
||
|
||
//------------------------------------------------------------------------------
|
||
// Rule Definition
|
||
//------------------------------------------------------------------------------
|
||
|
||
module.exports = {
|
||
meta: {
|
||
docs: {
|
||
description: "disallow `null` comparisons without type-checking operators",
|
||
category: "Best Practices",
|
||
recommended: false
|
||
},
|
||
|
||
schema: []
|
||
},
|
||
|
||
create(context) {
|
||
|
||
return {
|
||
|
||
BinaryExpression(node) {
|
||
const badOperator = node.operator === "==" || node.operator === "!=";
|
||
|
||
if (node.right.type === "Literal" && node.right.raw === "null" && badOperator ||
|
||
node.left.type === "Literal" && node.left.raw === "null" && badOperator) {
|
||
context.report({ node, message: "Use ‘===’ to compare with ‘null’." });
|
||
}
|
||
}
|
||
};
|
||
|
||
}
|
||
};
|