Files
codeql/javascript/ql/src/Expressions/SelfAssignment.qhelp
2018-11-06 12:24:34 +00:00

56 lines
1.4 KiB
XML

<!DOCTYPE qhelp PUBLIC
"-//Semmle//qhelp//EN"
"qhelp.dtd">
<qhelp>
<overview>
<p>
Assigning a variable to itself typically indicates a mistake such as a missing
<code>this</code> qualifier or a misspelled variable name.
</p>
</overview>
<recommendation>
<p>
Carefully inspect the assignment to check for misspellings or missing qualifiers.
</p>
<p>
If the self-assignment is intentional and is needed for documentation or optimization purposes,
add a JSDoc comment with a <tt>@type</tt> tag. This will indicate the self-assignment is intentional.
</p>
</recommendation>
<example>
<p>
In the example below, the constructor function <code>Rectangle</code> is intended
to initialize properties <code>x</code>, <code>y</code>, <code>width</code>, and
<code>height</code> to the parameters of the same names.
</p>
<sample src="examples/SelfAssignment.js" />
<p>
Note, however, that on line 4 the programmer forgot to qualify the left hand side of
the assignment with <code>this</code>: the code now performs a useless assignment of
the <code>width</code> parameter to itself and leaves the <code>width</code>
property uninitialized.
</p>
<p>
To fix this issue, insert a <code>this</code> qualifier:
</p>
<sample src="examples/SelfAssignmentGood.js" />
</example>
<references>
<li>Ecma International, <i>ECMAScript Language Definition</i>, 5.1 Edition, Section 11.13. ECMA, 2011.</li>
</references>
</qhelp>