CN112988137A - 一种类文件导入代码管理系统及方法 - Google Patents

一种类文件导入代码管理系统及方法 Download PDF

Info

Publication number
CN112988137A
CN112988137A CN202110294675.1A CN202110294675A CN112988137A CN 112988137 A CN112988137 A CN 112988137A CN 202110294675 A CN202110294675 A CN 202110294675A CN 112988137 A CN112988137 A CN 112988137A
Authority
CN
China
Prior art keywords
codes
class file
import
code
file import
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
CN202110294675.1A
Other languages
English (en)
Other versions
CN112988137B (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.)
Wuhan Hongxin Technology Service Co Ltd
Original Assignee
Wuhan Hongxin Technology Service 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 Wuhan Hongxin Technology Service Co Ltd filed Critical Wuhan Hongxin Technology Service Co Ltd
Priority to CN202110294675.1A priority Critical patent/CN112988137B/zh
Publication of CN112988137A publication Critical patent/CN112988137A/zh
Application granted granted Critical
Publication of CN112988137B publication Critical patent/CN112988137B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

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

Abstract

本发明公开了一种Xcode中类文件导入代码管理系统及方法。该系统包括:输入模块,用于接收用户输入的特殊类文件名和真实引用类文件名的映射关系;读取模块,用于从代码文件中获取全部代码,并读取所有类文件导入代码和注释相关代码;匹配模块,用于根据用户输入的映射关系和注释相关代码确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码,并且删除未使用的类文件导入代码;排序模块,用于对所有已使用的类文件导入代码进行排序。本发明实现了对类文件导入代码的排序、剔除多余代码等功能,可以提升开发效率。

Description

