概述
《CodeQL Java 优化RemoteFlowSource v1》是最最开始学习CodeQL的时候,刚读到RemoteFlowSource时候想到的办法,学到后面后有了其他的更好的办法,但是没有及时更新笔记,为了避免读者被误导,所以增加了这一篇总结总结。
不同的场景可能需要的方案不同,可以自行选择适合自己场景的最佳方案。
方案一 在源代码中扩展RemoteFlowSource
也就是这一篇中所述的方式
https://www.yuque.com/loulan-b47wt/rc30f7/cg09eh
方案二 在数据流的isSource中扩展
方案三 通过继承抽象类RemoteFlowSource
java\ql\lib\semmle\code\java\dataflow\FlowSources.qll
可以看到RemoteFlowSource是一个抽象类
在CodeQL中,继承抽象类相当于在集合中取并集,继承具体类相当于在集合中取交集,可以参考下面这篇笔记
https://www.yuque.com/loulan-b47wt/rc30f7/wk2669#pkf6U
https://www.yuque.com/loulan-b47wt/rc30f7/ngb66i#u7mXh