如何在CodeQL导出结果中显示完整字符串?
CodeQL导出CSV时完整显示字符串的解决办法
我在使用CodeQL查询时,通过a.getChild(1).toString()获取目标字符串(例如预期结果为PageLoadablePageWrapperQuery),但执行CSV导出命令后,字符串被截断为PageLo ... rQuery。相关查询语句和导出命令如下:
原查询语句
/** * @id custom * @kind problem * @problem.severity warning * */ import javascript from ObjectExpr oe, Property p1, int i, AstNode a where p1 = oe.getProperty(i) and p1.getName() = "fragment" and a = p1.getAChild().getAChild() and a.toString().indexOf("name") > -1 select a, a.getChild(1).toString()
原导出命令
codeql database analyze ~/test.com ./test.ql --format=csv --output=results.csv
解决办法
方法一:改用getText()获取完整文本
CodeQL的toString()方法默认会对较长字符串做截断处理,改用getText()方法可以直接获取AST节点的完整文本内容。修改后的查询语句如下:
/** * @id custom * @kind problem * @problem.severity warning * */ import javascript from ObjectExpr oe, Property p1, int i, AstNode a where p1 = oe.getProperty(i) and p1.getName() = "fragment" and a = p1.getAChild().getAChild() and a.toString().indexOf("name") > -1 select a, a.getChild(1).getText()
方法二:添加命令参数禁止截断
如果希望保留toString()方法,可以在导出命令中添加--no-truncation参数,强制关闭结果截断功能。修改后的命令如下:
codeql database analyze ~/test.com ./test.ql --format=csv --output=results.csv --no-truncation
内容的提问来源于stack exchange,提问作者Benassin
相关产品推荐
相关产品推荐