一种类文件导入代码管理系统及方法
技术领域
本发明属于软件开发技术领域,更具体地,涉及一种Xcode中类文件导入代码管理系统及方法。
背景技术
Xcode是苹果公司提供的开发iOS应用程序的集成开发环境,提供了用于管理整个开发工作流程的工具—从创建程序到测试,优化并将其提交到应用商店。
苹果公司从Xcode 8开始不再支持第三方的插件,并在Xcode 8.0的beta里面,引入了一个新的面向苹果系统的应用扩展(App Extension),叫做Xcode源代码编辑器扩展(Xcode Source Editor Extension)。
在苹果应用的日常的迭代开发中,随着需求的变更,应用中会增加一些新的功能,一部分老的功能被修改或者被废弃。因此在开发的过程中,基于整个项目的代码规范,会面临着大量的代码删减整理的工作,其中过多的凌乱的类文件导入代码(import代码)充斥其中,导致以下几个问题:(1)重复的类文件导入代码会影响整个应用的编译速度;(2)没有一定规则排序的代码,会增加后续维护的时间成本;(3)过多的无用的类文件导入代码,某个类并没有使用,却被引入进来,增加编译的工作量,对于后期代码瘦身,删除没有引用的类文件带来了麻烦;(4)另外由于代码量的增加,Xcode的限制,每次引入某个类都必须把文件滑到最前面进行编写,增加了一些时间消耗。
发明内容
针对现有技术的至少一个缺陷或改进需求,本发明提供了一种Xcode中类文件导入代码管理系统及方法,实现了对类文件导入代码的排序、剔除多余代码等功能,更加方便快捷,可以帮助提升开发效率。
为实现上述目的,按照本发明的第一方面,提供了一种Xcode中类文件导入代码管理系统,包括步骤:
输入模块,用于接收用户输入的特殊类文件名和真实引用类文件名的映射关系;
读取模块,用于从代码文件中获取全部代码,并读取所有类文件导入代码和注释相关代码;
匹配模块,用于根据用户输入的映射关系和注释相关代码确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码,并且删除未使用的类文件导入代码;
排序模块,用于对所有已使用的类文件导入代码进行排序。
优选的,所述确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码包括步骤:
从全部代码中删除类文件导入代码和注释代码,得到实际编写代码;
从所有类文件导入代码中获取所有类文件名;
根据映射关系表查询获得所有真实引用类文件名,将每个真实引用类文件名在实际编写代码中进行匹配,根据匹配结果确定已使用的类文件导入代码和未使用的类文件导入代码。
优选的,类文件导入代码管理系统还包括:插入模块,用于将排序后的已使用的类文件导入代码插入到实际编写代码中。
优选的,所述排序为:依次按照系统框架的类文件导入代码、第三方框架的类文件导入代码、自定义的类文件导入代码进行排序。
优选的,若包含多个系统框架的类文件导入代码,则按照字母顺序将多个系统框架的类文件导入代码进行排序;若包含多个第三方框架的类文件导入代码,则按照字母顺序将多个第三方框架的类文件导入代码进行排序;若包含多个自定义的类文件导入代码,则按照字母顺序将多个自定义的类文件导入代码进行排序。
优选的,所述读取模块支持从全部代码任意位置读取类文件导入代码。
按照本发明的第二方面,提供了一种Xcode中类文件导入代码管理方法,包括步骤:
接收用户输入的特殊类文件名和真实引用类文件名的映射关系;
从代码文件中获取全部代码,并读取所有类文件导入代码和注释相关代码;
根据用户输入的映射关系和注释相关代码确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码,并且删除未使用的类文件导入代码;
对所有已使用的类文件导入代码进行排序。
总体而言,本发明与现有技术相比,具有有益效果:
(1)本发明提供的一种基于Xcode源代码编辑器扩展的类文件导入管理系统和方法,针对在日常迭代开发中,大部分时候类文件导入代码缺少管理,需要人为进行操作的问题,基于Xcode源代码编辑器扩展的实时获取编写的代码内容的特性,实现了对类文件导入代码的排序、剔除多余代码等功能,更加方便快捷,可以帮助提升开发效率。
(2)本发明提供的一种基于Xcode源代码编辑器扩展的类文件导入管理系统和方法,针对现有技术中代码导入麻烦的问题,实现了在当前文件的任意位置都可以编写导入的代码,只需一键操作就可自动插入到文件开头指定的位置,方便开发人员操作,节约时间。
(3)本发明提供的一种基于Xcode源代码编辑器扩展的类文件导入管理系统和方法,可提前录入特殊类文件名,可根据不同项目要求进行处理,保证了一定的准确性和灵活性。通过结合字符串匹配和特殊情况建库对比等方式,实现在Xcode中一键自动管理类文件导入代码,提高开发效率。
附图说明
图1是本发明实施例的类文件导入管理系统的模块示意图;
图2是本发明另一实施例的类文件导入管理方法的模块示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明实施例提供的一种Xcode中类文件导入管理系统包括输入模块、读取模块、匹配模块和排序模块。
输入模块,用于接收用户输入的特殊类文件名和真实引用类文件名的映射关系。优选的,所述输入模块还用于接收用户输入的第三方库类文件名和和真实引用类文件名的映射关系。
读取模块,用于采用Xcode源代码编辑器扩展提供的方法从代码文件中获取全部代码,并读取所有类文件导入代码和注释相关代码;
匹配模块,用于根据用户输入的映射关系和注释相关代码确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码,并且删除未使用的类文件导入代码。
排序模块,用于对所有已使用的类文件导入代码进行排序。
优选的,类文件导入代码管理系统还包括:插入模块,用于将排序后的已使用的类文件导入代码插入到原来的位置。
本发明实施例提供的一种基于Xcode源代码编辑器扩展的类文件导入管理方法,包括步骤:
S1,接收用户输入的特殊类文件名和真实引用类文件名的映射关系。
类文件导入代码中名称和代码中引用的类名不一致的情况下,此时import代码中的名称就是特殊类文件名。
真实引用类文件名是指代码中引用的类名。
比如使用MJRefresh框架时,导入时写法为#import"MJRefresh.h",代码中实际使用到的类名为MJRefreshNormalHeader或者其他,此时使用到的类名和import中的名称不一致。
比如使用百度地图定位框架的时候,导入时写法为#import<BMKLocationKit/BMKLocationComponent.h>,代码中可能使用到的是BMKLocationManager、BMKLocationManagerDelegate等类名,真实引用类文件名有很多,且和import中的名称不一致,此时可以使用前缀BMK关键字作为真实引用类文件名去做匹配。
以下为映射关系示例。
Figure BDA0002983869520000051
优选的,此步骤还可以接收用户输入的特殊类文件名和真实引用类文件名的映射关系。
iOS开发中一些常用的第三方库的文件名和实际使用的类名可以提前写入本地建立的映射关系中。
S2,采用Xcode源代码编辑器扩展提供的方法从代码文件中获取全部代码,并从全部代码中读取所有类文件导入代码和注释相关代码。
一般情况下,写的代码都一个个的代码文件,称为源代码文件。对于某个代码文件来说,可以把这个文件里的内容进行分类,可分为类文件导入代码,注释类代码,实际编写代码,三者是单独的,彼此分开的。可以从代码文件中获取全部代码,从全部代码中读取类文件导入代码和注释相关代码,通过删除类文件导入代码和注释相关代码得到实际编写代码。
具体地,搜索发现当前代码文件中的类文件导入代码,对每一行类文件导入代码统一去除首尾空格处理。
优选的,该步骤中对类文件导入代码的搜索,可对iOS开发中使用到的Objective-C、Swift、C语言的导入方式都进行匹配。
本步骤支持从文件代码任意位置读取类文件导入代码。
S3,根据用户输入的映射关系和注释相关代码确定实际编写的代码中已使用的类文件导入代码和未使用的类文件导入代码,并且删除未使用的类文件导入代码。
具体地,步骤S3包括子步骤:
S31,从全部代码中删除类文件导入代码和注释代码,得到实际编写代码;
S32,从所有类文件导入代码中获取所有类文件名。
具体地,对获得的所有行的代码进行‘#import’、‘import’、‘@import’、‘#include’等关键的检索,将得到的每一行代码保存于数组中。
S33,根据步骤S1的映射关系表查询真实引用类文件名(即类名关键字),将真实引用类文件名在实际编写的代码中进行匹配,若能匹配上,则为已使用代码,若不能匹配上,则为未使用代码。
进一步根据类名关键字和特殊的映射关系在剔除了注释的实际编写的代码中匹配,确定实际编写的代码中已使用的类文件导入代码和未使用的类文件导入代码。
以步骤S1中给出映射关系示例为例,说明此步骤。实际编写代码,比如使用百度地图定位框架的时候,导入时写法为#import<BMKLocationKit/BMKLocationComponent.h>,代码中可能使用到的是BMKLocationManager、BMKLocationManagerDelegate等类名,根据步骤S1建立的映射关系,使用BMK关键字去实际编写代码中匹配,如果实际编写的代码中包含有BMK关键字,则该类文件导入代码为已使用的类文件导入代码。
S4,对所有已使用的类文件导入代码进行排序。
优选的,排序为:依次按照系统框架的类文件导入代码、第三方框架的类文件导入代码、自定义的类文件导入代码进行排序。
优选的,还进行按字母顺序进行局部排序。即若包含多个系统框架的类文件导入代码,则按照字母顺序将多个系统框架的类文件导入代码进行排序;若包含多个第三方框架的类文件导入代码,则按照字母顺序将多个第三方框架的类文件导入代码进行排序;若包含多个自定义的类文件导入代码,则按照字母顺序将多个自定义的类文件导入代码进行排序。
优选的,上述方法还包括步骤S5,将排序后的已使用的类文件导入代码插入到实际编写代码中原来的位置。
如图2所示,本发明另一实施例提供的一种基于Xcode源代码编辑器扩展的管理类文件导入方法,包括以下步骤:
S1、新建一个苹果系统应用(macOSapp)工程,在该工程中新建一个Xcode源代码编辑器扩展的target;
S2、在SourceEditorCommand实例方法中,根据系统提供的方法来,获取目标文件所有行的代码;
S3、对获得的所有行的代码进行‘#import’、‘import’、‘@import’、‘#include’等关键的检索,将得到的每一行代码保存于数组中;
S4、对获得的所有行的代码进行单行注释、多行注释的匹配,将得到的每一行注释相关的代码,并临时存起来;
S5、对获得的所有行的代码剔除import和注释相关的代码,得到实际编写代码内容;
S6、在macOSapp中新建一个界面用于用户输入特殊情况,以keyvalue的形式保存并进行持久化,在Xcode源代码编辑器扩展的Info.plist配置命令,用于打开上述macOSapp;
S7、在Xcode源代码编辑器扩展中,根据保存的import相关代码提取导入的类名,根据输入的keyvalue形式的特殊情况文件名和类名数据进行比对,提取出需要检索的类名信息;
S8、在Xcode源代码编辑器扩展中,根据实际编写代码内容和需要检索的类名信息进行对比,可得出使用到的import代码和一些没有使用到的import代码,将使用到的import代码重新保存起来;
S9、在Xcode源代码编辑器扩展中,对使用到的类文件导入代码进行排序,根据系统框架的导入、第三方框架的导入、自己写的类等顺序排序,并进行按字母顺序进行局部排序,并将排序好的类文件导入代码插入到之前原始的位置。
优选的,可以在Xcode中设置快捷键来使用扩展,达到一键完成操作。
类文件导入管理系统的实现原理、技术效果与上述类文件导入管理方法类似,不再赘述。
必须说明的是,上述任一实施例中,方法并不必然按照序号顺序依次执行,只要从执行逻辑中不能推定必然按某一顺序执行,则意味着可以以其他任何可能的顺序执行。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种Xcode中类文件导入代码管理系统,其特征在于,包括步骤:
输入模块,用于接收用户输入的特殊类文件名和真实引用类文件名的映射关系;
读取模块,用于从代码文件中获取全部代码,并读取所有类文件导入代码和注释相关代码;
匹配模块,用于根据用户输入的映射关系和注释相关代码确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码,并且删除未使用的类文件导入代码;
排序模块,用于对所有已使用的类文件导入代码进行排序。
2.如权利要求1所述的一种Xcode中类文件导入代码管理系统,其特征在于,所述确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码包括步骤:
从全部代码中删除所有类文件导入代码和注释代码,得到实际编写代码;
从所有类文件导入代码中获取所有类文件名;
根据映射关系表查询获得所有真实引用类文件名,将每个真实引用类文件名在实际编写代码中进行匹配,根据匹配结果确定已使用的类文件导入代码和未使用的类文件导入代码。
3.如权利要求1所述的一种Xcode中类文件导入代码管理系统,其特征在于,还包括:插入模块,用于将排序后的已使用的类文件导入代码插入到实际编写代码中。
4.如权利要求1所述的一种Xcode中类文件导入代码管理系统,其特征在于,所述排序为:依次按照系统框架的类文件导入代码、第三方框架的类文件导入代码、自定义的类文件导入代码进行排序。
5.如权利要求4所述的一种Xcode中类文件导入代码管理系统,其特征在于,若包含多个系统框架的类文件导入代码,则按照字母顺序将多个系统框架的类文件导入代码进行排序;若包含多个第三方框架的类文件导入代码,则按照字母顺序将多个第三方框架的类文件导入代码进行排序;若包含多个自定义的类文件导入代码,则按照字母顺序将多个自定义的类文件导入代码进行排序。
6.如权利要求1所述的一种Xcode中类文件导入代码管理系统,其特征在于,所述读取模块支持从全部代码任意位置读取类文件导入代码。
7.一种Xcode中类文件导入代码管理方法,其特征在于,包括步骤:
接收用户输入的特殊类文件名和真实引用类文件名的映射关系;
从代码文件中获取全部代码,并读取所有类文件导入代码和注释相关代码;
根据用户输入的映射关系和注释相关代码确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码,并且删除未使用的类文件导入代码;
对所有已使用的类文件导入代码进行排序。
8.如权利要求7所述的一种Xcode中类文件导入代码管理方法,其特征在于,所述确定实际编写代码中已使用的类文件导入代码和未使用的类文件导入代码包括步骤:
从全部代码中删除类文件导入代码和注释代码,得到实际编写代码;
从所有类文件导入代码中获取所有类文件名;
根据映射关系表查询获得所有真实引用类文件名,将每个真实引用类文件名在实际编写代码中进行匹配,根据匹配结果确定已使用的类文件导入代码和未使用的类文件导入代码。
9.如权利要求7所述的一种Xcode中类文件导入代码管理方法,其特征在于,支持从全部代码任意位置读取类文件导入代码。
10.如权利要求7所述的一种Xcode中类文件导入代码管理方法,其特征在于,所述排序为:依次按照系统框架的类文件导入代码、第三方框架的类文件导入代码、自定义的类文件导入代码进行排序。
CN202110294675.1A 2021-03-19 2021-03-19 一种类文件导入代码管理系统及方法 Active CN112988137B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110294675.1A CN112988137B (zh) 2021-03-19 2021-03-19 一种类文件导入代码管理系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110294675.1A CN112988137B (zh) 2021-03-19 2021-03-19 一种类文件导入代码管理系统及方法

