CN103678118A - 一种Java源代码的合规性检测方法和装置 - Google Patents

一种Java源代码的合规性检测方法和装置 Download PDF

Info

Publication number
CN103678118A
CN103678118A CN201310492007.5A CN201310492007A CN103678118A CN 103678118 A CN103678118 A CN 103678118A CN 201310492007 A CN201310492007 A CN 201310492007A CN 103678118 A CN103678118 A CN 103678118A
Authority
CN
China
Prior art keywords
coding criterion
source code
title
compliance
class
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310492007.5A
Other languages
English (en)
Other versions
CN103678118B (zh
Inventor
童小刚
吴迪
韩建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihu Ceteng Science & Technology Co ltd
Beijing Qihu Ceteng Security Technology Co ltd
Beijing Qihoo Technology Co Ltd
Original Assignee
BEIJING QIHU CETENG TECHNOLOGY Co Ltd
Beijing Qihoo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING QIHU CETENG TECHNOLOGY Co Ltd, Beijing Qihoo Technology Co Ltd filed Critical BEIJING QIHU CETENG TECHNOLOGY Co Ltd
Priority to CN201310492007.5A priority Critical patent/CN103678118B/zh
Publication of CN103678118A publication Critical patent/CN103678118A/zh
Application granted granted Critical
Publication of CN103678118B publication Critical patent/CN103678118B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种Java源代码的合规性检测方法和装置。方法包括:构建Java源代码的编码规范库,根据编码规范库中的编码规范,生成合规性检测规则集合,构建待检测的Java源代码的合规性检测模型,该模型包括:类集合C、方法集合M、变量集合V和指令集合I,将合规性检测规则集合中的各个规则一一与合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息,根据记录的匹配结果信息输出检测结果信息。本发明的技术方案,可实现Java源代码合规性的自动化检测,快速检测出不符合编码规范的源代码片段,有效提高了软件开发和测试的效率,从源代码层面保障了应用软件的编码质量和安全性问题。

Description

一种Java源代码的合规性检测方法和装置
技术领域
本发明涉及计算机软件开发技术领域,具体涉及一种Java源代码的合规性检测方法和装置。
背景技术
Java是一种高效的面向对象编程语言,被广泛应用于Android(安卓)应用软件的开发流程。随着Android移动智能终端市场占有率的不断增长,基于Java编写的Android应用软件的数量急剧增加。Android应用软件的编码规范性和安全性问题越来越成为产业界关注的焦点。
近些年来,由于基于Java编写的Android应用软件在开发过程没有统一、严格的遵循编码规范,导致针对Android应用软件的恶意攻击、用户隐私信息泄露等安全事件层出不穷,不仅损害普通用户的切身利益,也极大地增加了软件开发商的软件开发、维护投入的成本。目前,应用软件开发和测试中普遍通过人工方式进行编码规范的检查,不仅需要付出巨大的人工成本,同时会极大地减缓软件研发进度。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种Java源代码的合规性检测方法和装置。
依据本发明的一个方面,提供了一种Java源代码的合规性检测方法,该方法包括:
构建Java源代码的编码规范库;
根据所述编码规范库中的编码规范,生成合规性检测规则集合;
解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型;所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I;
将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息;
根据所记录的匹配结果信息输出检测结果信息。
可选地,
所述类集合C中的每个类包括:类的类型、类的名称、类的名称对应的行号以及类所在源代码文件的名称;
所述方法集合M中的每个方法包括:方法的类型、方法的名称、方法的名称对应的行号以及方法所属的类的名称;
所述变量集合V中的每个变量包括:变量的类型、变量的名称、变量的名称对应的行号;
所述指令集合I中的每个指令包括:指令的名称、指令相关的参数、调用该指令的指令的名称以及该指令的名称对应的行号。
可选地,所述解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型包括:
将该待检测的Java源代码的合规性检测模型中的C、M、V和I集合初始化为空;
遍历该待检测的Java源代码的字符流,解析每个单词的属性信息,判断属性信息的含义,将其添加到相应的C、M、V和I集合中。
可选地,所述编码规范库包括以下六大类:命名规范、设计规范、注释规范、语句规范、类规范和日志规范;
每个大类中又包含多个小类。
可选地,所述根据所述编码规范库中的编码规范,生成合规性检测规则集合包括:
根据编码规范库中的命名规范、设计规范、注释规范和日志规范中的一种或多种规范的文本模式特征编写相应的正则表达式,形成文本模式匹配规则库;将该文本模式匹配规则库加入到所述合规性检测规则集合中;
和/或,
根据编码规范库中的设计规范、语句规范和类规范中的一种或多种规范提取违反这些规范的情况,形成编码规范黑名单;将该黑名单加入到所述合规性检测规则集合中。
可选地,所述将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息包括:
步骤S1:判断合规性检测规则集合是否为空,若为空则转入步骤S4,否则转入步骤S2;
步骤S2:从合规性检测规则集合中提取出一个合规性检测规则与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配成功则转入步骤S3,否则转入步骤S1;
步骤S3:记录匹配的结果信息,包括:源代码文件的名称,该匹配的合规性检测规则对应的编码规范的标识,以及该匹配的合规性检测模型中内容在源代码中的行号;返回步骤S1;
步骤S4:输出所记录的结果信息。
可选地,所述编码规范库中的每条编码规范包括:
编码规范的唯一标识;
编码规范的类型信息;
编码规范的名称;
编码规范的描述信息,包括违反编码规范的原因、造成的伤害以及对应的错误样本代码;
针对违反编码规范的修复建议。
可选地,所述匹配结果信息包括:源代码文件的名称,违反的编码规范的标识,以及违反编码规范的内容在源代码中的行号;
所述根据所记录的匹配结果信息输出检测结果信息包括:
根据违反的编码规范标识找出对应编码规范的描述信息,包括:编码规范的类型信息、名称和描述信息;将找出的对应编码规范的描述信息作为检测结果信息的一部分;
将源代码文件的名称,违反编码规范的内容在源代码中的行号,以及违反编码规范的内容的代码片段作为检测结果信息的一部分;
根据违反的编码规范标识找出对应编码规范,将针对违反该对应编码规范的修复建议作为检测结果信息的一部分。
根据本发明的另一个方面,提供了一种Java源代码的合规性检测装置,该装置包括:
编码规范库构建单元,适于构建Java源代码的编码规范库;
合规性检测规则生成单元,适于根据所述编码规范库中的编码规范,生成合规性检测规则集合;
合规性检测模型构建单元,适于解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型;所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I。
匹配单元,适于将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息;
输出单元,适于根据所记录的匹配结果信息输出检测结果信息。
可选地,所述合规性检测模型构建单元,适于构建如下的Java源代码的合规性检测模型:
类集合C中的每个类包括:类的类型、类的名称、类的名称对应的行号以及类所在源代码文件的名称;
方法集合M中的每个方法包括:方法的类型、方法的名称、方法的名称对应的行号以及方法所属的类的名称;
变量集合V中的每个变量包括:变量的类型、变量的名称、变量的名称对应的行号;
指令集合I中的每个指令包括:指令的名称、指令相关的参数、调用该指令的指令的名称以及该指令的名称对应的行号。
可选地,所述合规性检测模型构建单元,适于先将待检测的Java源代码的合规性检测模型中的C、M、V和I集合初始化为空,然后遍历该待检测的Java源代码的字符流,解析每个单词的属性信息,判断属性信息的含义,将其添加到相应的C、M、V和I集合中。
可选地,所述编码规范库构建单元构建的编码规范库包括以下六大类:命名规范、设计规范、注释规范、语句规范、类规范和日志规范;
每个大类中又包含多个小类。
可选地,所述合规性检测规则生成单元,适于根据编码规范库中的命名规范、设计规范、注释规范和日志规范中的一种或多种规范的文本模式特征编写相应的正则表达式,形成文本模式匹配规则库;将该文本模式匹配规则库加入到所述合规性检测规则集合中;和/或,适于根据编码规范库中的设计规范、语句规范和类规范中的一种或多种规范提取违反这些规范的情况,形成编码规范黑名单;将该黑名单加入到所述合规性检测规则集合中。
可选地,所述匹配单元适于按照如下步骤完成所述匹配:
步骤S1:判断合规性检测规则集合是否为空,若为空则转入步骤S4,否则转入步骤S2;
步骤S2:从合规性检测规则集合中提取出一个合规性检测规则与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配成功则转入步骤S3,否则转入步骤S1;
步骤S3:记录匹配的结果信息,包括:源代码文件的名称,该匹配的合规性检测规则对应的编码规范的标识,以及该匹配的合规性检测模型中内容在源代码中的行号;返回步骤S1;
步骤S4:输出所记录的结果信息。
可选地,所述编码规范库构建单元构建的所述编码规范库中的每条编码规范包括:
编码规范的唯一标识;
编码规范的类型信息;
编码规范的名称;
编码规范的描述信息,包括违反编码规范的原因、造成的伤害以及对应的错误样本代码;
针对违反编码规范的修复建议。
可选地,所述匹配单元记录的匹配结果信息包括:源代码文件的名称,违反的编码规范的标识,以及违反编码规范的内容在源代码中的行号;
所述输出单元,适于根据违反的编码规范标识找出对应编码规范的描述信息,包括:编码规范的类型信息、名称和描述信息,将找出的对应编码规范的描述信息作为检测结果信息的一部分;适于将源代码文件的名称,违反编码规范的内容在源代码中的行号,以及违反编码规范的内容的代码片段作为检测结果信息的一部分;适于根据违反的编码规范标识找出对应编码规范,将针对违反该对应编码规范的修复建议作为检测结果信息的一部分。
根据本发明的这种构建Java源代码的编码规范库,根据所述编码规范库中的编码规范,生成合规性检测规则集合,解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型,所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I,将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息,根据所记录的匹配结果信息输出检测结果信息的技术方案,可实现Java源代码合规性的自动化检测,快速检测出不符合编码规范的源代码片段,有效提高了软件开发和测试的效率,从源代码层面保障了应用软件的编码质量和安全性问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种Java源代码的合规性检测方法的流程图;
图2示出了根据本发明一个实施例的构建Java源代码合规性检测模型SSDM的流程图;
图3示出了根据本发明一个实施例的将规性检测规则集合与合规性检测模型中的C、M、V和I集合进行匹配的流程图;
图4示出了根据本发明一个实施例的一种Java源代码的合规性检测装置的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对当前Java语言编码规范的自动化检测工具很少的问题,本发明提出的一种Java源代码合规性检测方法及装置,可实现Java源代码合规性的自动化检测,快速检测出不符合编码规范的源代码片段,有效提高软件开发和测试的效率,从源代码层面保障应用软件的编码质量和安全性问题。
图1示出了根据本发明一个实施例的一种Java源代码的合规性检测方法的流程图。如图1所示,该方法包括:
步骤S110,构建Java源代码的编码规范库。
在本步骤中是预先建立编码规范,并将这些编码规范统一保存到编码规范库中备用。
步骤S120,根据所述编码规范库中的编码规范,生成合规性检测规则集合。
在本步骤中,根据编码规范库中的编码规范的要求,生成适于实际检测时使用的合规性检测规则。
步骤S130,解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型;所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I。
在本步骤中,对待检测应用软件的Java源代码进行分析,解析出其中的类、方法、变量和指令。
步骤S140,将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息。
在本步骤中,如果匹配成功,则表明被检测Java源代码中存在不符合编码规范的片段,将其记录下来。
步骤S150,根据所记录的匹配结果信息输出检测结果信息。
本步骤中,将所记录的结果进行输出,以便开发和测试人员能够快速地定位Java源代码中存在的问题。
以下对本发明技术方案的具体实现进行进一步的说明:
一、构建Java源代码的编码规范库
在本发明的一个实施例中,所够构建的Java源代码编码规范库包括以下六大类:命名规范、设计规范、注释规范、语句规范、类规范和日志规范。
其中每个大类中又包含多个小类,包括但不限于以下所列的各小类:
1)命名规范主要包括:包命名规范,类命名规范,方法命名规范,变量命名规范;
2)设计规范主要包括:复杂度控制规范,类设计规范,方法设计规范,变量设计规范;
3)注释规范主要包括:变更履历注释规范,类头注释规范,成员注释规范,方法注释规范,代码修改注释规范;
4)语句规范主要包括:控制语句规范,命令语句规范,声明语句规范;
5)类规范主要包括:对象整体规范,修饰符规范,字符串规范,数值规范,集合规范,流规范,例外规范,线程规范;
6)日志规范主要包括:日志信息分级规范,日志输出规范。
在本发明的一个实施例中,Java源代码编码规范库中的每条编码规范包括:编码规范的唯一标识;编码规范的类型信息;编码规范的名称;编码规范的描述信息,包括违反编码规范的原因、造成的伤害以及对应的错误样本代码;针对违反编码规范的修复建议。
例如,将Java源代码编码规范库视为一个Java源代码编码规范集合(Specification Rule Set)定义为SRS={r1,r2,…,rn}。
SRS包含的编码规范r表示为一个元组{ID,type,name,description,advice},其中:
ID是编码规范的唯一标识,具有唯一性,在本实施例中使用“R+四位数字”的字符串进行表示;
type是编码规范的类型信息,定义为一个元组{main_type,sub_type},其中:main_type是编码规范的一级类型,如命名规范,设计规范,注释规范,语句规范,类规范,日志规范;sub_type是编码规范的二级类型,如“简洁性问题”,“合理性问题”,“安全性问题”,“质量相关问题”等;
name是编码规范的名称,如“类命名歧义”,“注释中的密码”,“不恰当的日志”,“禁止使用System.out.print(ln)输出”等;
description是编码规范的详细描述信息,即违反编码规范的原因,造成的危害以及对应的错误代码样本;
advice是针对违反编码规范情况的修复建议,开发人员可根据修复建议对源代码进行修复。
例如,一条编码规范r表示如下:
r={“R0001”,{日志规范,安全性问题},“禁止使用System.out.print(ln)输出”,“使用System.out.print(ln)输出日志信息,容易为攻击者制定攻击计划提供方便;为了控制系统中的日志输出,原则上禁止使用System.out.print(ln)输出”,“调试阶段的System.out.print(ln)输出在发布时应该注释掉或彻底删除”},其中:
编码规范r的ID为“R0001”;
编码规范r的一级类型为“日志规范”,二级类型为“安全性问题”;
编码规范r的名称为“禁止使用System.out.print(ln)输出”;
编码规范r的详细描述为“使用System.out.print(ln)输出日志信息,容易为攻击者制定攻击计划提供方便;为了控制系统中的日志输出,原则上禁止使用System.out.print(ln)输出”;
编码规范r的修复建议为“调试阶段的System.out.print(ln)输出在发布时应该注释掉或彻底删除”;
在本实施例中,根据上述Java源代码编码规范集合SRS的定义,构建Java源代码编码规范库。
二、根据编码规范库中的编码规范,生成合规性检测规则集合
根据编码规范库中的编码规范的要求,生成适于实际检测时使用的合规性检测规则。
在本发明的一个实施例中,根据编码规范库中的命名规范、设计规范、注释规范和日志规范中的一种或多种规范的文本模式特征编写相应的正则表达式,形成文本模式匹配规则库;将该文本模式匹配规则库加入到所述合规性检测规则集合中。
以命名规范--类命名规范为例:规定类名的第一个字母必须大写,例如:
class Sample//符合规范
class sample//不符合规范
针对该种类型的命名规范可使用如下正则表达式"^[a-z]{1,}$"进行匹配,上述类名sample(任何首字母为小写字母的类名)可以通过使用该正则表达式匹配成功。
在本发明的另一个实施例中,根据编码规范库中的设计规范、语句规范和类规范中的一种或多种规范提取违反这些规范的情况,形成编码规范黑名单;将该黑名单加入到所述合规性检测规则集合中。
以类规范--线程规范为例:规定处理多个线程之间的同步问题,使用notify()方法唤醒等待执行的线程是不安全的,若处理不当可能会产生死锁问题。因此,在处理多线程同步问题时,不建议使用notify()方法。因此可以提取notify()方法作为一个黑名单项,用于匹配违反上述规范的情况。该规范的修复方法是使用notifyAll()方法。
此外,Java中过时的函数或存在安全隐患的函数,都可以将该函数加入黑名单。
三、解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型
在本发明的一个实施例中,扫描并编译Java源代码,构建Java源代码合规性检测模型(Sourcecode Specification Detection Model)SSDM={C,M,V,I,SRS},其中:
C是类集合,C中的每个类包括:类的类型、类的名称、类的名称对应的行号以及类所在源代码文件的名称;
例如,c=<c_type,c_name,c_line,c_file>∈C是集合C的一个元素:其中c_type是类的类型,c_name是类的名称,c_line是类名c_name对应的行号,c_file是类所在的源代码文件的名称;
M是方法集合,M中的每个方法包括:方法的类型、方法的名称、方法的名称对应的行号以及方法所属的类的名称;
例如,m=<m_type,m_name,m_line,c_name>∈M是集合M的一个元素,其中m_type是方法的类型,m_name是方法的名称,m_line是方法名m_name对应的的行号,c_name是名为m_name的方法所属的类的名称;
V是变量集合,V中的每个变量包括:变量的类型、变量的名称、变量的名称对应的行号;
例如,v=<v_type,v_name,v_line>∈V是集合V的一个元素,其中v_type是变量的类型,v_name是变量的名称,v_line是变量名v_name对应的行号;
I是指令集合,I中的每个指令包括:指令的名称、指令相关的参数、调用该指令的指令的名称以及该指令的名称对应的行号;
例如,ins=<i_name,i_para,i_caller,i_line>∈I是集合I的一个元素,其中i_name是指令的名称,i_para是指令相关的参数,i_caller是调用该指令的指令名称,i_line是指令名i_name对应的行号。
图2示出了根据本发明一个实施例的构建Java源代码合规性检测模型SSDM的流程图。如图2所示,包括:
步骤S210,初始化该待检测的Java源代码的合规性检测模型SSDM,具体将其中的C、M、V和I集合初始化为空;
步骤S210,遍历该待检测的Java源代码的字符流;
步骤S230,解析所遍历的每个单词的属性信息,判断属性信息的含义,将其添加到相应的C、M、V和I集合中;
步骤S240,判断Java源代码文件是否已遍历完,是则构建SSDM结束,否则转入步骤S220。
对于每个待检测的应用软件,通过图2所示的流程构建其Java源代码的合规性检测模型。
四、将合规性检测规则集合中的各个规则一一与合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息
该匹配算法的输入是规性检测规则集合以及待检测Java源代码的合规性检测模型,输出是匹配的结果。
图3示出了根据本发明一个实施例的将规性检测规则集合与合规性检测模型中的C、M、V和I集合进行匹配的流程图。如图3所示,包括:
步骤S310:判断合规性检测规则集合是否为空,若为空则转入步骤S340,否则转入步骤S320。
步骤S320:从合规性检测规则集合中提取出一个合规性检测规则与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配成功则转入步骤S330,否则转入步骤S310。
本步骤中每提取一个合规性检测规则,将提取的规则从原合规性检测规则集合中删除。合规性检测规则集合可以是前述的文本模式匹配规则库,也可以是前述的黑名单,也可以同时包括文本模式匹配规则库和黑名单。因此本步骤中提取的一个合规性检测规则可以是一条文本模式匹配规则,也可以是一个黑名单项。
步骤S330:记录匹配的结果信息,包括:源代码文件的名称,该匹配的合规性检测规则对应的编码规范的标识,以及该匹配的合规性检测模型中内容(即违反规范的内容)在源代码中的行号;返回步骤S310。
本步骤中,一条合规性检测规则与C、M、V或I集合中的一项匹配,则根据该匹配的合规性检测规则获取对应的编码规范的标识(例如该规则是根据R0023编码规范生成的,则获取的是R0023),根据C、M、V或I集合中的匹配项获知源代码文件的名称和违反规范的内容在源代码中的行号。
步骤S340:输出所记录的结果信息。
本步骤中整合在S330中所记录的匹配结果信息,并输出。在本发明的一个实施例中,整合步骤S330记录的多个检测结果信息,生成统一的xml结果文件,其中xml节点元素的结构定义为:
Figure BDA0000398138390000131
上述xml节点元素唯一对应SRS包含的编码规范,其中:
<specification></specification>标签表示一个编码规范的信息;
<id>specification_id</id>标签表示编码规范的唯一标识符ID,specification_id对应步骤S4输出结果信息中的编码规范ID,即SRS定义的编码规范ID,根据specification_id可以唯一定位SRS中的编码规范;
<sourcefile>sourcefile_name</sourcefile>标签表示违反编号为specification_id的编码规范所在的源代码文件名称;
<sourceline>line_no</sourceline>标签表示表示违反编号为specification_id的编码规范所在的源代码行号。
五、根据所记录的匹配结果信息输出检测结果信息
上述记录的匹配结果信息包括:源代码文件的名称,违反的编码规范的标识,以及违反编码规范的内容在源代码中的行号。
则在本发明的一个实施例中,根据所记录的匹配结果信息输出检测结果信息包括:
1)根据违反的编码规范标识找出对应编码规范的描述信息,包括:编码规范的类型信息、名称和描述信息;将找出的对应编码规范的描述信息作为检测结果信息的一部分;
2)将源代码文件的名称,违反编码规范的内容在源代码中的行号,以及违反编码规范的内容的代码片段作为检测结果信息的一部分;
3)根据违反的编码规范标识找出对应编码规范,将针对违反该对应编码规范的修复建议作为检测结果信息的一部分。
具体地判断xml结果文件是否为空,若xml结果文件中的<specification></specification>为空,则未检测到违反编码规范的情况,报告检测结果为空;否则,根据<id></id>标签的specification_id查找SRS中对应的编码规范的详细信息,输出检测结果中包含的违反编码规范的详细信息,包括以下内容:
(1)编码规范基本信息,包括specification_id对应的编码规范的名称、类型信息、编码规范的详细描述信息;
(2)源代码详细信息,包括违反编码规范的源代码文件名称、源代码行号及违反编码规范的源代码片段;
(3)修复建议信息,包括针对编码规范的修复建议及修复样本信息。
根据上述实施例给出的检测方法能够快速地定位Java源代码中所存在的问题,节省了时间,提高了效率。
图4示出了根据本发明一个实施例的一种Java源代码的合规性检测装置的结构图。如图4所示,该装置包括:
编码规范库构建单元401,适于构建Java源代码的编码规范库;
合规性检测规则生成单元402,适于根据所述编码规范库中的编码规范,生成合规性检测规则集合;
合规性检测模型构建单元403,适于解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型;所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I。
匹配单元404,适于将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息;
输出单元405,适于根据所记录的匹配结果信息输出检测结果信息。
在本发明的一个实施例中,合规性检测模型构建单元403,适于构建如下的Java源代码的合规性检测模型:
类集合C中的每个类包括:类的类型、类的名称、类的名称对应的行号以及类所在源代码文件的名称;
方法集合M中的每个方法包括:方法的类型、方法的名称、方法的名称对应的行号以及方法所属的类的名称;
变量集合V中的每个变量包括:变量的类型、变量的名称、变量的名称对应的行号;
指令集合I中的每个指令包括:指令的名称、指令相关的参数、调用该指令的指令的名称以及该指令的名称对应的行号。
在本发明的一个实施例中,合规性检测模型构建单元403,适于先将待检测的Java源代码的合规性检测模型中的C、M、V和I集合初始化为空,然后遍历该待检测的Java源代码的字符流,解析每个单词的属性信息,判断属性信息的含义,将其添加到相应的C、M、V和I集合中。
在本发明的一个实施例中,编码规范库构建单元401构建的编码规范库包括以下六大类:命名规范、设计规范、注释规范、语句规范、类规范和日志规范;
每个大类中又包含多个小类。
在本发明的一个实施例中,合规性检测规则生成单元402,适于根据编码规范库中的命名规范、设计规范、注释规范和日志规范中的一种或多种规范的文本模式特征编写相应的正则表达式,形成文本模式匹配规则库;将该文本模式匹配规则库加入到所述合规性检测规则集合中;和/或,适于根据编码规范库中的设计规范、语句规范和类规范中的一种或多种规范提取违反这些规范的情况,形成编码规范黑名单;将该黑名单加入到所述合规性检测规则集合中。
在本发明的一个实施例中,所述匹配单元404适于按照如下步骤完成所述匹配:
步骤S1:判断合规性检测规则集合是否为空,若为空则转入步骤S4,否则转入步骤S2;
步骤S2:从合规性检测规则集合中提取出一个合规性检测规则与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配成功则转入步骤S3,否则转入步骤S1;
步骤S3:记录匹配的结果信息,包括:源代码文件的名称,该匹配的合规性检测规则对应的编码规范的标识,以及该匹配的合规性检测模型中内容在源代码中的行号;返回步骤S1;
步骤S4:输出所记录的结果信息。
在本发明的一个实施例中,所述编码规范库构建单元401构建的所述编码规范库中的每条编码规范包括:
编码规范的唯一标识;
编码规范的类型信息;
编码规范的名称;
编码规范的描述信息,包括违反编码规范的原因、造成的伤害以及对应的错误样本代码;
针对违反编码规范的修复建议。
在本发明的一个实施例中,所述匹配单元404记录的匹配结果信息包括:源代码文件的名称,违反的编码规范的标识,以及违反编码规范的内容在源代码中的行号;
所述输出单元405,适于根据违反的编码规范标识找出对应编码规范的描述信息,包括:编码规范的类型信息、名称和描述信息,将找出的对应编码规范的描述信息作为检测结果信息的一部分;适于将源代码文件的名称,违反编码规范的内容在源代码中的行号,以及违反编码规范的内容的代码片段作为检测结果信息的一部分;适于根据违反的编码规范标识找出对应编码规范,将针对违反该对应编码规范的修复建议作为检测结果信息的一部分。
综上所述,本发明的这种构建Java源代码的编码规范库,根据所述编码规范库中的编码规范,生成合规性检测规则集合,解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型,所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I,将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息,根据所记录的匹配结果信息输出检测结果信息的技术方案,可实现Java源代码合规性的自动化检测,快速检测出不符合编码规范的源代码片段,有效提高了软件开发和测试的效率,从源代码层面保障了应用软件的编码质量和安全性问题。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的Java源代码的合规性检测装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种Java源代码的合规性检测方法,包括:构建Java源代码的编码规范库;根据所述编码规范库中的编码规范,生成合规性检测规则集合;解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型;所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I;将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息;根据所记录的匹配结果信息输出检测结果信息。A2、如A1所述的方法,其中:所述类集合C中的每个类包括:类的类型、类的名称、类的名称对应的行号以及类所在源代码文件的名称;所述方法集合M中的每个方法包括:方法的类型、方法的名称、方法的名称对应的行号以及方法所属的类的名称;所述变量集合V中的每个变量包括:变量的类型、变量的名称、变量的名称对应的行号;所述指令集合I中的每个指令包括:指令的名称、指令相关的参数、调用该指令的指令的名称以及该指令的名称对应的行号。A3、如A1所述的方法,其中,所述解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型包括:将该待检测的Java源代码的合规性检测模型中的C、M、V和I集合初始化为空;遍历该待检测的Java源代码的字符流,解析每个单词的属性信息,判断属性信息的含义,将其添加到相应的C、M、V和I集合中。A4、如A1所述的方法,其中,所述编码规范库包括以下六大类:命名规范、设计规范、注释规范、语句规范、类规范和日志规范;每个大类中又包含多个小类。A5、如A4所述的方法,其中,所述根据所述编码规范库中的编码规范,生成合规性检测规则集合包括:根据编码规范库中的命名规范、设计规范、注释规范和日志规范中的一种或多种规范的文本模式特征编写相应的正则表达式,形成文本模式匹配规则库;将该文本模式匹配规则库加入到所述合规性检测规则集合中;和/或,根据编码规范库中的设计规范、语句规范和类规范中的一种或多种规范提取违反这些规范的情况,形成编码规范黑名单;将该黑名单加入到所述合规性检测规则集合中。A6、如A2所述的方法,其中,所述将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息包括:步骤S1:判断合规性检测规则集合是否为空,若为空则转入步骤S4,否则转入步骤S2;步骤S2:从合规性检测规则集合中提取出一个合规性检测规则与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配成功则转入步骤S3,否则转入步骤S1;步骤S3:记录匹配的结果信息,包括:源代码文件的名称,该匹配的合规性检测规则对应的编码规范的标识,以及该匹配的合规性检测模型中内容在源代码中的行号;返回步骤S1;步骤S4:输出所记录的结果信息。A7、如A1所述的方法,其中,所述编码规范库中的每条编码规范包括:编码规范的唯一标识;编码规范的类型信息;编码规范的名称;编码规范的描述信息,包括违反编码规范的原因、造成的伤害以及对应的错误样本代码;针对违反编码规范的修复建议。A8、如A7所述的方法,其中,所述匹配结果信息包括:源代码文件的名称,违反的编码规范的标识,以及违反编码规范的内容在源代码中的行号;所述根据所记录的匹配结果信息输出检测结果信息包括:根据违反的编码规范标识找出对应编码规范的描述信息,包括:编码规范的类型信息、名称和描述信息;将找出的对应编码规范的描述信息作为检测结果信息的一部分;将源代码文件的名称,违反编码规范的内容在源代码中的行号,以及违反编码规范的内容的代码片段作为检测结果信息的一部分;根据违反的编码规范标识找出对应编码规范,将针对违反该对应编码规范的修复建议作为检测结果信息的一部分。
本发明还公开了B9、一种Java源代码的合规性检测装置,包括:编码规范库构建单元,适于构建Java源代码的编码规范库;合规性检测规则生成单元,适于根据所述编码规范库中的编码规范,生成合规性检测规则集合;合规性检测模型构建单元,适于解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型;所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I;匹配单元,适于将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息;输出单元,适于根据所记录的匹配结果信息输出检测结果信息。B10、如B9所述的装置,所述合规性检测模型构建单元,适于构建如下的Java源代码的合规性检测模型:类集合C中的每个类包括:类的类型、类的名称、类的名称对应的行号以及类所在源代码文件的名称;方法集合M中的每个方法包括:方法的类型、方法的名称、方法的名称对应的行号以及方法所属的类的名称;变量集合V中的每个变量包括:变量的类型、变量的名称、变量的名称对应的行号;指令集合I中的每个指令包括:指令的名称、指令相关的参数、调用该指令的指令的名称以及该指令的名称对应的行号。B11、如B9所述的装置,所述合规性检测模型构建单元,适于先将待检测的Java源代码的合规性检测模型中的C、M、V和I集合初始化为空,然后遍历该待检测的Java源代码的字符流,解析每个单词的属性信息,判断属性信息的含义,将其添加到相应的C、M、V和I集合中。B12、如B9所述的装置,其中,所述编码规范库构建单元构建的编码规范库包括以下六大类:命名规范、设计规范、注释规范、语句规范、类规范和日志规范;每个大类中又包含多个小类。B13、如B12所述的装置,所述合规性检测规则生成单元,适于根据编码规范库中的命名规范、设计规范、注释规范和日志规范中的一种或多种规范的文本模式特征编写相应的正则表达式,形成文本模式匹配规则库;将该文本模式匹配规则库加入到所述合规性检测规则集合中;和/或,适于根据编码规范库中的设计规范、语句规范和类规范中的一种或多种规范提取违反这些规范的情况,形成编码规范黑名单;将该黑名单加入到所述合规性检测规则集合中。B14、如B10所述的装置,其中,所述匹配单元适于按照如下步骤完成所述匹配:步骤S1,判断合规性检测规则集合是否为空,若为空则转入步骤S4,否则转入步骤S2;步骤S2,合规性检测规则集合中提取出一个合规性检测规则与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配成功则转入步骤S3,否则转入步骤S1;步骤S3,记录匹配的结果信息,包括:源代码文件的名称,该匹配的合规性检测规则对应的编码规范的标识,以及该匹配的合规性检测模型中内容在源代码中的行号,返回步骤S1;步骤S4:输出所记录的结果信息。B15、如B9所述的装置,其中,所述编码规范库构建单元构建的所述编码规范库中的每条编码规范包括:编码规范的唯一标识;编码规范的类型信息;编码规范的名称;编码规范的描述信息,包括违反编码规范的原因、造成的伤害以及对应的错误样本代码;针对违反编码规范的修复建议。B16、如B15所述的装置,所述匹配单元记录的匹配结果信息包括:源代码文件的名称,违反的编码规范的标识,以及违反编码规范的内容在源代码中的行号;所述输出单元,适于根据违反的编码规范标识找出对应编码规范的描述信息,包括:编码规范的类型信息、名称和描述信息,将找出的对应编码规范的描述信息作为检测结果信息的一部分;适于将源代码文件的名称,违反编码规范的内容在源代码中的行号,以及违反编码规范的内容的代码片段作为检测结果信息的一部分;适于根据违反的编码规范标识找出对应编码规范,将针对违反该对应编码规范的修复建议作为检测结果信息的一部分。

