CN111008017B - 一种基于oclint的待提交文件预审方法及相关组件 - Google Patents

一种基于oclint的待提交文件预审方法及相关组件 Download PDF

Info

Publication number
CN111008017B
CN111008017B CN201911214989.5A CN201911214989A CN111008017B CN 111008017 B CN111008017 B CN 111008017B CN 201911214989 A CN201911214989 A CN 201911214989A CN 111008017 B CN111008017 B CN 111008017B
Authority
CN
China
Prior art keywords
file
submitted
oclin
rule
logic
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.)
Active
Application number
CN201911214989.5A
Other languages
English (en)
Other versions
CN111008017A (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.)
Shenzhen Xunlei Network Technology Co Ltd
Original Assignee
Shenzhen Xunlei Network 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 Shenzhen Xunlei Network Technology Co Ltd filed Critical Shenzhen Xunlei Network Technology Co Ltd
Priority to CN201911214989.5A priority Critical patent/CN111008017B/zh
Publication of CN111008017A publication Critical patent/CN111008017A/zh
Application granted granted Critical
Publication of CN111008017B publication Critical patent/CN111008017B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种基于oclint的待提交文件预审方法,区别于现有方案,本申请通过将预定义的规则数据添加至调用oclint源码生成的cpp文件中,cpp文件为oclint中用于指示代码分析逻辑的文件,添加根据预审规则调用派生类生成的逻辑判断数据,可以实现基于oclint的自动规则审核逻辑,在实际进行文件预审时,即可直接调用oclint中配置好的审核逻辑进行逻辑判断,实现快速的自动化检测操作,避免了漏测以及失误触发规则项目带来的风险,提升了待提交文件的预审效率。本申请还同时公开了一种基于oclint的待提交文件预审装置、一种智能终端及可读存储介质,具有上述有益效果。

Description