Publications (2)

Publication Number Publication Date
CN112988137A true CN112988137A (zh) 2021-06-18
CN112988137B CN112988137B (zh) 2024-05-17

Family

ID=76334453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110294675.1A Active CN112988137B (zh) 2021-03-19 2021-03-19 一种类文件导入代码管理系统及方法

Country Status (1)

Country Link
CN (1) CN112988137B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103955426A (zh) * 2014-04-21 2014-07-30 中国科学院计算技术研究所 一种检测c代码空指针引用的方法及系统
CN104572111A (zh) * 2015-01-20 2015-04-29 扬州大学 一种基于相关主题模型的程序理解和特征定位方法
CN107391381A (zh) * 2017-07-31 2017-11-24 东南大学 一种基于锁对象拆分策略的并发程序测试方法及其测试系统
CN109840085A (zh) * 2017-11-29 2019-06-04 德阳市福利叔网络开发有限责任公司 一种基于人工智能的软件设计方法
CN110147239A (zh) * 2019-05-22 2019-08-20 苏州仙峰网络科技股份有限公司 游戏安装包体的多重压缩的方法、设备及存储介质
CN110929234A (zh) * 2019-11-28 2020-03-27 施羊梦燊 一种基于代码虚拟化的Python程序加密保护系统与方法
CN112214219A (zh) * 2019-06-24 2021-01-12 腾讯科技(深圳)有限公司 一种组件处理方法、装置、服务器及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103955426A (zh) * 2014-04-21 2014-07-30 中国科学院计算技术研究所 一种检测c代码空指针引用的方法及系统
CN104572111A (zh) * 2015-01-20 2015-04-29 扬州大学 一种基于相关主题模型的程序理解和特征定位方法
CN107391381A (zh) * 2017-07-31 2017-11-24 东南大学 一种基于锁对象拆分策略的并发程序测试方法及其测试系统
CN109840085A (zh) * 2017-11-29 2019-06-04 德阳市福利叔网络开发有限责任公司 一种基于人工智能的软件设计方法
CN110147239A (zh) * 2019-05-22 2019-08-20 苏州仙峰网络科技股份有限公司 游戏安装包体的多重压缩的方法、设备及存储介质
CN112214219A (zh) * 2019-06-24 2021-01-12 腾讯科技(深圳)有限公司 一种组件处理方法、装置、服务器及存储介质
CN110929234A (zh) * 2019-11-28 2020-03-27 施羊梦燊 一种基于代码虚拟化的Python程序加密保护系统与方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
蔡完锡;李叠;刘昊;褥震;董渊;: "Android系统非应用层软件的管理和优化", 计算机工程与设计, no. 05, 16 May 2016 (2016-05-16) *
郑冬;刘逢清;: "基于灵活栅格光网络的节点聚合虚拟映射算法", 光通信技术, no. 06, 4 April 2019 (2019-04-04) *

