库博工具最大的问题是解决了很多客户遇到的使用很多静态分析工具无法编译就无法检测的问题。这给非研发部门和评测中心等使用带来了便利,非研发团队或测评机构往往拿不到整个被检测项目的所有源代码、或头文件、库文件等,尤其是C/C++项目,则编译不了,就意味着无法检测,例如Coverity、Klocwork等工具是需要被检测工程编译通过的。实际上SAST工具实现上有两种路线,一种编译,对编译过程产生的中间文件进行检测,例如Klocwork、Coverity就属于该类工具;另一种就是不需要编译,而是针对源代码本身进行检测,代表性的工具就是Checkmarx。其实不管是编译还是不编译,都是需要转化为AST、CFG等,在上面进行数据流、控制流等分析。
库博是采用了代码补全技术,本身内置了很多编译器,例如:ARMCC、MinGW、C2000、tornado等,对于被检测工程,还是会自己匹配合适的编译器进行编译,编译通过则采用编译引擎方式进行检测。对于编译不通过即能检测。另外,编译不通过也能检测,也便于对大型项目进行分拆进行检测,SAST工具本身就是消耗内存的工具,如果在笔记本上安装,最多只有64G内存的笔记本电脑也能支持检测1000万行左右的项目,如果配置较低,对于大型项目,也可以按照不同文件夹进行检测。
对于编译引擎算法还是不编译引擎算法的检测结果,如果规则算法实现上做得较好,则两者精度上没有差别。
(结束)