CN109491924B - 代码检测方法、装置、终端及存储介质 - Google Patents

代码检测方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN109491924B
CN109491924B CN201811569959.1A CN201811569959A CN109491924B CN 109491924 B CN109491924 B CN 109491924B CN 201811569959 A CN201811569959 A CN 201811569959A CN 109491924 B CN109491924 B CN 109491924B
Authority
CN
China
Prior art keywords
code
compiling
target
detection
plug
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
CN201811569959.1A
Other languages
English (en)
Other versions
CN109491924A (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 Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN201811569959.1A priority Critical patent/CN109491924B/zh
Publication of CN109491924A publication Critical patent/CN109491924A/zh
Application granted granted Critical
Publication of CN109491924B publication Critical patent/CN109491924B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请是关于一种代码检测方法、装置、终端及存储介质,属于软件开发领域。所述方法应用于目标操作系统的软件开发平台中,包括:根据目标代码的编译指令,通过该软件开发平台的编译组件,对目标代码进行编译;在对目标代码进行编译的过程中,通过代码规范检测功能,对目标代码进行规范性检测,该代码规范检测功能注册在编译组件的源码中,用于检测任一代码是否符合目标操作系统的代码规范;若检测到目标代码不符合该代码规范,则进行编写错误提示。本申请实现了在对代码进行编译的过程中,自动对代码是否符合目标操作系统的代码规范进行检测,保证了面向操作系统的代码规范性。

Description

代码检测方法、装置、终端及存储介质
技术领域
本申请涉及软件开发领域,尤其涉及一种代码检测方法、装置、终端及存储介质。
背景技术
在软件开发领域,代码规范非常重要,如果开发人员编写的代码不符合要求的代码规范,将会导致代码的运行出现问题,甚至会导致运行系统崩溃。因此,在代码运行前,需要对代码进行规范性检测。
目前,针对不同的编程语音,开发出了不同编程语言的代码规范检测工具,用于检测采用对应编程语言编写的代码是否符合该编程语言的代码规范。比如,Java代码规范检测工具用于检测Java代码是否符合Java语言的代码编写规范,C++代码规范检测工具用于检测C++代码是否符合C++语言的代码编写规范。
目前的代码规范检测工具只能检测代码是否符合特定编程语言的编写规范,但是,不同操作系统也有不同的代码规范要求,为了保证编写的代码能够在特定操作系统上正常运行,亟需一种能够检测代码是否符合特定操作系统的代码规范的代码检测方法。
发明内容
本申请提供了一种代码检测方法,能够克服相关技术中的代码规范检测工具只能检测代码是否符合编程语言的编写规范,不能检测是否符合操作系统的代码规范的问题。
根据本申请实施例的第一方面,提供了一种代码检测方法,应用于软件开发平台中,所述软件开发平台用于开发运行在目标操作系统上的软件,所述方法包括:
根据目标代码的编译指令,通过所述软件开发平台的编译组件,对所述目标代码进行编译;
在对所述目标代码进行编译的过程中,通过代码规范检测功能,对所述目标代码进行规范性检测,所述代码规范检测功能注册在所述编译组件的源码中,用于检测任一代码是否符合所述目标操作系统的代码规范;
若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
可选地,所述代码规范包括多种结构类型对应的编写规则;
所述通过代码规范检测功能,对所述目标代码进行规范性检测,包括:
通过所述代码规范检测功能,确定所述目标代码包括的多个结构体;
对于所述多个结构体中的每个结构体,从所述多种结构类型对应的编写规则中,确定所述每个结构体所属的结构类型对应的目标编写规则;
判断所述每个结构体是否符合所述目标编写规则;
若所述每个结构体不符合所述目标编写规则,则确定所述每个结构体不符合所述代码规范。
可选地,所述多种结构类型至少包括类、属性和方法;
其中,所述类对应的编写规则包括类名编写规则,所述属性对应的编写规则包括属性名编写规则和不同属性的修饰符编写规则,所述方法对应的编写规则包括方法名编写规则。
可选地,所述通过所述代码规范检测功能,确定所述目标代码包括的多个结构体之前,还包括:
通过所述编译组件,对所述目标代码进行语义分析,得到所述目标代码的语法树,所述语法树中的每个节点用于指示所述目标代码中的一个结构体;
对所述语法树的各个节点进行遍历,在遍历过程中,每当遍历到一个节点时,获取所述节点指示的结构体,得到所述多个结构体;
所述通过所述代码规范检测功能,确定所述目标代码包括的多个结构体,包括:
通过所述代码规范检测功能,监听所述编译组件获取的所述多个结构体。
可选地,所述若检测到所述目标代码不符合所述代码规范,则进行编写错误提示,包括:
若检测到所述目标代码不符合所述代码规范,则针对所述目标代码中不符合所述代码规范的部分代码,进行编写错误提示。
可选地,所述针对所述目标代码中不符合所述代码规范的部分代码,进行编写错误提示,包括:
在不符合所述代码规范的部分代码的对应位置,显示编写错误提示信息,所述编写错误提示信息用于指示所述部分代码不符合所述代码规范。
可选地,所述编写错误提示信息包括所述部分代码不符合的部分代码规范的规范内容。
可选地,所述代码规范检测功能为代码规范检测插件,所述通过所述代码规范检测功能,对所述目标代码进行规范性检测之前,还包括:
获取所述编译组件的源码;
对所述源码进行编译,得到编译源码;
获取编写完成的所述代码规范检测插件;
调用所述编译源码的插件注册入口,通过所述插件注册入口,将所述代码规范检测插件注册到所述编译源码中。
根据本申请实施例的第二方面,提供了一种代码检测装置,应用于软件开发平台中,所述软件开发平台用于开发运行在目标操作系统上的软件,所述装置包括:
第一编译模块,用于根据目标代码的编译指令,通过所述软件开发平台的编译组件,对所述目标代码进行编译;
检测模块,用于在对所述目标代码进行编译的过程中,通过代码规范检测功能,对所述目标代码进行规范性检测,所述代码规范检测功能注册在所述编译组件的源码中,用于检测任一代码是否符合所述目标操作系统的代码规范;
提示模块,用于若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
可选地,所述代码规范包括多种结构类型对应的编写规则;
所述检测模块具体用于:
通过所述代码规范检测功能,确定所述目标代码包括的多个结构体;
对于所述多个结构体中的每个结构体,从所述多种结构类型对应的编写规则中,确定所述每个结构体所属的结构类型对应的目标编写规则;
判断所述每个结构体是否符合所述目标编写规则;
若所述每个结构体不符合所述目标编写规则,则确定所述每个结构体不符合所述代码规范。
可选地,所述多种结构类型至少包括类、属性和方法;
其中,所述类对应的编写规则包括类名编写规则,所述属性对应的编写规则包括属性名编写规则和不同属性的修饰符编写规则,所述方法对应的编写规则包括方法名编写规则。
可选地,所述装置还包括第二编译模块,所述第二编译模块用于:
通过所述编译组件,对所述目标代码进行语义分析,得到所述目标代码的语法树,所述语法树中的每个节点用于指示所述目标代码中的一个结构体;
对所述语法树的各个节点进行遍历,在遍历过程中,每当遍历到一个节点时,获取所述节点指示的结构体,得到所述多个结构体;
所述检测模块,还用于通过所述代码规范检测功能,监听所述编译组件获取的所述多个结构体。
可选地,所述提示模块具体用于:
若检测到所述目标代码不符合所述代码规范,则针对所述目标代码中不符合所述代码规范的部分代码,进行编写错误提示。
可选地,所述提示模块具体用于:
在不符合所述代码规范的部分代码的对应位置,显示编写错误提示信息,所述编写错误提示信息用于指示所述部分代码不符合所述代码规范。
可选地,所述编写错误提示信息包括所述部分代码不符合的部分代码规范的规范内容。
可选地,所述装置还包括:
第一获取模块,用于获取所述编译组件的源码;
第三编译模块,用于对所述源码进行编译,得到编译源码;
第二获取模块,用于获取编写完成的所述代码规范检测插件;
注册模块,用于调用所述编译源码的插件注册入口,通过所述插件注册入口,将所述代码规范检测插件注册到所述编译源码中。
根据本申请实施例的第三方面,提供了一种终端,所述终端包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
根据目标代码的编译指令,通过软件开发平台的编译组件,对所述目标代码进行编译,所述软件开发平台用于开发运行在目标操作系统上的软件;
在对所述目标代码进行编译的过程中,通过代码规范检测功能,对所述目标代码进行规范性检测,所述代码规范检测功能注册在所述编译组件的源码中,用于检测任一代码是否符合所述目标操作系统的代码规范;
若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
根据本申请实施例的第四方面,提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由计算机的处理器执行时,使得计算机能够执行一种代码检测方法,所述方法包括:
根据目标代码的编译指令,通过软件开发平台的编译组件,对所述目标代码进行编译,所述软件开发平台用于开发运行在目标操作系统上的软件;
在对所述目标代码进行编译的过程中,通过代码规范检测功能,对所述目标代码进行规范性检测,所述代码规范检测功能注册在所述编译组件的源码中,用于检测任一代码是否符合所述目标操作系统的代码规范;
若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
根据本申请实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品用于实现一种代码检测方法,所述方法包括:
根据目标代码的编译指令,通过软件开发平台的编译组件,对所述目标代码进行编译,所述软件开发平台用于开发运行在目标操作系统上的软件;
在对所述目标代码进行编译的过程中,通过代码规范检测功能,对所述目标代码进行规范性检测,所述代码规范检测功能注册在所述编译组件的源码中,用于检测任一代码是否符合所述目标操作系统的代码规范;
若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请实施例中,软件开发平台在根据编译指令,通过编译组件对目标代码进行编译的过程中,可以通过注册在该编译组件的源码中的代码规范检测功能,对目标代码进行规范性检测,以检测目标代码是否符合目标操作系统的代码规范,若检测到目标代码不符合该代码规范,则进行编写错误提示。也即是,相较于相关技术中只能对代码是否符合特定编程语言的编写规范进行检测,本申请通过在编译组件的源码中注册代码规范检测功能,实现了在对代码进行编译的过程中,对代码是否符合目标操作系统的代码规范进行检测。而且,在代码不符合目标操作系统的代码规范时,通过对开发人员进行错误提示,还可以及时提醒开发人员进行修改,保证了编写的代码能够符合目标操作系统的代码规范,进而使得代码能够在目标操作系统上正常运行。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请实施例涉及的一种实施环境的示意图。
图2是本申请实施例提供的一种代码规范检测功能的开发方法的流程图。
图3是本申请实施例提供的一种代码检测方法的流程图。
图4是本申请实施例提供的一种编译组件的执行逻辑示意图;
图5是本申请实施例提供的一种代码检测装置的结构框图。
图6是本申请实施例提供的一种终端600的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在对本申请实施例进行详细说明之前,先对本申请实施例的应用场景予以说明。
对于面向操作系统的软件开发而言,一种操作系统具有一套通用的代码规范,而且,不同的开发团体还可以在该通用代码规范的基础上,增加符合自己开发团队要求的代码规范,也即是,不同的开发团队可能具有不同的操作系统代码规范。但是,目前对操作系统的代码规范的执行只能依靠每个开发人员自觉遵守,如果开发人员没有发现自己编写的代码不符合操作系统的代码规范,将会影响后续代码的运行。
比如,对于面向iOS操作系统的软件开发而言,开发人员在iOS操作系统的软件开发平台上编写好代码之后,该软件开发平台只会在编译代码进的过程中,检测代码中的某个变量是否被使用或是否都在主线程中,并不会检测该代码是否符合iOS操作系统的代码规范。
本申请实施例中,为了保证操作系统的代码规范的执行,提供了一种能够在代码编译过程中,按照操作系统的代码规范对代码进行强制性代码检测的方法,避免了代码不符合操作系统的代码规范的问题。
具体地,该方法可以应用于目标操作系统的软件开发平台中,开发人员在该软件开发平台中编写好代码之后,软件开发平台可以在对该代码进行编译的过程中,自动对该代码进行规范性检测。另外,该方法主要适用于iOS操作系统的软件开发平台,可以对代码是否符合iOS操作系统的代码规范进行检测。
接下来,对本申请实施例的实施环境进行介绍。
图1是本申请实施例涉及的一种实施环境的示意图,如图1所示,该实施环境包括终端10,终端10可以为手机、平板电脑、计算机或掌上设备等。终端10可以按照本申请实施例提供的方法进行代码检测。可选地,终端10中安装或集成有软件开发平台20,可以通过该软件开发平台进行代码检测。其中,软件开发平台20用于开发运行在目标操作系统上的软件,目标操作系统可以为iOS操作系统或安卓操作系统等。
本申请实施例中,为了使软件开发平台能够对代码是否符合操作系统的代码规范进行检测,需要预先在软件开发平台上进行功能开发,使得软件开发平台集成代码规范检测功能,该代码规范检测功能用于检测任一代码是否符合目标操作系统的代码规范。该代码规范检测功能可以为代码、插件或应用等形式,接下来,将以插件形式为例对该代码规范检测功能的开发过程进行详细说明。
图2是本申请实施例提供的一种代码规范检测功能的开发方法的流程图,该方法可以应用于软件开发平台中。如图2所示,该方法包括如下步骤:
步骤201:获取软件开发平台的编译组件的源码。
其中,该软件开发平台为目标操作系统的软件开发平台,用于开发运行在目标操作系统上的软件。目标操作系统可以为iOS操作系统、Mac OS操作系统或Android(安卓)操作系统等。具体地,该软件开发平台提供有用户界面,开发人员可以在用户界面中进行编码、测试和调式等开发工作。
另外,该软件开发平台包括编译组件,该编译组件用于将源代码编译为能够在机器中运行的机器码。该编译组件可以为gcc(GNU Compiler Collection,GNU编译器套件)或LLVM(Low Level Virtual Machine,底层虚拟机)编译器等。例如,若目标操作系统为iOS操作系统,则该软件开发平台为Xcode(一种适用于iOS操作系统的集成开发工具),该编译组件为LLVM编译器,且LLVM编译器的前端为clang(一种轻量级编译器)。
需要说明的是,本申请实施例中,为了实现在对代码进行编译的过程中,自动对代码进行规范性检测,需要在编译组件的源码的基础上进行功能开发,因此,需要预先获取编译组件的源码,以便对源码进行重新开发。例如,若该编译组件为LLVM编译器,则需要获取LLVM编译器以及其前端clang的源码。
步骤202:对该源码进行编译,得到编译源码。
在获得编译组件的源码之后,可以对该源码进行编译,源码编译好之后,即可进行插件的开发。
步骤203:获取编写完成的代码规范检测插件。
开发人员可以依据目标操作系统的代码规范,在该软件开发平台上编写代码规范检测插件,该代码规范检测插件用于检测任一代码是否符合目标操作系统的代码规范。
具体地,可以预先定义一个代码规范检测插件,然后通过定义与该代码规范检测插件对应的类的功能,使得该代码规范检测插件具有检测任一代码是否符合目标操作系统的代码规范的功能。
例如,预先定义该代码规范检测插件的名称为“XHJPlugin::HJASTAction”,且“XHJPlugin::HJASTAction”对应的类为“class HJASTAction”,然后根据目标操作系统的代码规范,编写“class HJASTAction”的具体代码。具体地,可以在“class HJASTAction”中创建“ASTConsumer(语法树消费者)”,然后编写“ASTConsumer”的子类,该代码规范检测插件可以通过“ASTConsumer”的子类,实现检测任一代码是否符合目标操作系统的代码规范的功能。
示例的,在“class HJASTAction”中创建“ASTConsumer”的具体代码可以为:
Figure BDA0001915251670000081
步骤204:调用编译源码的插件注册入口,通过该插件注册入口,将该代码规范检测插件注册到该编译源码中。
编译源码提供有插件注册入口,本申请实施例中,可以调用编译源码的插件注册入口,通过该插件注册入口,将编写好的代码规范检测插件注册到该编译源码中,使得该编译组件集成有代码规范检测功能。
示例的,假设该代码规范检测插件的名称为“XHJPlugin::HJASTAction”,在编译源码中注册代码规范检测插件的代码可以为:
/*插件注册入口*/
Static FrontendPluginRegistry::Add<XHIPlugin::HJASTAction>
X(“XHJPlugin”,“The XHJPlugin is my first clang-plugin.”)
本申请实施例中,通过在编译组件中注册代码规范检测插件,便于在对目标代码进行编译的过程中,通过该代码规范检测插件对目标代码进行规范性检测。而且,这种开发方法还便于开发人员在该代码规范检测插件的基础上进行代码规范的扩展,从而开发出适用于不同开发团队的代码风格插件。
接下来,对本申请实施例提供的代码检测方法进行详细介绍。
图3是本申请实施例提供的一种代码检测方法的流程图,该方法可以应用于终端或终端安装的软件开发平台中,本申请实施例主要以该方法应用于软件开发平台中为例进行说明,该软件开发平台用于开发运行在目标操作系统上的软件。如图2所示,该方法可以包括以下步骤:
步骤301:根据目标代码的编译指令,通过该软件开发平台的编译组件,对目标代码进行编译。
其中,该软件开发平台用于开发运行在目标操作系统上的软件,目标操作系统可以为iOS操作系统、Mac OS操作系统或Android操作系统等。具体地,该软件开发平台提供有用户界面,开发人员可以在用户界面中进行编码、测试和调式等。
另外,该软件开发平台包括编译组件,该编译组件用于将源代码编译为能够在机器中运行的机器码,该编译组件可以为gcc或LLVM编译器等。例如,若目标操作系统为iOS操作系统,则该软件开发平台为IDE Xcode,该编译组件为LLVM编译器,且LLVM编译器的前端为clang。
其中,目标代码为待检测的代码。开发人员在该软件开发平台上编写完目标代码之后,在目标代码运行之前,需要先通过该软件开发平台的编译组件,对目标代码进行编译,以将目标代码编译成能够在机器中运行的机器码。
例如,以软件开发平台为IDE Xcode,该编译组件为LLVM编译器为例,在该软件开发平台上编写的目标代码为iOS代码,iOS代码的编程语言一般为objective-c。在iOS代码运行前,需要通过LLVM编译器对iOS代码进行编译,以使编译后的iOS代码能够在目标操作系统上运行。
其中,目标代码的编译指令可以由开发人员的操作触及,该操作可以为点击编译选项的操作,或者触发编译快捷键的操作等。可选地,编译快捷键可以为ctrl+B。
步骤302:在对目标代码进行编译的过程中,通过代码规范检测功能,对目标代码进行规范性检测,该代码规范检测功能注册在该编译组件的源码中,用于检测任一代码是否符合目标操作系统的代码规范。
具体地,该代码规范检测功能可以为代码规范检测插件,且该代码规范检测插件是在该编译组件的源码的基础上进行开发得到,注册在编译组件的源码中,则在通过编译组件对目标代码进行编译的过程中,编译组件可以自动调用已注册的代码规范检测插件,然后通该代码规范检测插件,对目标代码进行规范性检测。当然,该代码规范检测功能还可以为代码或应用等其他其他形式。
其中,目标操作系统的代码规范可以包括多种结构类型对应的编写规则,该多种结构类型至少包括类、属性和方法等。其中,类对应的编写规则包括类名编写规则,属性对应的编写规则包括属性名编写规则和不同属性的修饰符编写规则,方法对应的编写规则包括方法名编写规则。例如,以目标操作系统为iOS操作系统为例,类名编写规则可以包括类名的首字母为大写格式且不能有下划线,属性名编写规则可以包括属性名的第一个单词的第一个字母为小写格式且其他单词的第一个字母为大写格式,方法名编写规则可以包括方法名的第一个单词的第一个字母为小写格式且其他单词的第一个字母为大写格式。
需要说明的是,上述介绍的iOS操作系统的代码规范仅是iOS操作系统的通用规范,不同的开发团队还可以在上述通用规范的基础上,增加其他代码规范,本申请实施例对iOS操作系统的代码规范的具体内容不做限定。
通过该代码规范检测功能,对该目标代码进行规范性检测,可以检测目标代码是否符合目标操作系统的代码规范,并对不符合该代码规范的部分代码进行定位。
具体地,目标代码可以包括多个结构体,该多个结构体可以包括类、属性和方法等,该代码规范可以包括多种结构类型对应的编写规则,则通过该代码规范检测功能,对目标代码进行规范性检测的操作可以包括:通过代码规范检测功能,确定目标代码包括的多个结构体;对于该多个结构体中的每个结构体,从该多种结构类型对应的编写规则中,确定该每个结构体所属的结构类型对应的目标编写规则;判断该每个结构体是否符合目标编写规则;若该每个结构体不符合目标编写规则,则确定该每个结构体不符合该代码规范。
在对目标组件进行编译的过程中,编译组件还可以对目标代码进行语义分析,得到目标代码的语法树,该语法树中的每个节点用于指示所述目标代码中的一个结构体。然后,对该语法树的各个节点进行遍历,且在遍历过程中,每当遍历到一个节点时,即可获取该节点指示的结构体,从而得到多个结构体。而代码规范检测功能则可以监听编译组件获取的多个结构体,从而获取到该多个结构体。
例如,编译组件对目标代码的语法树进行遍历之后,可以将遍历到的多个结构体反馈给代码规范检测插件中的ASTConsumer,使得代码规范检测插件获取到该多个结构体,然后通过ASTConsumer的子类,对每个结构体进行规范性检测,检测每个结构体是否符合对应结构类型的编写规则。
步骤303:若检测到目标代码不符合该代码规范,则进行编写错误提示。
具体地,若检测到目标代码不符合该代码规范,可以在目标代码的显示界面上显示编写错误提示信息,该编写错误提示信息用于指示目标代码不符合目标操作系统的代码规范,以对开发人员进行警告。例如,可以在目标代码之后显示注释信息,注释信息的内容包括目标代码不符合目标操作系统的代码规范。
进一步地,若检测到目标代码不符合所述代码规范,还可以可以针对目标代码中不符合所述代码规范的部分代码,进行编写错误提示。例如,可以在目标代码的显示界面中,在不符合目标操作系统的代码规范的部分代码的对应位置,显示编写错误提示信息,该编写错误提示信息用于指示该部分代码不符合该代码规范。示例的,可以在该部分代码之后显示注释信息,该注释信息的内容包括该部分代码不符合目标操作系统的代码规范。
进一步地,该编写错误提示信息还可以包括该部分代码不符合的部分代码规范的规范内容。例如,若目标代码中的某个类的类名中包括下划线,则可以在该类名之后显示注释信息,该注释信息的内容可以包括类名中不能带有下划线。
示例的,假设类名“X_Hj:NSObject”中带有下划线,则针对该类名进行编写错误提示的形式可以如下所示:
#import<Foundation/Foundation.h>
@interface X_Hj:NSObject警告Zero:类名中不能带有下划线
@end
本申请实施例中,由于编译组件中预先注册了代码规范检测功能,因此,在通过该编译组件对目标代码进行编译的过程中,可以调用预先注册的代码规范检测功能,通过该代码规范检测功能对目标代码进行规范性检测。
在一个实施例中,假设该编译组件为LLVM编译器,该编译组件的执行逻辑可以如图4所示:
1)扫描目标代码,生成目标代码的语法树。
其中,目标代码的语法树中的每个节点用于指示目标代码的一个结构体,目标代码的结构体可以包括类、属性和方法等。
2)对语法树中的各个节点进行遍历,以访问目标代码包括的各个结构体。
3)根据各个结构体所属的结构类型对应的编码规则,对各个结构体进行规范性检测。
例如,若结构体为类,则进行类名检测,判断类名是否符合对应的类名规则;若结构体为属性名,则进行属性修饰符和属性名的检测,判断属性修饰符是否符合对应的属性修饰符规则,以及判断属性名是否符合对应的属性名规则;若结构体为方法,则进行方法参数和方法名的检测,判断方法参数是否符合对应的方法参数规则,以及判断方法名是否符合对应的方法名规则。
4)当检测到某个结构体不符合目标操作系统的代码规范时,按照配置进行警告或编写错误提示。
本申请实施例中,软件开发平台在根据编译指令,通过编译组件对目标代码进行编译的过程中,可以通过注册在该编译组件的源码中的代码规范检测功能,对目标代码进行规范性检测,以检测目标代码是否符合目标操作系统的代码规范,若检测到目标代码不符合该代码规范,则进行编写错误提示。也即是,相较于相关技术中只能对代码是否符合特定编程语言的编写规范进行检测,本申请通过在编译组件的源码中注册代码规范检测功能,实现了在对代码进行编译的过程中,对代码是否符合目标操作系统的代码规范进行检测。而且,在代码不符合目标操作系统的代码规范时,通过对开发人员进行错误提示,还可以及时提醒开发人员进行修改,保证了编写的代码能够符合目标操作系统的代码规范,进而使得代码能够在目标操作系统上正常运行。另外,通过对代码进行规范性检测,方便了整个开发团队的代码风格的统一,在一定程度上降低了代码维护的成本。
图5是本申请实施例提供的一种代码检测装置的结构框图,该装置集成有软件开发平台,该软件开发平台用于开发运行在目标操作系统上的软件。参照图5,该装置包括第一编译模块501,检测模块502和提示模块503。
第一编译模块501,用于根据目标代码的编译指令,通过所述软件开发平台的编译组件,对所述目标代码进行编译;
检测模块502,用于在对所述目标代码进行编译的过程中,通过代码规范检测功能,对所述目标代码进行规范性检测,所述代码规范检测功能注册在所述编译组件的源码中,用于检测任一代码是否符合所述目标操作系统的代码规范;
提示模块503,用于若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
可选地,所述代码规范包括多种结构类型对应的编写规则;
所述检测模块502具体用于:
通过所述代码规范检测功能,确定所述目标代码包括的多个结构体;
对于所述多个结构体中的每个结构体,从所述多种结构类型对应的编写规则中,确定所述每个结构体所属的结构类型对应的目标编写规则;
判断所述每个结构体是否符合所述目标编写规则;
若所述每个结构体不符合所述目标编写规则,则确定所述每个结构体不符合所述代码规范。
可选地,所述多种结构类型至少包括类、属性和方法;
其中,所述类对应的编写规则包括类名编写规则,所述属性对应的编写规则包括属性名编写规则和不同属性的修饰符编写规则,所述方法对应的编写规则包括方法名编写规则。
可选地,所述装置还包括第二编译模块,所述第二编译模块用于:
通过所述编译组件,对所述目标代码进行语义分析,得到所述目标代码的语法树,所述语法树中的每个节点用于指示所述目标代码中的一个结构体;
对所述语法树的各个节点进行遍历,在遍历过程中,每当遍历到一个节点时,获取所述节点指示的结构体,得到所述多个结构体;
所述检测模块,还用于通过所述代码规范检测功能,监听所述编译组件获取的所述多个结构体。
可选地,所述提示模块503具体用于:
若检测到所述目标代码不符合所述代码规范,则针对所述目标代码中不符合所述代码规范的部分代码,进行编写错误提示。
可选地,所述提示模块503具体用于:
在不符合所述代码规范的部分代码的对应位置,显示编写错误提示信息,所述编写错误提示信息用于指示所述部分代码不符合所述代码规范。
可选地,所述编写错误提示信息包括所述部分代码不符合的部分代码规范的规范内容。
可选地,所述装置还包括:
第一获取模块,用于获取所述编译组件的源码;
第二编译模块,用于对所述源码进行编译,得到编译源码;
第二获取模块,用于获取编写完成的所述代码规范检测插件;
注册模块,用于调用所述编译源码的插件注册入口,通过所述插件注册入口,将所述代码规范检测插件注册到所述编译源码中。
本申请实施例中,软件开发平台在根据编译指令,通过编译组件对目标代码进行编译的过程中,可以通过注册在该编译组件的源码中的代码规范检测功能,对目标代码进行规范性检测,以检测目标代码是否符合目标操作系统的代码规范,若检测到目标代码不符合该代码规范,则进行编写错误提示。也即是,相较于相关技术中只能对代码是否符合特定编程语言的编写规范进行检测,本申请通过在编译组件的源码中注册代码规范检测功能,实现了在对代码进行编译的过程中,对代码是否符合目标操作系统的代码规范进行检测。而且,在代码不符合目标操作系统的代码规范时,通过对开发人员进行错误提示,还可以及时提醒开发人员进行修改,保证了编写的代码能够符合目标操作系统的代码规范,进而使得代码能够在目标操作系统上正常运行。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6是本申请实施例提供的一种终端600的结构框图。该终端600可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的代码检测方法。
在一些实施例中,终端600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、触摸显示屏605、摄像头606、音频电路607、定位组件608和电源609中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置终端600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端600的不同表面或呈折叠设计;在再一些实施例中,显示屏605可以是柔性显示屏,设置在终端600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
定位组件608用于定位终端600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源609用于为终端600中的各个组件进行供电。电源609可以是交流电、直流电、一次性电池或可充电电池。当电源609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端600还包括有一个或多个传感器610。该一个或多个传感器610包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、指纹传感器614、光学传感器615以及接近传感器616。
加速度传感器611可以检测以终端600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制触摸显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测终端600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在终端600的侧边框和/或触摸显示屏605的下层。当压力传感器613设置在终端600的侧边框时,可以检测用户对终端600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在触摸显示屏605的下层时,由处理器601根据用户对触摸显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器614用于采集用户的指纹,由处理器601根据指纹传感器614采集到的指纹识别用户的身份,或者,由指纹传感器614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器614可以被设置终端600的正面、背面或侧面。当终端600上设置有物理按键或厂商Logo时,指纹传感器614可以与物理按键或厂商Logo集成在一起。
光学传感器615用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器615采集的环境光强度,控制触摸显示屏605的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏605的显示亮度;当环境光强度较低时,调低触摸显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器615采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器616,也称距离传感器,通常设置在终端600的前面板。接近传感器616用于采集用户与终端600的正面之间的距离。在一个实施例中,当接近传感器616检测到用户与终端600的正面之间的距离逐渐变小时,由处理器601控制触摸显示屏605从亮屏状态切换为息屏状态;当接近传感器616检测到用户与终端600的正面之间的距离逐渐变大时,由处理器601控制触摸显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对终端600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在本实施例中,终端还包括有一个或者一个以上的程序,这一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,所述一个或者一个以上程序包含用于进行本申请实施例提供的如图2或图3所述的方法的指令。
在另一实施例中,还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由计算机的处理器执行时,使得计算机能够执行上述代码检测方法。
在另一实施例中,还提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述代码检测方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (16)