一种基于oclint的待提交文件预审方法及相关组件
技术领域
本申请涉及电子技术领域,尤其涉及一种基于oclint的待提交文件预审方法、装置、一种智能终端及可读存储介质。
背景技术
出于对苹果终端的应用进行开发设置的需要,开发者需要将开发编码生成的ipa文件(苹果手机iPhone的软件安装实体文件)提交至苹果应用商店(App Store),App Store对提交的ipa文件有很多审核规则,包括设置方式、字段类型等方方面面的审核,多达几百项。若App Store审核判定ipa文件无效,不仅严重延长开发设置的开发时间,增加审核成本,而且影响苹果对提交ipa文件的开发方的评价等级,影响后续ipa文件的正常提交,多次违反规则直接导致开发设置无法上应用市场发布、并存在封号风险会给开发方带来巨大损失。
目前,为了保证ipa文件的高审核通过率,在文件提交前,开发者需要对待提交的ipa文件进行审核,主要包括:testfight(试运行)、codereview(代码审查)以及pretrial(预审)等,开发者可以根据审核需要选择其中的一种或若干种审核方式进行ipa文件提交前的审核。其中,在Pretrial阶段,相关技术的实现方案全部手动进行,完全依赖于研发/测试手动自检查以及代码coding期间开发自我约束规范,而面多大量的代码与规则,手动检查花费大量时间且每版本archive(归档)后都要执行,效率极低;而且手动检查中很容易忽略一些检查点;另外,不同的开发者对于审核规则的规避方式不同,人员更替会带来的潜在违规风险,coding自我约束可能失误触发违反规则项目。
因此,如何克服现有文件预审在实现机制上存在的缺陷,是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种基于oclint的待提交文件预审方法、装置、智能终端及计算机可读存储介质,旨在克服现有文件预审在实现机制上存在的缺陷。
为实现上述目的,本申请在第一方面提供了一种基于oclint的待提交文件预审方法,该方法包括:
下载oclint源码并进行编译,得到oclint执行工具;
调用所述oclint执行工具生成xcodeproj项目;
将所述xcodeproj项目导入至xcode,生成cpp文件;
将预定义的规则数据添加至所述cpp文件,并编译,得到dylib动态库文件;其中,所述规则数据为根据预审规则调用派生类生成的逻辑判断数据;
调用oclint的执行入口,根据所述dylib动态库文件对待提交文件进行逻辑判断,生成预审报告。
可选地,所述基于oclint的待提交文件预审方法,还包括:将所述预审报告发送至sonarqube进行集成展示。
可选地,所述基于oclint的待提交文件预审方法,还包括:
根据所述预审报告筛选出不符合所述规则数据的文件数据,并根据所述文件数据生成警示信息;
根据所述警示信息进行警示提醒。
可选地,根据所述警示信息进行警示提醒,包括:
对所述警示信息设置警示等级;
根据预先配置的各等级对应的提醒方式进行警示提醒。
可选地,根据所述警示信息进行警示提醒,包括:
调用预先接入的邮件***和/或钉钉机器人***进行所述警示信息的输出。
可选地,所述基于oclint的待提交文件预审方法,还包括:
导出所述cpp文件;
利用新版本的规则数据对所述cpp文件进行规则的添加和/或删改,得到修正后的cpp文件;
编译所述修正后的cpp文件,生成修正后的dylib动态库文件,以便根据所述修正后的dylib动态库文件对所述待提交文件进行逻辑判断。
另一方面,本申请还提供了一种基于oclint的待提交文件预审装置,包括:
源码编译单元,用于下载oclint源码并进行编译,得到oclint执行工具;
项目生成单元,用于调用所述oclint执行工具生成xcodeproj项目;
项目导入单元,用于将所述xcodeproj项目导入至xcode,生成cpp文件;
规则添加单元,用于将预定义的规则数据添加至所述cpp文件,并编译,得到dylib动态库文件;其中,所述规则数据为根据预审规则调用派生类生成的逻辑判断数据;
逻辑判断单元,用于调用oclint的执行入口,根据所述dylib动态库文件对待提交文件进行逻辑判断,生成预审报告。
可选地,所述基于oclint的待提交文件预审装置具体为:可调用jenkins的gitlab,所述jenkins上部署有脚本,所述脚本执行时实现所述基于oclint的待提交文件预审方法的步骤。
另一方面,本申请还提供了一种智能终端,包括:存储器、处理器以及总线;
其中,所述存储器用于存储程序;
所述处理器用于执行所述程序时实现所述基于oclint的待提交文件预审方法的步骤。
另一方面,本申请还提供了一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现所述基于oclint的待提交文件预审方法的步骤。
根据本申请提供的技术方案可以明显看出,本申请提供的基于oclint的待提交文件预审方法,通过将预定义的规则数据添加至调用oclint源码生成的cpp文件中,cpp文件为oclint中用于指示代码分析逻辑的文件,添加根据预审规则调用派生类生成的逻辑判断数据,可以实现基于oclint的自动规则审核逻辑,在实际进行文件预审时,即可直接调用oclint中配置好的审核逻辑进行逻辑判断,实现快速的自动化检测操作,避免了漏测以及失误触发规则项目带来的风险,提升了待提交文件的预审效率。
本申请同时还对应的提供了一种与方法对应的装置、智能终端及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种基于oclint的待提交文件预审方法的流程图;
图2为本申请实施例提供的一种oclint进行逻辑判断的逻辑实现示意图;
图3为本申请实施例提供的一种调用关系示意图;
图4为本申请实施例提供的一种预审实现过程示意图;
图5为本申请实施例提供的一种dylib文件示意图;
图6为本申请实施例提供的一种预审报告示意图;
图7为本申请实施例提供的一种基于oclint的待提交文件预审装置的结构示意图;
图8为本申请实施例提供的一种智能终端的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
oclint是一个静态代码分析工具,相对于其他代码分析工具,oclint支持的检查器规则多、分析效率较高,且可集成度高,可以支持复杂的逻辑支持以及代码风格支持,可以给予使用者较大的自由度。为实现规则自定义、保证高集成度以及复杂逻辑的支持,本申请中调用综合能力强的oclint实现待提交文件的预审。
实施例一:
请参见图1,图1为本申请实施例提供的一种基于oclint的待提交文件预审方法的流程图,其主要包括以下步骤:
S110:下载oclint源码进行编译,得到oclint执行工具;
本实施例中对下载oclint源码的途径不做限定,可以参照现有的oclint源码下载方式,比如可以从GitHub相关源码网站获取等。
该步骤中oclint执行工具主要用于生成xcodeproj(苹果开发工具xcode生成的一个项目类别表述,表示项目类型,该项目文件的后缀名)项目,具体调用的oclint执行工具可以包括:Build(构建,是一个过程,是指用单个或多个工具去编译形成新的产物的工程)、llvm(底层虚拟机,是一个模块化和可重复使用的编译器和工具技术的集合)、oclint-json-compilation-database(工具名,表示数据类型转化模块)以及oclint-xcodebuild(工具名,表示关联苹果开发工具的构建模块)等,可参照相关现有技术中的实现方式确定待调用的执行工具,本实施例中对执行工具本身的种类不做限定。
S120:调用oclint执行工具生成xcodeproj项目;
调用oclint执行工具生成xcodeproj项目的具体实现过程可以参照相关现有技术,在此不再赘述。
S130:将xcodeproj项目导入至xcode中,生成cpp(cpp是程序设计语言C++的另一种书写形式,是“C Plus Plus”的简称,也是此类文件的后缀名)文件;
该步骤中生成的cpp文件为空文件,cpp文件为oclint中用于存储指定的代码逻辑分析规则数据的文件,待添加相关规则数据后即可生成可以被直接调用的动态库文件,实现代码分析。
S140:将预定义的规则数据添加至cpp文件,并编译,得到dylib(动态库)文件;
规则数据为根据预审规则调用派生类生成的逻辑判断数据,从RuleBase(程序中定义的类名,表示基本规则)继承(让新的类拥有和已有的类同样的属性或方法,并追加新的属性或方法的行为)规则,通过三个派生类AbstractSourceCodeReaderRule(程序中定义的类名,表示读取源码规则),AbstractASTMatcherRule(程序中定义的类名,表示匹配规则)以及AbstractASTVisitorRule(程序中定义的类名,表示访问规则)进行规则添加,并编译成dylib动态库。
预审规则为App Store的审核规则,目前App Store更新的审核规则共计5大项,26小项,细则117项,则根据当前的审核规则可以对117项细则进行逻辑转换,生成117条逻辑判断数据,逻辑判断数据中具体可以包括关键字识别逻辑以及代码规则逻辑等可以实现代码逻辑判断的数据,具体的转换方式本实施例中不做限定,可以根据实际规则转换需要进行设置。
在生成满足当前审核规则的规则数据后,即可反复调用该数据实现对于待提交的ipa文件的全面规则审核,避免了漏测以及规则误触等情况,提升了审核效果。
规则数据可以为针对不同类型的待提交文件的通用规则数据,也可以根据待提交文件的类型设置对应的规则数据,配置多种类型的规则数据等,若为后者时,则在下述步骤s150中根据dylib动态库文件对待提交文件进行逻辑判断时的具体执行步骤可以为:确定待提交文件的类型信息;确定dylib动态库文件中类型信息对应的逻辑规则;根据确定的逻辑规则对待提交文件进行逻辑判断。其中,类型可以为待提交文件针对的应用类型,也可以为设置类型,具体可以根据实际设置需要进行配置,在此不做限定。
进行规则数据的添加以及编译生成dylib动态库文件的实现过程也可以参照使用oclint的相关技术,具体可以调用oclint工具、xcode(运行在操作***Mac OS X上的集成开发工具)工具、Clang工具(一种C、C++、Objective-C的轻量级编译器)以及llvm工具中的一种或多种。
S150:调用oclint的执行入口,根据dylib动态库文件对待提交文件进行逻辑判断,生成预审报告。
待提交文件具体为待提交的ipa(苹果手机iPhone的软件安装实体文件)文件。在生成dylib动态库文件后,调用oclint进行逻辑判断的后台执行以及实现过程均可参照oclint的相关介绍,图2所示为一种oclint进行逻辑判断的逻辑实现示意图,从以上我们可以看到oclint依赖于抽象语法数(AST)——开源的Clang是oclint获得AST的依赖工具,在analyzer(分析)过程中会调用takeoff(一种装载规则)方法,但是所有rule的基类(含有实体共性的类类型)都是RuleBase,RuleBase下存在一个叫RuleCarrierde的成员,它做的事情就是检查通过AST获得的ASTContext(表示获取到的文本内容本身)是否符合规则,如果不符合输出到violationeSet(程序中定义的方法名,表示对不符合的场景进行逻辑处理)方法上,通过以上过程实现对待提交文件的逻辑判断。上述步骤具体的实现调用关系如图3所示。
预审报告中包含基于当前规则数据对待提交文件中代码逻辑的审核结果,可以根据该预审报告查看待提交文件中不符合预审规则的部分,以便及时对该部分数据即使进行修正直至符合预审规则。
根据本实施例提供的基于oclint的待提交文件预审方法可以明显看出,区别于现有启动方案,本申请通过将预定义的规则数据添加至调用oclint源码生成的cpp文件中,cpp文件为oclint中用于指示代码分析逻辑的文件,添加根据预审规则调用派生类(利用继承机制,从已有的类中派生出的新的类)生成的逻辑判断数据,可以实现基于oclint的自动规则审核逻辑,在实际进行文件预审时,即可直接调用oclint中配置好的审核逻辑进行逻辑判断,实现快速的自动化检测操作,避免了漏测以及失误触发规则项目带来的风险,提升了待提交文件的预审效率。
实施例二:
区别于实施例一,本实例主要从提升用户对于预审报告中关键信息的快速获取的角度出发,在实施例一的基础上,对具体的待提交文件预审方式进行了进一步的增加。
可选地,在生成预审报告后,可以进一步将预审报告发送至sonarqube进行集成展示。
报告最终依托质量管理平台sonarqube(审查结果聚合平台)进行集成展示,sonarqube是一个审查结果聚合平台,包括项目页面、评估报告页面、问题页面等,可以实现各类型信息的概况,并提供条件筛选,调用sonarqube进行集成展示可以优化用户查看体验,实现高效数据输出。当然,也可以调用其他工具或部件输出预审报告,具体可以参照相关技术,在此不做限定。
另外,由于预审报告中包含所有数据规则审核的结果,用户需要根据该预审报告进行待提交文件的相应修正,为方便用户对相关不符合审核规则的数据信息的获取,可选地,可以在生成预审报告后,进一步根据预审报告筛选出不符合规则数据的文件数据,并根据文件数据生成警示信息;根据警示信息进行警示提醒。
警示提醒的手段比如弹窗提醒、邮件提醒等,可以采用单一提醒方式,也可以针对不同的错误类型采用差异性提醒手段,具体可以参照相关提醒技术的实现方式,在此不做限定。
出于对不同错误等级的区别显示的需求,优选地,可以进一步设置为警示信息设置警示等级,警示等级的设置可以根据错误类型、错误数据量等参数进行设置,在此不做限定。一种根据警示信息进行警示提醒的方式如下:
对警示信息设置警示等级;
根据预先配置的各等级对应的提醒方式进行警示提醒。
出于可群发性以及成本低等需要可以调用邮件***进行警示信息的输出,从而可以实现警示信息的大范围输出,同时控制整体实现成本;出于统一、整合管理以及多输出方式等的需要,可以调用钉钉机器人***进行警示信息的输出。可选地,一种警示提醒方式如下:调用预先接入的邮件***和/或钉钉机器人***进行警示信息的输出。
警示提醒可以配置单种输出方式,比如仅通过邮件输出等,也可以同时配置若干种输出方式,比如通过邮件***以及钉钉机器人***进行警示信息的输出等,在此不做限定,可以根据实际提醒需要进行设定。
具体地,一种基于差异化提醒以及多手段提醒的警示提醒方式如下:警告提示接入邮件***和钉钉机器人***,针对报告中的高优先级警告结果进行邮件提示,并直接发送钉钉提醒。
cpp文件中存储有针对App Store规则自定义的规则数据,由于自定义方式的调整,以及App Store规则的调整,存在对cpp文件调整的需求,为满足上述实际使用需求,优选地,本申请中还可以进一步配置规则数据调整步骤,触发方式不做限定,可以在oclint的用户显示页面配置规则调整选项,由用户自动触发等,具体的规则数据调整实现步骤如下:
导出cpp文件;
利用新版本的规则数据对cpp文件进行规则的添加和/或删改,得到修正后的cpp文件;
编译修正后的cpp文件,生成修正后的dylib动态库文件,以便根据修正后的dylib动态库文件对待提交文件进行逻辑判断。
本实施例中仅以上述增加预审步骤进行介绍,其它基于实施例一的预审方法均可算作本发明的保护范围,在此不再赘述。
实施例三:
为加深对上述实施例中介绍的基于oclint的待提交文件预审方法的理解,本实施例中以一种具体审核条款下的预审过程为例进行介绍,图4所示为一种预审实现过程示意图。
5.2.3音频/视频下载:app不得促进非法文件共享,或在没有获得这些资源的明确授权的情况下,提供从第三方来源(如Apple Music、YouTube、SoundCloud、Vimeo)保存、转换或下载媒体资源的能力。视频/音频内容流也有可能触犯使用条款,所以请务必在app访问这些服务前,进行检查。如有相应要求,则必须提供相关文稿。
针对以上审核条款,转化得到一个审核点,ipa包不允许拥有下载互联网资源的功能,那么可以考虑检查代码是否写了拥有关键字“BT”的代码(取一个关键字示例),如果存在此关键字很可能存在被拒风险。
下载oclint源码并进行编译;
用编译好的oclint执行工具(Build、llvm、oclint-json-compilation-database以及oclint-xcodebuild)运行生成xcodeproj项目;
把项目导入到xcode中,编写cpp规则文件,一种针对上述审核条款的预定义的规则数据如下:
编译生成dylib文件,生成的dylib文件如图5所示。
执行oclint得到预审报告结果,一种预审报告如图6所示。
相较于传统预审方法,本实施例中从人工手动检查转化成自动化检查,节省时间人力成本、提升工作效率、提高审核质量降低审核风险,同时检查覆盖度更全,dylib一份维护可多项目适用,使用范围广,可多次重复使用。
因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。
实施例四:
在上文中已经通过一些实施例对基于oclint的待提交文件预审过程的原理实现、优势以及具体实现方式等进行了详细的描述,本申请还提供一种与该方法对应的装置200,此部分内容原理与方案部分相对应,实现原理的部分此处不再赘述,以下将对该实体硬件装置的硬件组成进行描述,请参见图7,图7为本申请实施例提供的一种基于oclint的待提交文件预审装置的结构示意图,该装置中主要包括:源码编译单元210、项目生成单元220、项目导入单元230、规则添加单元240以及逻辑判断单元250。
其中,源码编译单元210主要用于下载oclint源码并进行编译,得到oclint执行工具;
项目生成单元220主要用于调用oclint执行工具生成xcodeproj项目;
项目导入单元230主要用于将xcodeproj项目导入至xcode,生成cpp文件;
规则添加单元240主要用于将预定义的规则数据添加至cpp文件,并编译,得到dylib动态库文件;其中,规则数据为根据预审规则调用派生类生成的逻辑判断数据;
逻辑判断单元250主要用于调用oclint的执行入口,根据dylib动态库文件对待提交文件进行逻辑判断,生成预审报告。
可选地,基于oclint的待提交文件预审装置中可以进一步包括:报告发送单元,用于将预审报告发送至sonarqube进行集成展示。
可选地,基于oclint的待提交文件预审装置中可以进一步包括:警示提醒单元,警示提醒单元中具体包括:
数据筛选子单元,用于根据预审报告筛选出不符合规则数据的文件数据,并根据文件数据生成警示信息;
提醒子单元,用于根据警示信息进行警示提醒。
可选地,提醒子单元具体可以为第一提醒子单元,第一提醒子单元具体包括:
等级确定子单元,用于对警示信息设置警示等级;
等级提醒子单元,用于根据预先配置的各等级对应的提醒方式进行警示提醒。
可选地,提醒子单元具体可以为第一提醒子单元,第一提醒子单元具体用于:调用预先接入的邮件***和/或钉钉机器人***进行警示信息的输出。
可选地,基于oclint的待提交文件预审装置中可以进一步包括:cpp文件调整单元,cpp文件调整单元具体包括:
导出子单元,用于导出cpp文件;
修正子单元,用于利用新版本的规则数据对所述cpp文件进行规则的添加和/或删改,得到修正后的cpp文件;
编译子单元,用于编译所述修正后的cpp文件,生成修正后的dylib动态库文件,以便根据所述修正后的dylib动态库文件对所述待提交文件进行逻辑判断。
具体地,基于oclint的待提交文件预审装置具体可以为:可调用jenkins(一个持续集成平台)的gitlab(一种用于文件仓库管理***的一个开源项目),jenkins上部署有脚本,脚本执行时实现如上基于oclint的待提交文件预审方法的步骤。
自动触发采用持续集成平台和gitlab的webhook(一个自定义函数,会在调用的时候传递数据到其他应用)的形式架设,将写好的规则和流程脚本部署到jenkins上,检查到gitlab上存在push触发操作,回调jenkins执行任务,进行预审工作。其中,gitlab为用于文件仓库管理***的一个开源项目;webhook为一个自定义函数,可以实现在调用的时候传递数据到其他应用;jenkins为一个持续集成平台。调用的上述工具均为目前开源且调用实现简单的项目平台,可以给予开发者较大的自由度。此外,也可以调用其他的可以实现上述功能的平行工具,本实施例中仅以上述工具调用为例进行介绍,其他形式在此不再赘述。
本实施例提供的基于oclint的待提交文件预审装置可以克服现有文件预审在实现机制上存在的缺陷,实现快速的自动化检测。
实施例五:
本申请还提供一种与该方法对应的智能终端,此部分内容原理与方案部分相对应,实现原理的部分此处不再赘述,以下将对该智能终端的硬件组成进行描述,请参见图8,图8为本申请实施例提供的一种智能终端的结构示意图,该终端中主要包括:
该智能终端300包括存储器310、处理器320以及总线330,存储器310上存储有可在处理器320上运行的待提交文件预审程序,该程序通过总线330被传输至处理器320,并在被处理器320执行时可实现如上述实施例给出的基于oclint的待提交文件预审方法中的各步骤;
其中,存储器310至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器310在一些实施例中可以是智能终端300的内部存储单元,例如该智能终端300的硬盘。存储器310在另一些实施例中也可以是该智能终端300的外部存储设备,例如该智能终端300上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器310还可以同时由内部存储单元和外部存储设备同时组成。进一步的,存储器310不仅可以用于存储安装于该智能终端300中的各种应用软件和各类数据,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器320在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器310中存储的程序代码或处理数据,例如Android App启动程序等。
总线330可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条双向中空指示线表示,但并不表示仅有一根总线或一种类型的总线。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中所给出的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于oclint的待提交文件预审方法,其特征在于,包括:
下载oclint源码并进行编译,得到oclint执行工具;
调用所述oclint执行工具生成xcodeproj项目;
将所述xcodeproj项目导入至xcode,生成cpp文件;
将预定义的规则数据添加至所述cpp文件,并编译,得到dylib动态库文件;其中,所述规则数据为根据预审规则调用派生类生成的逻辑判断数据,所述逻辑判断数据至少包括关键字识别逻辑和代码规则逻辑,所述预审规则由App Store的审核规则进行逻辑转换得到,所述规则数据至少为针对不同类型的所述待提交文件的通用规则数据或者根据所述待提交文件的类型设置对应的规则数据;
调用oclint的执行入口,根据所述dylib动态库文件对待提交文件进行逻辑判断,生成预审报告;
其中,在生成所述规则数据后,反复调用所述规则数据以对所述待提交文件进行全面规则审核;
在所述规则数据为所述待提交文件的类型设置对应的规则数据时,所述根据所述dylib动态库文件对待提交文件进行逻辑判断,包括:
确定所述待提交文件的类型信息;
确定所述dylib动态库文件中类型信息对应的逻辑规则;
根据确定的所述逻辑规则对所述待提交文件进行逻辑判断,其中,所述类型为所述待提交文件针对的应用类型或者设置类型。
2.根据权利要求1所述的基于oclint的待提交文件预审方法,其特征在于,还包括:将所述预审报告发送至sonarqube进行集成展示。
3.根据权利要求1所述的基于oclint的待提交文件预审方法,其特征在于,还包括:
根据所述预审报告筛选出不符合所述规则数据的文件数据,并根据所述文件数据生成警示信息;
根据所述警示信息进行警示提醒。
4.根据权利要求3所述的基于oclint的待提交文件预审方法,其特征在于,根据所述警示信息进行警示提醒,包括:
对所述警示信息设置警示等级;
根据预先配置的各等级对应的提醒方式进行警示提醒。
5.根据权利要求3所述的基于oclint的待提交文件预审方法,其特征在于,根据所述警示信息进行警示提醒,包括:
调用预先接入的邮件***和/或钉钉机器人***进行所述警示信息的输出。
6.根据权利要求1所述的基于oclint的待提交文件预审方法,其特征在于,还包括:
导出所述cpp文件;
利用新版本的规则数据对所述cpp文件进行规则的添加和/或删改,得到修正后的cpp文件;
编译所述修正后的cpp文件,生成修正后的dylib动态库文件,以便根据所述修正后的dylib动态库文件对所述待提交文件进行逻辑判断。
7.一种基于oclint的待提交文件预审装置,其特征在于,包括:
源码编译单元,用于下载oclint源码并进行编译,得到oclint执行工具;
项目生成单元,用于调用所述oclint执行工具生成xcodeproj项目;
项目导入单元,用于将所述xcodeproj项目导入至xcode,生成cpp文件;
规则添加单元,用于将预定义的规则数据添加至所述cpp文件,并编译,得到dylib动态库文件;其中,所述规则数据为根据预审规则调用派生类生成的逻辑判断数据,所述逻辑判断数据至少包括关键字识别逻辑和代码规则逻辑,所述预审规则由App Store的审核规则进行逻辑转换得到,所述规则数据至少为针对不同类型的所述待提交文件的通用规则数据或者根据所述待提交文件的类型设置对应的规则数据;
逻辑判断单元,用于调用oclint的执行入口,根据所述dylib动态库文件对待提交文件进行逻辑判断,生成预审报告;
其中,在生成所述规则数据后,反复调用所述规则数据以对所述待提交文件进行全面规则审核;
在所述规则数据为所述待提交文件的类型设置对应的规则数据时,所述根据所述dylib动态库文件对待提交文件进行逻辑判断,包括:
确定所述待提交文件的类型信息;
确定所述dylib动态库文件中类型信息对应的逻辑规则;
根据确定的所述逻辑规则对所述待提交文件进行逻辑判断,其中,所述类型为所述待提交文件针对的应用类型或者设置类型。
8.根据权利要求7所述的基于oclint的待提交文件预审装置,其特征在于,所述基于oclint的待提交文件预审装置具体为:可调用jenkins的gitlab,所述jenkins上部署有脚本,所述脚本执行时实现如权利要求1至7任一项所述基于oclint的待提交文件预审方法的步骤。
9.一种智能终端,其特征在于,包括:存储器、处理器以及总线;
其中,所述存储器用于存储程序;
所述处理器用于执行所述程序时实现如权利要求1至6任一项所述基于oclint的待提交文件预审方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有程序,所述程序被处理器执行时实现如权利要求1至6任一项所述基于oclint的待提交文件预审方法的步骤。
CN201911214989.5A 2019-12-02 2019-12-02 一种基于oclint的待提交文件预审方法及相关组件 Active CN111008017B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911214989.5A CN111008017B (zh) 2019-12-02 2019-12-02 一种基于oclint的待提交文件预审方法及相关组件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911214989.5A CN111008017B (zh) 2019-12-02 2019-12-02 一种基于oclint的待提交文件预审方法及相关组件

