Qt 有一种独特的方式从其他 JavaScript 资源导入 JavaScript 资源,其语法为:
.import "filename.js" as Qualifier
这样做的挑战在于,它会阻止 CodeQL 读取我们的 JavaScript 文件,因为这被标记为
syntax error
,并带有以下消息:
Syntax errors prevent code from executing correctly. If a piece of code contains syntax errors, this most likely indicates that it is never run and thus is dead code that should be removed.
我一直在寻找任何插入编译器指令或类似内容的方法,以便静态分析会忽略这些行,但运气不好。
是否可以对存在这些 import 和 pragma 语句的 Qt/QML 应用程序中使用的 JavaScript 文件执行 CodeQL 分析?
该文件中的 JS 仍会被解析并包含在 CodeQL 数据库中。 不幸的是 - 任何依赖理解依赖关系树的逻辑都将是不完整的,因此会导致数据库不太精确。一般来说,如果有一种方法可以转换为 javascript/typescript,那么您可以通过仅将 CodeQL(通过
codeql config中的
paths
)指向这些转换后的文件来获得更大的成功。