1.一种代码检测方法,其特征在于,应用于软件开发平台中,所述软件开发平台用于开发运行在目标操作系统上的软件,所述方法包括:
获取所述软件开发平台的编译组件的源码;
对所述源码进行编译,得到编译源码;
获取依据目标操作系统的代码规范编写完成的代码规范检测插件;
调用所述编译源码的插件注册入口,通过所述插件注册入口,将所述代码规范检测插件注册到所述编译源码中;
根据目标代码的编译指令,通过所述软件开发平台的编译组件,对所述目标代码进行编译;
在对所述目标代码进行编译的过程中,通过所述代码规范检测插件,对所述目标代码进行规范性检测,所述代码规范检测插件,用于检测任一代码是否符合所述目标操作系统的代码规范;
若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
2.如权利要求1所述的方法,其特征在于,所述代码规范包括多种结构类型对应的编写规则;
所述通过所述代码规范检测插件,对所述目标代码进行规范性检测,包括:
通过所述代码规范检测插件,确定所述目标代码包括的多个结构体;
对于所述多个结构体中的每个结构体,从所述多种结构类型对应的编写规则中,确定所述每个结构体所属的结构类型对应的目标编写规则;
判断所述每个结构体是否符合所述目标编写规则;
若所述每个结构体不符合所述目标编写规则,则确定所述每个结构体不符合所述代码规范。
3.根据权利要求2所述的方法,其特征在于,所述多种结构类型至少包括类、属性和方法;
其中,所述类对应的编写规则包括类名编写规则,所述属性对应的编写规则包括属性名编写规则和不同属性的修饰符编写规则,所述方法对应的编写规则包括方法名编写规则。
4.根据权利要求2所述的方法,其特征在于,所述通过所述代码规范检测插件,确定所述目标代码包括的多个结构体之前,还包括:
通过所述编译组件,对所述目标代码进行语义分析,得到所述目标代码的语法树,所述语法树中的每个节点用于指示所述目标代码中的一个结构体;
对所述语法树的各个节点进行遍历,在遍历过程中,每当遍历到一个节点时,获取所述节点指示的结构体,得到所述多个结构体;
所述通过所述代码规范检测插件,确定所述目标代码包括的多个结构体,包括:
通过所述代码规范检测插件,监听所述编译组件获取的所述多个结构体。
5.根据权利要求1所述的方法,其特征在于,所述若检测到所述目标代码不符合所述代码规范,则进行编写错误提示,包括:
若检测到所述目标代码不符合所述代码规范,则针对所述目标代码中不符合所述代码规范的部分代码,进行编写错误提示。
6.根据所述权利要求5所述的方法,其特征在于,所述针对所述目标代码中不符合所述代码规范的部分代码,进行编写错误提示,包括:
在不符合所述代码规范的部分代码的对应位置,显示编写错误提示信息,所述编写错误提示信息用于指示所述部分代码不符合所述代码规范。
7.根据权利要求6所述的方法,其特征在于,所述编写错误提示信息包括所述部分代码不符合的部分代码规范的规范内容。
8.一种代码检测装置,其特征在于,应用于软件开发平台中,所述软件开发平台用于开发运行在目标操作系统上的软件,所述装置包括:
第一获取模块,用于获取所述软件开发平台的编译组件的源码;
第三编译模块,用于对所述源码进行编译,得到编译源码;
第二获取模块,用于获取依据目标操作系统的代码规范编写完成的所述代码规范检测插件;
注册模块,用于调用所述编译源码的插件注册入口,通过所述插件注册入口,将所述代码规范检测插件注册到所述编译源码中;
第一编译模块,用于根据目标代码的编译指令,通过所述软件开发平台的编译组件,对所述目标代码进行编译;
检测模块,用于在对所述目标代码进行编译的过程中,通过所述代码规范检测插件,对所述目标代码进行规范性检测,所述代码规范检测插件用于检测任一代码是否符合所述目标操作系统的代码规范;
提示模块,用于若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
9.如权利要求8所述的装置,其特征在于,所述代码规范包括多种结构类型对应的编写规则;
所述检测模块具体用于:
通过所述代码规范检测插件,确定所述目标代码包括的多个结构体;
对于所述多个结构体中的每个结构体,从所述多种结构类型对应的编写规则中,确定所述每个结构体所属的结构类型对应的目标编写规则;
判断所述每个结构体是否符合所述目标编写规则;
若所述每个结构体不符合所述目标编写规则,则确定所述每个结构体不符合所述代码规范。
10.如权利要求9所述的装置,其特征在于,所述多种结构类型至少包括类、属性和方法;
其中,所述类对应的编写规则包括类名编写规则,所述属性对应的编写规则包括属性名编写规则和不同属性的修饰符编写规则,所述方法对应的编写规则包括方法名编写规则。
11.如权利要求9所述的装置,其特征在于,所述装置还包括第二编译模块,所述第二编译模块用于:
通过所述编译组件,对所述目标代码进行语义分析,得到所述目标代码的语法树,所述语法树中的每个节点用于指示所述目标代码中的一个结构体;
对所述语法树的各个节点进行遍历,在遍历过程中,每当遍历到一个节点时,获取所述节点指示的结构体,得到所述多个结构体;
所述检测模块,还用于通过所述代码规范检测插件,监听所述编译组件获取的所述多个结构体。
12.如权利要求8所述的装置,其特征在于,所述提示模块具体用于:
若检测到所述目标代码不符合所述代码规范,则针对所述目标代码中不符合所述代码规范的部分代码,进行编写错误提示。
13.如权利要求12所述的装置,其特征在于,所述提示模块具体用于:
在不符合所述代码规范的部分代码的对应位置,显示编写错误提示信息,所述编写错误提示信息用于指示所述部分代码不符合所述代码规范。
14.如权利要求13所述的装置,其特征在于,所述编写错误提示信息包括所述部分代码不符合的部分代码规范的规范内容。
15.一种终端,其特征在于,所述终端包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取软件开发平台的编译组件的源码;
对所述源码进行编译,得到编译源码;
获取依据目标操作系统的代码规范编写完成的代码规范检测插件;
调用所述编译源码的插件注册入口,通过所述插件注册入口,将所述代码规范检测插件注册到所述编译源码中;
根据目标代码的编译指令,通过软件开发平台的编译组件,对所述目标代码进行编译,所述软件开发平台用于开发运行在目标操作系统上的软件;
在对所述目标代码进行编译的过程中,通过所述代码规范检测插件,对所述目标代码进行规范性检测,所述代码规范检测插件用于检测任一代码是否符合所述目标操作系统的代码规范;
若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
16.一种非临时性计算机可读存储介质,当所述存储介质中的指令由计算机的处理器执行时,使得计算机能够执行一种代码检测方法,所述方法包括:
获取软件开发平台的编译组件的源码;
对所述源码进行编译,得到编译源码;
获取依据目标操作系统的代码规范编写完成的代码规范检测插件;
调用所述编译源码的插件注册入口,通过所述插件注册入口,将所述代码规范检测插件注册到所述编译源码中;
根据目标代码的编译指令,通过软件开发平台的编译组件,对所述目标代码进行编译,所述软件开发平台用于开发运行在目标操作系统上的软件;
在对所述目标代码进行编译的过程中,通过所述代码规范检测插件,对所述目标代码进行规范性检测,所述代码规范检测插件注册在所述编译组件的源码中,用于检测任一代码是否符合所述目标操作系统的代码规范;
若检测到所述目标代码不符合所述代码规范,则进行编写错误提示。
CN201811569959.1A 2018-12-21 2018-12-21 代码检测方法、装置、终端及存储介质 Active CN109491924B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811569959.1A CN109491924B (zh) 2018-12-21 2018-12-21 代码检测方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811569959.1A CN109491924B (zh) 2018-12-21 2018-12-21 代码检测方法、装置、终端及存储介质

