![](https://csdnimg.cn/release/download_crawler_static/18410400/bg1.jpg)
适用于分布式静态检测的Java代码依赖性
分析技术
①
韩承锋,唐云善,杨维永
(南京南瑞信息通信科技有限公司,南京210003)
通讯作者:韩承锋,E-mail:kkwwqe87@vip.qq.com
摘 要:为满足Java静态分布式检测系统对Java程序源代码解耦分包的需求,解决代码检测单节点单进程运行耗
时过长问题,实现分布式检测系统单任务多节点并行运行的目的,本文提出了Java源代码文件间依赖性分析方法.
该方法以生成源代码文件抽象语法树的方式抽取文件文本信息,遍历分析抽象语法树,获取文件与其他源代码文件
类依赖关系,再通过定位类所在的文件方式得到文件与文件之间依赖关系.同时,以无入边顶点的带环有向图表示
文件间依赖关系图,本文提出的方法基于该图进行了文件间解耦的分析.最后,通过对示例程序逐步剖析的实验以
及对数个开源工具源代码解耦拆分的实验,验证了本文提出的文件间依赖性分析方法的可行性.
关键词:文件依赖性分析;Java程序;JavaParser;依赖关系图;分布式静态检测
引用格式:韩承锋,唐云善,杨维永.适用于分布式静态检测的Java代码依赖性分析技术.计算机系统应用,2019,28(3):133–139.http://www.c-s-
a.org.cn/1003-3254/6797.html
Java Code Dependency Analysis Technique for Distributed Static Detection System
HANCheng-Feng,TANGYun-Shan,YANGWei-Yong
(NARIGroupCorporationInformation&CommunicationTechnologyCompany,Nanjing210003,China)
Abstract:InordertomeettherequirementsofJavastaticdistributeddetectionsystemfordecouplingandsubcontracting
Javaprogramsourcecodepackage,Javasourcecodefiledependencyanalysismethodwasproposed.Thismethodispart
ofsingle-taskmulti-nodeparallel-runningdistributeddetectionsystemwhichcouldsolvetheproblemthatittakeslong
timeforsingle-tasksingle-nodesingle-processcodedetection.ThemethodextractedtheJavasourcecodefiletext
informationbygeneratingitsabstractsyntaxtree.Then,themethodtraversesandparsestheabstractsyntaxtreetoobtain
thefile’sdependentclasseswhichwerenotdeclaredinthefile.Finally,thedependencyrelationshipbetweentwofiles
wasobtainedbylocatingthefileswherethedependentclassesweredeclaredin.Thedirectedcyclicgraphwithno
incidentedgeverticeswasproposedtorepresentthedependencygraphamongfiles.TheJavaprogramsourcecode
packagewasdecoupledbyanalyzingthedependencygraph.Atlast,thefeasibilityoftheproposedJavasourcecodefile
dependencyanalysismethodisverifiedbytwoexperiments.Thefirstexperimentisthestep-by-stepresultanalysisofa
sampleprogrampackage.Thesecondexperimentisverifyingthecorrectnessofdecouplingresultofseveralopensource
tools’sourcecodepackages.
Key words:filedependencyanalysis;Java;JavaParser;denpendencygraph;distributedstaticdetection
源代码静态分析是软件安全漏洞检测的主要方法
之一.静态分析是指在不运行程序情况下,对软件源代
码进行扫描分析.基于抽象语法树和程序控制流图等
模型的数据流分析则是现阶段静态检测的主要使用技
计算机系统应用ISSN1003-3254,CODENCSAOBN E-mail:csa@iscas.ac.cn
ComputerSystems&Applications,2019,28(3):133−139[doi:10.15888/j.cnki.csa.006797] http://www.c-s-a.org.cn
©中国科学院软件研究所版权所有. Tel:+86-10-62661041
①基金项目:国家电网公司科学技术项目(调度自动化软件安全漏洞与风险实验能力提升关键技术研究)
Foundationitem:ScienceandTechnologyProjectoftheStateGridCorporation(ResearchonKeyTechnologiesofAutomationSchedulingSoftwareSecurity
VulnerabilitiesandRiskExperimentCapabilityImprovement)
收稿时间:2018-08-31;修改时间:2018-09-26;采用时间:2018-10-08;csa在线出版时间:2019-02-22
SoftwareTechnique•Algorithm软件技术•算法133