The present invention discloses a system and method for finding a candidate for a qualified name of at least one simple name in a source code file. A source code file with at least one simple name that needs to correspond to a qualified name can be received. The source code file can be parsed to determine the simple name in the file and the qualified name in the file. For at least one simple name that needs corresponding qualified name, we can search the source code diagram to find out the potential candidate qualified name corresponding to the at least one simple name. After receiving the list of potential candidate names from the source code, the list can be output to the user, so that the user can select the appropriate qualified name. For the qualified name, you can also choose to build dependencies.
【技术实现步骤摘要】
【国外来华专利技术】大规模源代码存储库中的自动导入及依赖性
技术介绍
开发者经常构建包含外部代码或库的复杂软件应用。例如,开发者可能希望在其应用中包括人员列表。开发者可能代替定义他自己的列表对象而包括来自外部包的列表类。在如图1所示的这个示例中,开发者可以在他的代码中包括来自标准库的列表,诸如“java.util.List”。“java.util.List”是通过java.util包可公开获得的有序集合类。一旦列表被导入开发者的源代码文件中,开发者便可以简单地利用简单名“List”来引用该列表,而不必在各处实例化或使用该列表时使用完全合格名(qualifiedname)“java.util.List”。例如,在图1的行3中,代码仅涉及简单名“List”,而不涉及合格名“java.util.List”。虽然使用标准集成开发环境(IDE)能够使定义合格名的包、库或外部代码导入源代码的过程对于小规模代码库简单直接,但大规模代码库对于标准IDE而言具有过多外部依赖性而无法有效率地找出称为合格名的适当全名或者依赖性的适当构建系统构造。常规的系统通过查看整个代码库并且试图确定适当的包、库或其他外部代码来尝试实时找出合格名。这个过程非常耗时。使用这种方法根本无法在合理的时间内处理大量的源代码。正如本专利技术人所认识到,期望能够快速地找出合格名的候选以导入适当的包、库或外部代码,以用于源代码中存在的简单名引用以及提供合格名的构建系统依赖性。
技术实现思路
本说明书描述有关针对源代码文件——例如Java语言的源代码文件——中的至少一个简单名找到合格名的候选的技术。一般而言,本说明书中所述的主题的一方面能 ...
【技术保护点】
一种用于找出源代码文件中的至少一个简单名的合格名的候选的计算机实现的方法,所述方法包括:接收具有需要对应合格名的至少一个简单名的源代码文件;解析所述源代码文件以确定所述文件中的简单名和所述文件中的合格名;针对需要对应合格名的至少一个简单名,搜索源代码图以找出与所述至少一个简单名相对应的潜在候选合格名;以及在接收到来自所述源代码图的潜在候选合格名的列表后,输出所述列表。
【技术特征摘要】
【国外来华专利技术】2015.07.10 US 14/796,6951.一种用于找出源代码文件中的至少一个简单名的合格名的候选的计算机实现的方法,所述方法包括:接收具有需要对应合格名的至少一个简单名的源代码文件;解析所述源代码文件以确定所述文件中的简单名和所述文件中的合格名;针对需要对应合格名的至少一个简单名,搜索源代码图以找出与所述至少一个简单名相对应的潜在候选合格名;以及在接收到来自所述源代码图的潜在候选合格名的列表后,输出所述列表。2.根据权利要求1所述的计算机实现的方法,进一步包括:一旦合格名被选择,则确定特定合格名的构建依赖性以及构建目标。3.根据权利要求1或2所述的计算机实现的方法,进一步包括:在输出所述列表之前,用附加信息过滤或充实所述列表。4.根据权利要求3所述的计算机实现的方法,其中,过滤或充实所述列表包括:在输出所述列表之前,基于其他源代码文件已经使用特定类型的合格名的次数来过滤所述列表。5.根据权利要求3或4所述的计算机实现的方法,其中,过滤或充实所述列表包括:基于源代码存储库的其他部分中已经使用特定合格名的频率来排名所述列表。6.根据权利要求3至5中的任一项所述的计算机实现的方法,其中,过滤或充实所述列表包括:确定合格名包是否从其中与所述合格名潜在相对应的简单名当前正被引用的源代码文件可见;以及响应于确定所述合格名包从所述源代码文件可见,提供所述合格名包的名称作为潜在候选合格名。7.根据权利要求3至6中的任一项所述的计算机实现的方法,其中,过滤或充实所述列表包括:确定合格名包能够向构建过程增添的复杂度,包括为了构建所述源代码文件所增加的时间或资源;以及响应于确定合格名包向所述构建过程增添的复杂度是可承受的量,将所述合格名包的名称添加到潜在候选合格名的所述列表中。8.根据任一项前述权利要求所述的计算机实现的方法,进一步包括:如果所述列表仅包含一个潜在合格名,则无需用户交互便自动选择所述合格名。9.根据权利要求1至7中的任一项所述的计算机实现的方法,进一步包括:提供接口以接收对潜在候选合格名的所述列表中的合格名的选择。10.一种用于找出源代码文件中的至少一个简单名的合格名...
【专利技术属性】
技术研发人员:卡尔米·格鲁什科,
申请(专利权)人:谷歌有限责任公司,
类型:发明
国别省市:美国,US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。