Publications (2)

Publication Number Publication Date
CN109491924A CN109491924A (zh) 2019-03-19
CN109491924B true CN109491924B (zh) 2022-09-30

Family

ID=65711184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811569959.1A Active CN109491924B (zh) 2018-12-21 2018-12-21 代码检测方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN109491924B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109960656B (zh) * 2019-03-22 2023-05-30 北京三快在线科技有限公司 程序的检测方法、装置及电子设备
CN110349477B (zh) * 2019-07-16 2022-01-07 长沙酷得网络科技有限公司 一种基于历史学习行为的编程错误修复方法、系统及服务器
CN111078568B (zh) * 2019-12-20 2023-10-31 广州华多网络科技有限公司 代码规范方法、装置、计算机设备和存储介质
CN111176629B (zh) * 2019-12-24 2024-07-30 中国建设银行股份有限公司 一种应用开发的方法和装置
CN111625230A (zh) * 2020-05-19 2020-09-04 北京计算机技术及应用研究所 一种统一前端JavaScript编码规范的系统
CN111881059B (zh) * 2020-08-10 2023-10-27 网易(杭州)网络有限公司 代码文件的检测方法、装置和电子设备
CN112256583A (zh) * 2020-10-28 2021-01-22 冠群信息技术(南京)有限公司 一种前端代码质量检测方法
CN113450627A (zh) * 2021-06-25 2021-09-28 上海商汤临港智能科技有限公司 实验项目运行方法及装置、电子设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050085A (zh) * 2014-06-25 2014-09-17 北京思特奇信息技术股份有限公司 一种代码规范强制检查方法及系统
CN105912381B (zh) * 2016-04-27 2019-08-30 华中科技大学 一种基于规则库的编译期代码安全检测方法
CN108459962B (zh) * 2018-01-23 2021-09-03 平安普惠企业管理有限公司 代码规范性检测方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
CN109491924A (zh) 2019-03-19

