This query ensures that all of our files marked as "pure" remain that way. In this case "pure" means that it does not depend on vscode and can therefore be run in tests outside of a runtime environment. This commit also explicitly moves all of our "pure" files to the `src/pure` directory.
22 lines
633 B
Plaintext
22 lines
633 B
Plaintext
/**
|
|
* @name Unwanted dependency on vscode API
|
|
* @kind problem
|
|
* @problem.severity error
|
|
* @id vscode-codeql/assert-pure
|
|
* @description The modules stored under `pure` and tested in the `pure-tests`
|
|
* are intended to be "pure".
|
|
*/
|
|
import javascript
|
|
|
|
class VSCodeImport extends ASTNode {
|
|
VSCodeImport() {
|
|
this.(Import).getImportedPath().getValue() = "vscode"
|
|
}
|
|
}
|
|
|
|
from Module m, VSCodeImport v
|
|
where
|
|
m.getFile().getRelativePath().regexpMatch(".*src/pure/.*") and
|
|
m.getAnImportedModule*().getAnImport() = v
|
|
select m, "This module is not pure: it has a transitive dependency on the vscode API imported $@", v, "here"
|