国产自主可控概念(基于缺陷模式的静态分析技术在自主可控平台的应用)
以最具代表性的FindBugs为例:FindBugs关注的缺陷模式被硬编码到工具的几个缺陷模式检查器中。2自主平台:自主平台采用国产龙芯和飞腾芯片架构,运行基于Linux的新麒麟操作系统。1)根据迁移经验,形成针对自主可控平台的缺陷模式库。2)提供了缺陷模式库的半自动扩展机制。用户选择模板并填写必要的信息,以生成满足格式要求的“缺陷模式描述”,然后将其添加到缺陷模式库中。缺陷模式分为三类:Java语言缺陷模式、JavaScript语言缺陷模式和SQL语言缺陷模式。
其中,系统调用缺陷模式是指Java程序调用系统相关的脚本或可执行程序,由于自主可控平台运行基于Linux的操作系统,原本在windows上调用的脚本或可执行程序无法在自主可控平台上运行。新的阵列/容器对图像缺陷模式和对图像实例化缺陷模式涉及Java垃圾自动恢复机制。Java垃圾自动恢复机制影响了自主可控平台上JVM的运行效率,因此建议采用手动恢复。JavaScript语言的缺陷模式可细分为方法调用缺陷模式、ActiveX缺陷模式、对对话框打开缺陷模式、页面跳转缺陷模式和页面元素获取缺陷模式。方法调用缺陷模式意味着一些JavaScript方法,如innerText,可以在IE中正常工作,但在自主可控平台的Linux系统上没有IE浏览器,需要与火狐浏览器兼容;ActiveX缺陷模式意味着ActiveX控件可以在IE下使用;在火狐下,它不能被使用。ActiveX控件技术仅限于Windows平台,火狐插件需要基于NPAPI或QtBrowserPlugin进行重新开发。与JavaScript语言相关的缺陷模式是为了解决火狐浏览器的兼容性问题。SQL语言缺陷模式是指内置的函数缺陷模式。在windows平台上开发的原始应用系统使用了SQL Server、MySQL、Oracle等数据库。自主可控平台需要运行国内数据库,如达梦数据库和阿凡达数据库。虽然这两种类型的数据库都支持标准的SQL语句,但是内置函数有很大的不同。SQL语言缺陷模式的目的是解决数据库内置函数的不兼容性。4分析过程4.1获取源程序通过读取用户指定的源程序所在的目录,获取该目录下的所有文件。遍历该目录中的所有文件和文件夹,并根据要分析的问题类型进行过滤,如分析java语言的缺陷,注意带有扩展名的源程序文件”。Java”,分析JavaScript语言,注意带有扩展名的源程序文件”。js”,并跳过第三方库文件。汇总所有相关文件的基本信息,形成文件信息的数据模型。
4.2分析源程序对源程序,逐行扫描,删除不需要分析的代码,过滤掉这里以“//”开头的单行注释;以“/*”开头、以“*/”结尾的多行块注释;以“@”开头的声明性语句;单独的行括号,包括小括号()、中间括号[]、大括号{}和空行。同时,分析源代码。对分析了java类的基本信息。Java "文件,包括类名、包、引用包、数据成员及其类型、成员方法及其参数号、参数类型及其返回值。最后,被分析的源代码和相关信息被存储在文件模型中用于缺陷分析。4.3加载缺陷模式并将缺陷模式存储在数据库中。在缺陷分析之前,有必要根据要分析的文件类型和缺陷类型从数据库中读取。成功加载缺陷模式后,它将被存储为缺陷模式数据模型,用于缺陷分析。4.4缺陷分析基于步骤2中生成的文件模型和步骤3中生成的缺陷模式数据模型。首先,遍历文件模型,对每个文件模型,遍历缺陷模式数据模型,并匹配模型。如果匹配成功,则表明文件有缺陷。最后,缺陷匹配信息被存储为数据模型。4.5生成分析结果基于步骤4中生成的数据模型,生成分析结果。根据缺陷模式来区分分析结果,并且对每个缺陷模式使用对,并且总结缺陷模式匹配成功的文件,并且总结缺陷模式匹配成功的次数和每个文件中的行数。对于每种缺陷模式,对还会列出对,的解决方案建议,用户可以根据解决方案建议修改源代码。5.总之,对现有的大多数静态代码缺陷发现工具没有为用户提供足够的易于使用的缺陷模式扩展机制。提出了一种基于缺陷模式的支持半自动扩展的静态缺陷分析技术,并详细描述了该技术如何应用于自主可控的代码评估平台。在接下来的工作中,有必要继续扩展该方法支持的缺陷模式,并尽可能为用户提供一种方便易用的扩展模式,以帮助用户更快地管理缺陷模式。