Similar Documents

Publication Publication Date Title
CN109491924B (zh) 代码检测方法、装置、终端及存储介质
CN112052008B (zh) 代码检查方法、装置、计算机设备及计算机可读存储介质
CN108897659B (zh) 修改日志级别的方法、装置及存储介质
CN112000331A (zh) 页面渲染方法、装置、电子设备及存储介质
CN111274155B (zh) 动态库的内存操作记录方法、装置、设备及存储介质
CN111459466B (zh) 代码生成方法、装置、设备及存储介质
CN111752666A (zh) 窗口显示方法、装置和终端
CN110543350A (zh) 一种生成页面组件的方法及装置
CN111897525A (zh) 大数据处理方法及系统
CN112363950B (zh) 应用程序的调试方法及装置
CN111737100A (zh) 数据获取方法、装置、设备及存储介质
CN112116690A (zh) 视频特效生成方法、装置及终端
CN112052167A (zh) 生成测试脚本代码的方法和装置
CN107943484B (zh) 执行业务功能的方法和装置
CN110569064B (zh) 接口标识生成方法、装置、设备及存储介质
CN109634872B (zh) 应用测试方法、装置、终端及存储介质
CN113469360A (zh) 推理方法及装置
CN112965911B (zh) 界面异常检测方法、装置、计算机设备及存储介质
CN110045999B (zh) 绘制组件的方法、装置、终端和存储介质
CN109816047B (zh) 提供标签的方法、装置、设备及可读存储介质
CN111294320B (zh) 数据转换的方法和装置
CN112860261A (zh) 静态代码检查方法、装置、计算机设备及可读存储介质
CN111367588B (zh) 一种获取堆栈使用量的方法及装置
CN113010175A (zh) 匿名函数的信息获取方法、装置、设备及可读存储介质
CN113342645B (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