Skip to content

Commit 26f77a0

Browse files
committed
JS: Deprecate getAnExportedSymbol() and DubiousImport.ql
getAnExportedSymbol() has a complex implementation that I'd rather not want to migrate given that it's only used by a dead query.
1 parent 59fc7aa commit 26f77a0

File tree

7 files changed

+2
-166
lines changed

7 files changed

+2
-166
lines changed

javascript/ql/integration-tests/query-suite/not_included_in_qls.expected

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ ql/javascript/ql/src/Metrics/FUseOfES6.ql
4444
ql/javascript/ql/src/Metrics/FunCyclomaticComplexity.ql
4545
ql/javascript/ql/src/Metrics/FunLinesOfCode.ql
4646
ql/javascript/ql/src/NodeJS/CyclicImport.ql
47-
ql/javascript/ql/src/NodeJS/DubiousImport.ql
4847
ql/javascript/ql/src/NodeJS/UnresolvableImport.ql
4948
ql/javascript/ql/src/NodeJS/UnusedDependency.ql
5049
ql/javascript/ql/src/Performance/NonLocalForIn.ql

javascript/ql/lib/semmle/javascript/Modules.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ abstract class Module extends TopLevel {
2525
/** Gets a module from which this module imports. */
2626
Module getAnImportedModule() { result = this.getAnImport().getImportedModule() }
2727

28-
/** Gets a symbol exported by this module. */
29-
string getAnExportedSymbol() { exists(this.getAnExportedValue(result)) }
28+
/** DEPRECATED. Use `exists(getAnExportedValue(name))` instead. */
29+
deprecated string getAnExportedSymbol() { exists(this.getAnExportedValue(result)) }
3030

3131
/**
3232
* Get a value that is explicitly exported from this module with under `name`.

javascript/ql/lib/semmle/javascript/NodeJS.qll

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,6 @@ class NodeModule extends Module {
5757
result.getAValue() = this.getAModuleExportsValue()
5858
}
5959

60-
/** Gets a symbol exported by this module. */
61-
override string getAnExportedSymbol() {
62-
result = super.getAnExportedSymbol()
63-
or
64-
result = this.getAnImplicitlyExportedSymbol()
65-
or
66-
// getters and the like.
67-
exists(DataFlow::PropWrite pwn |
68-
pwn.getBase() = this.getAModuleExportsNode() and
69-
result = pwn.getPropertyName()
70-
)
71-
}
72-
7360
override DataFlow::Node getAnExportedValue(string name) {
7461
// a property write whose base is `exports` or `module.exports`
7562
exists(DataFlow::PropWrite pwn | result = pwn.getRhs() |
@@ -123,29 +110,6 @@ class NodeModule extends Module {
123110
)
124111
}
125112

126-
/** Gets a symbol that the module object inherits from its prototypes. */
127-
private string getAnImplicitlyExportedSymbol() {
128-
exists(ExternalConstructor ec | ec = this.getPrototypeOfExportedExpr() |
129-
result = ec.getAMember().getName()
130-
or
131-
ec instanceof FunctionExternal and result = "prototype"
132-
or
133-
ec instanceof ArrayExternal and
134-
exists(NumberLiteral nl | result = nl.getValue() and exists(result.toInt()))
135-
)
136-
}
137-
138-
/** Gets an externs declaration of the prototype object of a value exported by this module. */
139-
private ExternalConstructor getPrototypeOfExportedExpr() {
140-
exists(AbstractValue exported | exported = this.getAModuleExportsValue() |
141-
result instanceof ObjectExternal
142-
or
143-
exported instanceof AbstractFunction and result instanceof FunctionExternal
144-
or
145-
exported instanceof AbstractOtherObject and result instanceof ArrayExternal
146-
)
147-
}
148-
149113
deprecated override predicate searchRoot(PathExpr path, Folder searchRoot, int priority) {
150114
path.getEnclosingModule() = this and
151115
exists(string pathval | pathval = path.getValue() |

javascript/ql/src/NodeJS/DubiousImport.qhelp

Lines changed: 0 additions & 47 deletions
This file was deleted.

javascript/ql/src/NodeJS/DubiousImport.ql

Lines changed: 0 additions & 68 deletions
This file was deleted.

javascript/ql/test/library-tests/NodeJS/tests.expected

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
module_getAnExportedSymbol
2-
| b.js:1:1:8:0 | <toplevel> | sneaky |
3-
| d.js:1:1:7:15 | <toplevel> | baz |
4-
| reexport/a.js:1:1:3:1 | <toplevel> | foo |
5-
| reexport/b.js:1:1:6:1 | <toplevel> | bar |
6-
| reexport/b.js:1:1:6:1 | <toplevel> | foo |
7-
| sub/c.js:1:1:4:0 | <toplevel> | foo |
8-
| sub/f.js:1:1:4:17 | <toplevel> | bar |
91
module_getAnImport
102
| a.js:1:1:14:0 | <toplevel> | a.js:1:9:1:22 | require('./b') |
113
| a.js:1:1:14:0 | <toplevel> | a.js:2:7:2:19 | require('fs') |

javascript/ql/test/library-tests/NodeJS/tests.ql

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
import javascript
22

3-
query predicate module_getAnExportedSymbol(NodeModule m, string symbol) {
4-
symbol = m.getAnExportedSymbol()
5-
}
6-
73
query predicate module_getAnImport(NodeModule m, Import imp) { imp = m.getAnImport() }
84

95
query predicate module_getAnImportedModule(NodeModule m, Module mod) {

0 commit comments

Comments
 (0)