Also Published As

Publication number Publication date
CN112988137B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
CN109344230B (zh) 代码库文件生成、代码搜索、联结、优化以及移植方法
US9207933B2 (en) Identifying authors of changes between multiple versions of a file
CN109284145A (zh) 多语言配置文件的生成和展示方法及装置、设备和介质
CN111143368B (zh) 一种关系型数据库数据对比方法及系统
CN106844307B (zh) 一种基于标记实现Excel转Word的系统及方法
US7103885B2 (en) Comment driven processing
CN105793818A (zh) 源代码翻译
JP2006268299A (ja) ソフトウェア開発支援システム
CN110866024B (zh) 一种矢量数据库增量更新方法及系统
CN112347142B (zh) 数据处理方法及装置
GB2365548A (en) A method for automatically indexing engineering drawings through their associated text
CN110737437A (zh) 一种基于代码集成的编译方法和装置
CN115293124A (zh) 软件工程化文档自动生成方法及装置
Dong et al. Splitting, renaming, removing: a study of common cleaning activities in jupyter notebooks
CN111638930A (zh) 基于shell配置iOS多语言脚本方法及系统
CN109947711B (zh) 一种对ios项目开发过程中的多语言文件自动化管理方法
CN104699664A (zh) 一种模板独立的排版系统及方法
CN112988137A (zh) 一种类文件导入代码管理系统及方法
CN113326063B (zh) 数据处理方法、电子设备及存储介质
CN113221507B (zh) 文档编辑操作同步方法、计算设备及存储介质
CN110795915A (zh) xml文件批量修改方法、系统、设备和计算机可读存储介质
CN105426676A (zh) 一种钻井数据处理方法和系统
CN101661277A (zh) 用于数控机床的零件加工方法和装置
CN112115159B (zh) 一种sql语句的生成方法、装置、电子设备和存储介质
CN114841281A (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