mirror of
https://github.com/github/codeql.git
synced 2026-05-02 20:25:13 +02:00
JS: add query: js/useless-assignment-to-property
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
| real-world-examples.js:5:4:5:11 | o.p = 42 | This write to property 'p' is useless, since $@ always overrides it. | real-world-examples.js:10:2:10:9 | o.p = 42 | another property write |
|
||||
| real-world-examples.js:15:9:15:18 | o.p1 += 42 | This write to property 'p1' is useless, since $@ always overrides it. | real-world-examples.js:15:2:15:18 | o.p1 = o.p1 += 42 | another property write |
|
||||
| real-world-examples.js:16:11:16:20 | o.p2 *= 42 | This write to property 'p2' is useless, since $@ always overrides it. | real-world-examples.js:16:2:16:21 | o.p2 -= (o.p2 *= 42) | another property write |
|
||||
| real-world-examples.js:29:5:29:12 | o.p = 42 | This write to property 'p' is useless, since $@ always overrides it. | real-world-examples.js:32:3:32:10 | o.p = 42 | another property write |
|
||||
| real-world-examples.js:38:15:38:24 | o.p = f3() | This write to property 'p' is useless, since $@ always overrides it. | real-world-examples.js:38:2:38:31 | o.p = f ... : f4() | another property write |
|
||||
| tst.js:3:5:3:16 | o.pure1 = 42 | This write to property 'pure1' is useless, since $@ always overrides it. | tst.js:4:5:4:16 | o.pure1 = 42 | another property write |
|
||||
| tst.js:6:5:6:16 | o.pure2 = 42 | This write to property 'pure2' is useless, since $@ always overrides it. | tst.js:7:5:7:16 | o.pure2 = 43 | another property write |
|
||||
| tst.js:13:5:13:16 | o.pure4 = 42 | This write to property 'pure4' is useless, since $@ always overrides it. | tst.js:15:5:15:16 | o.pure4 = 42 | another property write |
|
||||
| tst.js:20:5:20:17 | o.pure6 = f() | This write to property 'pure6' is useless, since $@ always overrides it. | tst.js:21:5:21:16 | o.pure6 = 42 | another property write |
|
||||
| tst.js:23:5:23:16 | o.pure7 = 42 | This write to property 'pure7' is useless, since $@ always overrides it. | tst.js:25:5:25:16 | o.pure7 = 42 | another property write |
|
||||
| tst.js:76:5:76:34 | o.pure1 ... te = 42 | This write to property 'pure16_simpleAliasWrite' is useless, since $@ always overrides it. | tst.js:77:5:77:36 | o16.pur ... te = 42 | another property write |
|
||||
| tst.js:95:5:95:17 | o.pure18 = 42 | This write to property 'pure18' is useless, since $@ always overrides it. | tst.js:96:5:96:17 | o.pure18 = 42 | another property write |
|
||||
| tst.js:96:5:96:17 | o.pure18 = 42 | This write to property 'pure18' is useless, since $@ always overrides it. | tst.js:97:5:97:17 | o.pure18 = 42 | another property write |
|
||||
@@ -0,0 +1 @@
|
||||
Declarations/DeadStoreOfProperty.ql
|
||||
@@ -0,0 +1,12 @@
|
||||
(function(){
|
||||
var o = {};
|
||||
o.prop1 = o['prop1'] = x;
|
||||
|
||||
o['prop2'] = o.prop2 = x;
|
||||
|
||||
o.prop3 = x
|
||||
o['prop3'] = x;
|
||||
|
||||
o['prop4'] = x;
|
||||
o.prop4 = x
|
||||
});
|
||||
@@ -0,0 +1,43 @@
|
||||
// Adapted from the Google Closure externs; original copyright header included below.
|
||||
/*
|
||||
* Copyright 2008 The Closure Compiler Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @interface
|
||||
*/
|
||||
function EventTarget() {}
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements {EventTarget}
|
||||
* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID-1950641247
|
||||
*/
|
||||
function Node() {}
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {Node}
|
||||
* @see http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-core.html#ID-745549614
|
||||
*/
|
||||
function Element() {}
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
* @see http://www.w3.org/TR/cssom-view/#dom-element-clienttop
|
||||
*/
|
||||
Element.prototype.clientTop;
|
||||
|
||||
//semmle-extractor-options: --externs
|
||||
@@ -0,0 +1,13 @@
|
||||
(function(){
|
||||
var first = f();
|
||||
|
||||
function flush() {
|
||||
var flushed = first;
|
||||
|
||||
var next = g();
|
||||
first = next;
|
||||
next.prev = 42;
|
||||
|
||||
flushed.prev = 42;
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
(function(){
|
||||
var o = f1();
|
||||
while (f2()) {
|
||||
if (f4()) {
|
||||
o.p = 42;
|
||||
break;
|
||||
}
|
||||
f5();
|
||||
}
|
||||
o.p = 42;
|
||||
});
|
||||
|
||||
(function(){
|
||||
var o = f1();
|
||||
o.p1 = o.p1 += 42;
|
||||
o.p2 -= (o.p2 *= 42);
|
||||
});
|
||||
|
||||
(function(){
|
||||
var o = f1();
|
||||
o.m(function () {
|
||||
if (f2()) {
|
||||
|
||||
} else {
|
||||
try {
|
||||
f3();
|
||||
} catch (e) {
|
||||
f4();
|
||||
o.p = 42;
|
||||
}
|
||||
}
|
||||
o.p = 42;
|
||||
});
|
||||
});
|
||||
|
||||
(function(){
|
||||
var o = f1();
|
||||
o.p = f2() ? o.p = f3() : f4();
|
||||
});
|
||||
@@ -0,0 +1,98 @@
|
||||
(function(){
|
||||
var o = {};
|
||||
o.pure1 = 42;
|
||||
o.pure1 = 42;
|
||||
|
||||
o.pure2 = 42;
|
||||
o.pure2 = 43;
|
||||
|
||||
o.impure3 = 42;
|
||||
f();
|
||||
o.impure3 = 42;
|
||||
|
||||
o.pure4 = 42;
|
||||
43;
|
||||
o.pure4 = 42;
|
||||
|
||||
o.impure5 = 42;
|
||||
o.impure5 = f();
|
||||
|
||||
o.pure6 = f();
|
||||
o.pure6 = 42;
|
||||
|
||||
o.pure7 = 42;
|
||||
if(x){}
|
||||
o.pure7 = 42;
|
||||
|
||||
o.pure8_cond = 42;
|
||||
if(x){
|
||||
o.pure8_cond = 42;
|
||||
}
|
||||
|
||||
o.impure9 = 42;
|
||||
f();
|
||||
if(x){
|
||||
}
|
||||
o.impure9 = 42;
|
||||
|
||||
o.impure10 = 42;
|
||||
if(x){
|
||||
f();
|
||||
}
|
||||
o.impure10 = 42;
|
||||
|
||||
o.impure11 = 42;
|
||||
if(x){
|
||||
|
||||
}
|
||||
f();
|
||||
o.impure11 = 42;
|
||||
|
||||
o.pure12_read = 42;
|
||||
o.pure12_read;
|
||||
o.pure12_read = 42;
|
||||
|
||||
var o2;
|
||||
o.pure13_otherRead = 42;
|
||||
o2.pure13_otherRead;
|
||||
o.pure13_otherRead = 42;
|
||||
|
||||
function id14(e) {
|
||||
return e;
|
||||
}
|
||||
var o14 = id14(o);
|
||||
o.pure14_aliasRead = 42;
|
||||
o14.pure14_aliasRead;
|
||||
o.pure14_aliasRead = 42;
|
||||
|
||||
function id15(e) {
|
||||
return e;
|
||||
}
|
||||
var o15 = id15(o);
|
||||
o.pure15_aliasWrite = 42;
|
||||
o15.pure15_aliasWrite = 42;
|
||||
|
||||
var o16 = x? o: null;
|
||||
o.pure16_simpleAliasWrite = 42;
|
||||
o16.pure16_simpleAliasWrite = 42;
|
||||
|
||||
var o17 = {
|
||||
duplicate17: 42,
|
||||
duplicate17: 42
|
||||
}
|
||||
|
||||
// DOM
|
||||
o.clientTop = 42;
|
||||
o.clientTop = 42;
|
||||
|
||||
o.defaulted1 = null;
|
||||
o.defaulted1 = 42;
|
||||
|
||||
o.defaulted2 = -1;
|
||||
o.defaulted2 = 42;
|
||||
|
||||
var o = {};
|
||||
o.pure18 = 42;
|
||||
o.pure18 = 42;
|
||||
o.pure18 = 42;
|
||||
});
|
||||
Reference in New Issue
Block a user