Publications (2)

Publication Number Publication Date
CN111008017A CN111008017A (zh) 2020-04-14
CN111008017B true CN111008017B (zh) 2024-04-09

Family

ID=70113860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911214989.5A Active CN111008017B (zh) 2019-12-02 2019-12-02 一种基于oclint的待提交文件预审方法及相关组件

Country Status (1)

Country Link
CN (1) CN111008017B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111610999A (zh) * 2020-05-26 2020-09-01 北京字节跳动网络技术有限公司 一种检查方法、装置、计算机设备及存储介质
CN112256272B (zh) * 2020-10-19 2022-04-05 四川长虹电器股份有限公司 检测源代码质量的方法、***、计算机设备及存储介质
CN113312617B (zh) * 2021-05-24 2023-11-03 南京大学 一种面向代码安全的提交优先级排序方法和***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109445836A (zh) * 2018-09-03 2019-03-08 平安普惠企业管理有限公司 一种源码文件的管理方法、服务器及计算机可读存储介质
CN109739507A (zh) * 2018-12-28 2019-05-10 睿驰达新能源汽车科技(北京)有限公司 一种代码持续集成方法和代码持续交付方法
CN110297656A (zh) * 2019-05-23 2019-10-01 重庆金融资产交易所有限责任公司 基于配置模型评审代码的方法、装置及计算机设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109445836A (zh) * 2018-09-03 2019-03-08 平安普惠企业管理有限公司 一种源码文件的管理方法、服务器及计算机可读存储介质
CN109739507A (zh) * 2018-12-28 2019-05-10 睿驰达新能源汽车科技(北京)有限公司 一种代码持续集成方法和代码持续交付方法
CN110297656A (zh) * 2019-05-23 2019-10-01 重庆金融资产交易所有限责任公司 基于配置模型评审代码的方法、装置及计算机设备

