发明名称 基于关联规则挖掘的不可达路径检测方法
摘要 本发明涉及一种基于关联规则挖掘的不可达路径检测方法,该基于关联规则挖掘的不可达路径检测方法包括获取数据集、基于关联规则挖掘的分支相关性的确定及不可达路径的检测。该检测方法有效地将静态分析方法和动态分析技术的优势结合起来,既避免了使用纯静态分析方法分支节点覆盖率低、复杂度高的缺陷,又弥补了使用动态分析方法收集动态信息花费代价大的问题,该方法能够准确地检测出不可达路径,有效地提高了软件测试的效率。<b /><b />
申请公布号 CN102968375B 申请公布日期 2015.10.28
申请号 CN201210501664.7 申请日期 2012.11.30
申请人 中国矿业大学 发明人 姜淑娟;韩寒;张艳梅;袁冠
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 南京知识律师事务所 32207 代理人 高桂珍
主权项 基于关联规则挖掘的不可达路径检测方法,该基于关联规则挖掘的不可达路径检测方法包括获取数据集、基于关联规则挖掘的分支相关性的确定及不可达路径的检测,其特征在于,获取数据集,首先采用静态分析技术,利用Soot对程序进行预处理,构建程序的控制流图、控制树及蕴含树,然后设计搜索算法找出具有控制关系的分支节点序列集U,对于<img file="FDA0000754305920000011.GIF" wi="205" he="69" />采用动态分析技术,通过JDI监听序列u<sub>i</sub>中各个分支节点n<sub>i1</sub>,n<sub>i2</sub>,…,n<sub>ik</sub>的执行情况,在输入域内随机获取N个抽样输入向量,要求当程序输入每个抽样向量时n<sub>i1</sub>,n<sub>i2</sub>,…,n<sub>ik</sub>全部执行,若存在某节点n<sub>im</sub>不执行,则换取其它抽样值,直到所有的分支节点都执行;基于关联规则挖掘的分支相关性的确定,从数据集D<sub>i</sub>中,找出所有满足支持度大于等于最小支持度min_support的频繁项集,我们采用FP‑Growth算法进行挖掘,首先需要读取数据集D<sub>i</sub>,构造频繁1‑项集及FP‑Tree,然后根据算法2在FP‑Tree上进行频繁项集的挖掘,算法2采用分而治之的方法,它将FP‑Tree分解成一些条件模式库CPB,每个CPB和一个频繁1‑项集相关联,我们根据CPB构造其相应的条件FP‑tree,然后再采用递归算法分别对这些条件FP‑tree进行挖掘,从而得到所有的频繁项集F(D<sub>i</sub>,min_support);利用上一步得到的频繁项集F(D<sub>i</sub>,min_support)来产生规则,如果某一规则的置信度大于等于最小置信度(min_confidence),则该规则为关联规则,频繁项集{A,B}产生的规则<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>A</mi><mo>&DoubleRightArrow;</mo><mi>B</mi><mo>,</mo></mrow>]]></math><img file="FDA0000754305920000012.GIF" wi="164" he="69" /></maths>每个关联规则的生成为,对于<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mo>&ForAll;</mo><mi>f</mi><mo>&Element;</mo><mi>F</mi><mrow><mo>(</mo><msub><mi>D</mi><mi>i</mi></msub><mo>,</mo><mi>m</mi><mi>i</mi><mi>n</mi><mo>_</mo><mi>sup</mi><mi>p</mi><mi>o</mi><mi>r</mi><mi>t</mi><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000754305920000013.GIF" wi="673" he="81" /></maths>产生f的所有非空子集;对于f的每一个非空子集v,若<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>c</mi><mi>o</mi><mi>n</mi><mi>f</mi><mi>i</mi><mi>d</mi><mi>e</mi><mi>n</mi><mi>c</mi><mi>e</mi><mrow><mo>(</mo><mi>v</mi><mo>&DoubleRightArrow;</mo><mo>(</mo><mrow><mi>f</mi><mo>-</mo><mi>v</mi></mrow><mo>)</mo><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>P</mi><mrow><mo>(</mo><mi>f</mi><mo>)</mo></mrow></mrow><mrow><mi>P</mi><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow></mrow></mfrac><mo>=</mo><mfrac><mrow><mi>sup</mi><mtext> </mtext><mi>p</mi><mi>o</mi><mi>r</mi><mi>t</mi><mrow><mo>(</mo><mi>f</mi><mo>)</mo></mrow></mrow><mrow><mi>sup</mi><mtext> </mtext><mi>p</mi><mi>o</mi><mi>r</mi><mi>t</mi><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow></mrow></mfrac><mo>&GreaterEqual;</mo><mi>min</mi><mo>_</mo><mi>c</mi><mi>o</mi><mi>n</mi><mi>f</mi><mi>i</mi><mi>d</mi><mi>e</mi><mi>n</mi><mi>c</mi><mi>e</mi><mo>,</mo></mrow>]]></math><img file="FDA0000754305920000021.GIF" wi="1160" he="125" /></maths>其中P(f)表示f发生的概率,P(v)表示v发生的概率,则规则<img file="FDA0000754305920000022.GIF" wi="252" he="74" />为关联规则;不可达路径的检测,设n<sub>i</sub>和n<sub>j</sub>是程序中的两个条件语句,如果经关联规则挖掘后得到(n<sub>i</sub>,n<sub>j</sub>)有T→T相关性,则n<sub>i</sub>的真分支和n<sub>j</sub>的假分支构成冲突子路径;如果经关联规则挖掘后得到(n<sub>i</sub>,n<sub>j</sub>)有T→F相关性,则n<sub>i</sub>的真分支和n<sub>j</sub>的真分支构成冲突子路径;同样地,如果(n<sub>i</sub>,n<sub>j</sub>)有F→T相关性,则n<sub>i</sub>的假分支和n<sub>j</sub>的假分支构成冲突子路径;如果(n<sub>i</sub>,n<sub>j</sub>)有F→F相关性,则n<sub>i</sub>的假分支和n<sub>j</sub>的真分支构成冲突子路径;对于任何一条路径,若该路径包含冲突子路径,则它为不可达路径。
地址 221000 江苏省徐州市三环南路中国矿业大学南湖校区计算机学院
您可能感兴趣的专利