Claims (10)

1.一种Java源代码的合规性检测方法,其中,该方法包括:
构建Java源代码的编码规范库;
根据所述编码规范库中的编码规范,生成合规性检测规则集合;
解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型;所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I;
将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息;
根据所记录的匹配结果信息输出检测结果信息。
2.如权利要求1所述的方法,其中,
所述类集合C中的每个类包括:类的类型、类的名称、类的名称对应的行号以及类所在源代码文件的名称;
所述方法集合M中的每个方法包括:方法的类型、方法的名称、方法的名称对应的行号以及方法所属的类的名称;
所述变量集合V中的每个变量包括:变量的类型、变量的名称、变量的名称对应的行号;
所述指令集合I中的每个指令包括:指令的名称、指令相关的参数、调用该指令的指令的名称以及该指令的名称对应的行号。
3.如权利要求1所述的方法,其中,所述解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型包括:
将该待检测的Java源代码的合规性检测模型中的C、M、V和I集合初始化为空;
遍历该待检测的Java源代码的字符流,解析每个单词的属性信息,判断属性信息的含义,将其添加到相应的C、M、V和I集合中。
4.如权利要求1所述的方法,其中,
所述编码规范库包括以下六大类:命名规范、设计规范、注释规范、语句规范、类规范和日志规范;
每个大类中又包含多个小类。
5.如权利要求4所述的方法,其中,所述根据所述编码规范库中的编码规范,生成合规性检测规则集合包括:
根据编码规范库中的命名规范、设计规范、注释规范和日志规范中的一种或多种规范的文本模式特征编写相应的正则表达式,形成文本模式匹配规则库;将该文本模式匹配规则库加入到所述合规性检测规则集合中;
和/或,
根据编码规范库中的设计规范、语句规范和类规范中的一种或多种规范提取违反这些规范的情况,形成编码规范黑名单;将该黑名单加入到所述合规性检测规则集合中。
6.如权利要求2所述的方法,其中,所述将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息包括:
步骤S1:判断合规性检测规则集合是否为空,若为空则转入步骤S4,否则转入步骤S2;
步骤S2:从合规性检测规则集合中提取出一个合规性检测规则与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配成功则转入步骤S3,否则转入步骤S1;
步骤S3:记录匹配的结果信息,包括:源代码文件的名称,该匹配的合规性检测规则对应的编码规范的标识,以及该匹配的合规性检测模型中内容在源代码中的行号;返回步骤S1;
步骤S4:输出所记录的结果信息。
7.如权利要求1所述的方法,其中,所述编码规范库中的每条编码规范包括:
编码规范的唯一标识;
编码规范的类型信息;
编码规范的名称;
编码规范的描述信息,包括违反编码规范的原因、造成的伤害以及对应的错误样本代码;
针对违反编码规范的修复建议。
8.如权利要求7所述的方法,其中,所述匹配结果信息包括:源代码文件的名称,违反的编码规范的标识,以及违反编码规范的内容在源代码中的行号;
所述根据所记录的匹配结果信息输出检测结果信息包括:
根据违反的编码规范标识找出对应编码规范的描述信息,包括:编码规范的类型信息、名称和描述信息;将找出的对应编码规范的描述信息作为检测结果信息的一部分;
将源代码文件的名称,违反编码规范的内容在源代码中的行号,以及违反编码规范的内容的代码片段作为检测结果信息的一部分;
根据违反的编码规范标识找出对应编码规范,将针对违反该对应编码规范的修复建议作为检测结果信息的一部分。
9.一种Java源代码的合规性检测装置,其中,该装置包括:
编码规范库构建单元,适于构建Java源代码的编码规范库;
合规性检测规则生成单元,适于根据所述编码规范库中的编码规范,生成合规性检测规则集合;
合规性检测模型构建单元,适于解析待检测的Java源代码,构建该待检测的Java源代码的合规性检测模型;所述Java源代码的合规性检测模型包括:类集合C、方法集合M、变量集合V和指令集合I;
匹配单元,适于将所述合规性检测规则集合中的各个规则一一与所述合规性检测模型中的C、M、V和I集合进行匹配,如果匹配则记录匹配结果信息;
输出单元,适于根据所记录的匹配结果信息输出检测结果信息。
10.如权利要求9所述的装置,其中,所述合规性检测模型构建单元,适于构建如下的Java源代码的合规性检测模型:
类集合C中的每个类包括:类的类型、类的名称、类的名称对应的行号以及类所在源代码文件的名称;
方法集合M中的每个方法包括:方法的类型、方法的名称、方法的名称对应的行号以及方法所属的类的名称;
变量集合V中的每个变量包括:变量的类型、变量的名称、变量的名称对应的行号;
指令集合I中的每个指令包括:指令的名称、指令相关的参数、调用该指令的指令的名称以及该指令的名称对应的行号。
CN201310492007.5A 2013-10-18 2013-10-18 一种Java源代码的合规性检测方法和装置 Expired - Fee Related CN103678118B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310492007.5A CN103678118B (zh) 2013-10-18 2013-10-18 一种Java源代码的合规性检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310492007.5A CN103678118B (zh) 2013-10-18 2013-10-18 一种Java源代码的合规性检测方法和装置

Publications (2)

Publication Number Publication Date
CN103678118A true CN103678118A (zh) 2014-03-26
CN103678118B CN103678118B (zh) 2016-09-28

Family

ID=50315753

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310492007.5A Expired - Fee Related CN103678118B (zh) 2013-10-18 2013-10-18 一种Java源代码的合规性检测方法和装置

Country Status (1)

Country Link
CN (1) CN103678118B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104133768A (zh) * 2014-07-28 2014-11-05 中国银行股份有限公司 一种程序代码复查方法和装置
CN104199653A (zh) * 2014-08-26 2014-12-10 上海天脉聚源文化传媒有限公司 一种Java集成开发环境的实现方法及装置
CN104268353A (zh) * 2014-10-10 2015-01-07 中国农业银行股份有限公司 一种规范检测方法及装置
CN106095446A (zh) * 2016-06-14 2016-11-09 深圳市彬讯科技有限公司 软件源代码在线检测系统及其检测方法
CN106095681A (zh) * 2016-06-14 2016-11-09 深圳市彬讯科技有限公司 一种SVN集成JSHint代码检测方法及其系统
CN106445626A (zh) * 2016-09-30 2017-02-22 北京奇虎科技有限公司 数据分析方法及装置
CN106598825A (zh) * 2016-12-07 2017-04-26 泰康保险集团股份有限公司 电子设备、规范日志代码输出方法及装置
CN106713254A (zh) * 2015-11-18 2017-05-24 中国科学院声学研究所 一种匹配正则集的生成及深度包检测方法
CN107341209A (zh) * 2017-06-26 2017-11-10 清华大学 基于语义检索的bim模型规范检测装置和检测方法
CN107632831A (zh) * 2017-09-22 2018-01-26 厦门集微科技有限公司 快速规范前端代码的方法及装置
CN107678957A (zh) * 2017-09-25 2018-02-09 中国银行股份有限公司 一种网银代码自动化检查方法及装置
CN108446230A (zh) * 2018-03-19 2018-08-24 南京邮电大学 一种面向WebDriver的Java测试代码质量评判方法
CN108877951A (zh) * 2018-05-24 2018-11-23 中山大学肿瘤防治中心(中山大学附属肿瘤医院、中山大学肿瘤研究所) 一种放疗结构命名标准化方法、装置、设备及介质
CN110309050A (zh) * 2019-05-22 2019-10-08 深圳壹账通智能科技有限公司 代码规范性的检测方法、装置、服务器及存储介质
CN111026631A (zh) * 2018-10-09 2020-04-17 顺丰科技有限公司 接口自动化检测方法、装置和服务器
CN112100620A (zh) * 2020-09-04 2020-12-18 百度在线网络技术(北京)有限公司 代码安全检测方法、装置、设备和可读存储介质
CN112231337A (zh) * 2020-10-20 2021-01-15 中国建设银行股份有限公司 Sas语句的检测装置及方法、电子设备及存储介质
US11023210B2 (en) 2019-03-20 2021-06-01 International Business Machines Corporation Generating program analysis rules based on coding standard documents
CN112947985A (zh) * 2021-01-29 2021-06-11 北京航空航天大学 一种智能检测及修复代码的方法与系统
CN113810237A (zh) * 2021-11-16 2021-12-17 北京安博通科技股份有限公司 一种网络设备配置合规性的检查方法
CN115061689A (zh) * 2022-06-15 2022-09-16 五矿国际信托有限公司 一种存储过程转java代码的框架设计方法及系统
US11463478B2 (en) 2019-10-29 2022-10-04 International Business Machines Corporation Remediation strategy optimization for development, security and operations (DevSecOps)
CN116305071A (zh) * 2023-03-18 2023-06-23 广州锦拓信息科技有限公司 一种基于人工智能的账号密码安全系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100192128A1 (en) * 2009-01-27 2010-07-29 Honeywell International Inc. System and methods of using test points and signal overrides in requirements-based test generation
CN101267357B (zh) * 2007-03-13 2010-11-17 北京启明星辰信息技术股份有限公司 一种sql注入攻击检测方法及系统
CN101950269A (zh) * 2010-08-30 2011-01-19 清华大学 针对软件构件的自动化测试方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101267357B (zh) * 2007-03-13 2010-11-17 北京启明星辰信息技术股份有限公司 一种sql注入攻击检测方法及系统
US20100192128A1 (en) * 2009-01-27 2010-07-29 Honeywell International Inc. System and methods of using test points and signal overrides in requirements-based test generation
CN101950269A (zh) * 2010-08-30 2011-01-19 清华大学 针对软件构件的自动化测试方法

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104133768A (zh) * 2014-07-28 2014-11-05 中国银行股份有限公司 一种程序代码复查方法和装置
CN104199653A (zh) * 2014-08-26 2014-12-10 上海天脉聚源文化传媒有限公司 一种Java集成开发环境的实现方法及装置
CN104199653B (zh) * 2014-08-26 2017-12-15 上海天脉聚源文化传媒有限公司 一种Java集成开发环境的实现方法及装置
CN104268353A (zh) * 2014-10-10 2015-01-07 中国农业银行股份有限公司 一种规范检测方法及装置
CN104268353B (zh) * 2014-10-10 2017-05-31 中国农业银行股份有限公司 一种规范检测方法及装置
CN106713254A (zh) * 2015-11-18 2017-05-24 中国科学院声学研究所 一种匹配正则集的生成及深度包检测方法
CN106713254B (zh) * 2015-11-18 2019-08-06 中国科学院声学研究所 一种匹配正则集的生成及深度包检测方法
CN106095446A (zh) * 2016-06-14 2016-11-09 深圳市彬讯科技有限公司 软件源代码在线检测系统及其检测方法
CN106095681A (zh) * 2016-06-14 2016-11-09 深圳市彬讯科技有限公司 一种SVN集成JSHint代码检测方法及其系统
CN106445626A (zh) * 2016-09-30 2017-02-22 北京奇虎科技有限公司 数据分析方法及装置
CN106445626B (zh) * 2016-09-30 2020-03-06 北京奇虎科技有限公司 数据分析方法及装置
CN106598825A (zh) * 2016-12-07 2017-04-26 泰康保险集团股份有限公司 电子设备、规范日志代码输出方法及装置
CN106598825B (zh) * 2016-12-07 2019-07-05 泰康保险集团股份有限公司 电子设备、规范日志代码输出方法及装置
CN107341209A (zh) * 2017-06-26 2017-11-10 清华大学 基于语义检索的bim模型规范检测装置和检测方法
CN107341209B (zh) * 2017-06-26 2020-05-12 清华大学 基于语义检索的bim模型规范检测装置和检测方法
CN107632831A (zh) * 2017-09-22 2018-01-26 厦门集微科技有限公司 快速规范前端代码的方法及装置
CN107678957A (zh) * 2017-09-25 2018-02-09 中国银行股份有限公司 一种网银代码自动化检查方法及装置
CN108446230A (zh) * 2018-03-19 2018-08-24 南京邮电大学 一种面向WebDriver的Java测试代码质量评判方法
CN108446230B (zh) * 2018-03-19 2021-07-20 南京邮电大学 一种面向WebDriver的Java测试代码质量评判方法
CN108877951A (zh) * 2018-05-24 2018-11-23 中山大学肿瘤防治中心(中山大学附属肿瘤医院、中山大学肿瘤研究所) 一种放疗结构命名标准化方法、装置、设备及介质
CN108877951B (zh) * 2018-05-24 2022-03-25 中山大学肿瘤防治中心(中山大学附属肿瘤医院、中山大学肿瘤研究所) 一种放疗结构命名标准化方法、装置、设备及介质
CN111026631A (zh) * 2018-10-09 2020-04-17 顺丰科技有限公司 接口自动化检测方法、装置和服务器
CN111026631B (zh) * 2018-10-09 2024-03-26 顺丰科技有限公司 接口自动化检测方法、装置和服务器
US11023210B2 (en) 2019-03-20 2021-06-01 International Business Machines Corporation Generating program analysis rules based on coding standard documents
CN110309050A (zh) * 2019-05-22 2019-10-08 深圳壹账通智能科技有限公司 代码规范性的检测方法、装置、服务器及存储介质
US11463478B2 (en) 2019-10-29 2022-10-04 International Business Machines Corporation Remediation strategy optimization for development, security and operations (DevSecOps)
CN112100620A (zh) * 2020-09-04 2020-12-18 百度在线网络技术(北京)有限公司 代码安全检测方法、装置、设备和可读存储介质
CN112100620B (zh) * 2020-09-04 2024-02-06 百度在线网络技术(北京)有限公司 代码安全检测方法、装置、设备和可读存储介质
CN112231337A (zh) * 2020-10-20 2021-01-15 中国建设银行股份有限公司 Sas语句的检测装置及方法、电子设备及存储介质
CN112947985A (zh) * 2021-01-29 2021-06-11 北京航空航天大学 一种智能检测及修复代码的方法与系统
CN113810237B (zh) * 2021-11-16 2022-02-15 北京安博通科技股份有限公司 一种网络设备配置合规性的检查方法
CN113810237A (zh) * 2021-11-16 2021-12-17 北京安博通科技股份有限公司 一种网络设备配置合规性的检查方法
CN115061689A (zh) * 2022-06-15 2022-09-16 五矿国际信托有限公司 一种存储过程转java代码的框架设计方法及系统
CN115061689B (zh) * 2022-06-15 2023-06-13 五矿国际信托有限公司 一种存储过程转java代码的框架设计方法及系统
CN116305071A (zh) * 2023-03-18 2023-06-23 广州锦拓信息科技有限公司 一种基于人工智能的账号密码安全系统
CN116305071B (zh) * 2023-03-18 2023-09-26 广州锦拓信息科技有限公司 一种基于人工智能的账号密码安全系统

Also Published As

Publication number Publication date
CN103678118B (zh) 2016-09-28

Similar Documents

Publication Publication Date Title
CN103678118A (zh) 一种Java源代码的合规性检测方法和装置
Schäfer et al. Mining framework usage changes from instantiation code
US8875110B2 (en) Code inspection executing system for performing a code inspection of ABAP source codes
US9684709B2 (en) Building features and indexing for knowledge-based matching
Palomba et al. Anti-pattern detection: Methods, challenges, and open issues
CN103744802A (zh) Sql注入攻击的识别方法及装置
CN103226485A (zh) 代码发布方法、代码发布机和代码发布系统
CN102682090A (zh) 一种基于聚合词树的敏感词匹配处理系统及方法
US9311077B2 (en) Identification of code changes using language syntax and changeset data
CN106407803A (zh) Sql注入漏洞的检测方法及装置
CN103886092A (zh) 一种提供终端故障问题解决方案的方法及装置
CN113031967B (zh) 一种代码转换方法及装置
CN104462985A (zh) bat漏洞的检测方法以及装置
CN102867144A (zh) 一种用于检测和清除计算机病毒的方法和装置
Zait et al. Addressing lexical and semantic ambiguity in natural language requirements
KR101696694B1 (ko) 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치
CN103914379A (zh) 故障自动注入与故障检测的方法及其系统
Zhang et al. Checking enforcement of integrity constraints in database applications based on code patterns
US11500619B1 (en) Indexing and accessing source code snippets contained in documents
US9921857B1 (en) Compiler extension for correcting error messages
Gupta Design pattern mining using greedy algorithm for multi-labelled graphs
Vrandečić et al. A metamodel for annotations of ontology elements in owl dl
CN115840775A (zh) 数据的提取方法、装置、服务器及存储介质
CN111666216B (zh) 一种智能合约分析方法及装置
Tukaram Design and development of software tool for code clone search, detection, and analysis

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: BEIJING QIHU TECHNOLOGY CO., LTD. BEIJING QIHU CET

Free format text: FORMER OWNER: BEIJING QIHU TECHNOLOGY CO., LTD.

Effective date: 20150619

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150619

Address after: 100083 Beijing city Tsinghua Yuan Haidian District sancaitang No. 42 No. 8 cottage 4647

Applicant after: BEIJING QIHU CETENG SCIENCE & TECHNOLOGY Co.,Ltd.

Applicant after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Applicant after: BEIJING QIHU CETENG SECURITY TECHNOLOGY Co.,Ltd.

Address before: 100083 Beijing city Tsinghua Yuan Haidian District sancaitang No. 42 No. 8 cottage 4647

Applicant before: BEIJING QIHU CETENG SCIENCE & TECHNOLOGY Co.,Ltd.

Applicant before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160928