Also Published As

Publication number Publication date
CN111008017A (zh) 2020-04-14

Similar Documents

Publication Publication Date Title
CN111008017B (zh) 一种基于oclint的待提交文件预审方法及相关组件
US20130117855A1 (en) Apparatus for automatically inspecting security of applications and method thereof
US7069474B2 (en) System and method for assessing compatibility risk
Nguyen et al. Detection of embedded code smells in dynamic web applications
CN112559354A (zh) 前端代码规范检测方法、装置、计算机设备及存储介质
US11580228B2 (en) Coverage of web application analysis
CN111459495A (zh) 单元测试代码文件生成方法、电子装置及存储介质
CN111367531B (zh) 代码处理方法及装置
CN109240923B (zh) 接口测试脚本的生成方法及计算机可读存储介质
CN114139161A (zh) 一种批量检测漏洞的方法、装置、电子设备及介质
CN113869789A (zh) 一种风险监控的方法、装置、计算机设备及存储介质
CN111352631B (zh) 一种接口兼容性检测方法及装置
WO2023151397A1 (zh) 应用程序部署方法、装置、设备及介质
CN111258562A (zh) Java代码质量检查方法、装置、设备和存储介质
CN116483888A (zh) 程序评估方法及装置、电子设备和计算机可读存储介质
CN110764745A (zh) 变量的传输和收集方法、装置及计算机可读存储介质
CN110826074A (zh) 一种应用漏洞检测方法、装置和计算机可读存储介质
CN115827437A (zh) 静态代码分析方法和装置、电子设备、可读存储介质和芯片
CN115617612A (zh) 一种日志上报方法、装置、计算机设备和存储介质
CN115525561A (zh) 协议接口测试方法、装置、终端设备以及存储介质
CN115033489A (zh) 代码资源检测方法、装置、电子设备及存储介质
CN117009397A (zh) 数据查询方法、数据查询装置、电子设备和存储介质
CN111027073B (zh) 漏洞检测方法、装置、设备及存储介质
CN110765003B (zh) 代码检测方法、装置以及设备、存储介质
CN113961475B (zh) 基于规约导向的错误处理缺陷的检测方法及***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant