CN112115376A - 一种面向开源社区开发者的画像构建方法 - Google Patents
一种面向开源社区开发者的画像构建方法 Download PDFInfo
- Publication number
- CN112115376A CN112115376A CN202010895131.6A CN202010895131A CN112115376A CN 112115376 A CN112115376 A CN 112115376A CN 202010895131 A CN202010895131 A CN 202010895131A CN 112115376 A CN112115376 A CN 112115376A
- Authority
- CN
- China
- Prior art keywords
- developer
- code
- developers
- programming
- open source
- 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.)
- Pending
Links
- 238000010276 construction Methods 0.000 title claims abstract description 18
- 238000004458 analytical method Methods 0.000 claims abstract description 35
- 230000000694 effects Effects 0.000 claims abstract description 18
- 238000007405 data analysis Methods 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 241000282836 Camelus dromedarius Species 0.000 description 3
- 241000270295 Serpentes Species 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012358 sourcing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9536—Search customisation based on social or collaborative filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种面向开源社区开发者的画像构建方法,包括以下步骤:从开源社区平台获取开发人员的相关数据,包括个人基本信息及代码仓库;根据获取的代码仓库,通过web数据分析获取开发人员的star/watch/fork数量、关注者以及活动,通过文本分析获取开发者的专长、编程风格,通过代码分析获取编程偏好和代码统计量;基于开发者画像模型,根据个人基本信息和上述分析所得的各类编程相关属性值,得到开发者画像。本发明可用于开源社区平台,平台的管理者及使用人员可以利用本发明构建开发者画像,并可以将所构建的画像直接显示在网页上。
Description
技术领域
本发明涉及画像构建,具体涉及一种面向开源社区开发者的画像构建方法。
背景技术
开源社区平台正在蓬勃发展。截至2019年5月,GitHub报告拥有超过3700万用户和超过1亿个代码仓库(包括至少2800万个公开代码仓库)。开源平台成功的主要原因之一是它们为世界各地的开发人员提供了一种协作的方式。虽然我们都知道协作者之间的了解是成功协作的关键,但现有的开源平台并不能为开发人员提供足够的便于了解的信息以使其彼此快速了解。
例如对于GitHub中开发人员的信息,可以将显示的信息大致分为三类。第一类主要是关于开发者的基本信息,例如,用户名、位置和组织。第二类概述了开发人员的代码仓库,例如,代码仓库、星号和固定的代码仓库的数量。第三类显示开发者的历史信息,即贡献活动。通过这些普遍的简单信息,我们可以粗略地了解开发人员。但却无法从现有开源社区平台上的这些概要信息中了解开发人员有关软件开发的特征,例如编程风格和专长领域。一种选择是,可以手动浏览所有开发人员的代码仓库来了解开发人员,但这既麻烦又费时。另一个好的选择是分析开发人员的代码并自动总结特征。
已有一些工作专注于分析代码以总结编程风格或约定,例如从代码仓库学习编程风格并提出改进风格使其保持一致的方法,这种方法根据学习到的风格,可以建议局部变量的命名。也有通过学习现有代码仓库为方法和类建议命名的方法。另外,在编写代码时,开发人员会将模式结合在一起,例如API协议或数据结构遍历。根据这些信息提出了用于挖掘语义循环模式代码的技术。还有诸如Pylint和AStyle之类的工具,它们检查代码格式是否遵守某些约束(例如,遵循Camel大小写的标识符名称)。但是,这些研究工作和工具仅专注于代码特征的一个或多个方面,无法为理解开发人员提供足够的信息。
为了促进对开发者的快速了解,需要对开发者进行画像刻画。这样可以更快速地了解开发人员以促进软件开发中的更好协作,开发者画像是包含开发人员关键编程特征的摘要。但目前仍然没有这样的技术可以为开源社区平台上的软件开发者构建画像。而简明扼要的开发者画像可以带来很多好处。从被描绘的开发人员的角度来看,通过检查自己的画像,他们可以更好地理解编程风格并发现可能被忽视的潜在的编程习惯问题。编程风格在软件开发中至关重要。例如,不同开发人员的代码风格不一致将使合并请求合并的过程需要更多的精力。从其他开发人员的角度来看,他们可以从开源社区平台上的公开画像中更好地了解他们需要认识的开发人员,以进行更有效的协作。另外,开发人员的画像在协作软件开发中具有广泛的潜在应用,例如针对开发人员的个性化代码推荐和众包中的编程任务分配。通过构建开发人员的画像可帮助开发人员在开源社区平台上相互理解和协作。
发明内容
发明目的:针对现有技术的不足,本发明提出一种面向开源社区开发者的画像构建方法,可以促进对开发人员的快速了解,帮助开发人员在开源社区平台的相互理解和协作。
技术方案:一种面向开源社区开发者的画像构建方法,包括以下步骤:
从开源社区平台获取开发人员的相关数据,包括个人基本信息及代码仓库;
根据获取的代码仓库,通过web数据分析获取开发人员的star/watch/fork数量、关注者以及活动,通过文本分析获取开发者的兴趣、专长、编程风格,通过代码分析获取开发者的编程偏好和代码统计量;
基于开发者画像模型,根据个人基本信息和上述分析所得的各类属性值,得到开发者画像。
进一步地,所述通过web数据分析获取开发人员的star/watch/fork数量、关注者以及活动包括:
根据开发人员对代码仓库的贡献程度,将代码仓库中star/watch/fork的总数分配给开发人员,然后,通过将开发人员从所有代码仓库中获得的star/watch/fork的数量分别相加,得到开发人员的star/watch/fork数量;
开发人员的关注者以及活动从开源社区平台该开发人员的个人web页面直接获得。
进一步地,所述通过文本分析获取开发者的兴趣、专长、编程风格包括:
从开发人员的代码仓库,以及该开发人员所关注的其他开发人员的代码仓库中,获取README文件,利用自动摘要算法从README文件中获得第一摘要/关键字,作为开发人员的兴趣值;
提取开发人员代码仓库中的每个代码文件的开头的注释,收集开发人员使用的软件包的名称和描述,利用自动摘要算法从上述注释、名称和描述中获得第二摘要/关键字,作为开发人员的专长;
使用针对不同命名风格的特点预先定义的正则表达式来匹配开发人员的标识符命名风格,得到开发人员的编程风格。
进一步地,所述通过代码分析获取编程偏好和代码统计量包括:
建立一个抽象语法树AST,以定义程序的结构;
在AST的基础上构建程序结构接口PSI树,添加用于处理特定语言构造的语义和方法;
基于代码仓库中代码文件的PSI树,获得代码仓库的语法结构;
对PSI树进行分析,得到开发人员的编程偏好、代码统计量。
进一步地,所述开发者画像模型包括个人信息、编程技能和影响力三个维度,每个维度包含相应的属性,其中所述个人信息维度的属性包括开发人员的名字、组织、位置;所述编程技能维度的属性包括开发人员的兴趣、专长、编程风格、编程偏好和代码统计量;所述影响力维度的属性包括开发人员拥有的代码仓库数量,开发人员获得的star、watch以及fork的数量,开发人员的关注者数量以及由开发人员执行的活动。
进一步地,所述方法还包括:将开发者画像模型存储到数据库,并通过web页面进行展示。
本发明具有以下有益效果:
1、提供了一个多维和可扩展的开发者画像模型,该模型旨在刻画开发人员的各种本质特征,与现有开源社区平台上的开发人员的信息相比,该模型蕴含的信息更为丰富;
2、提供了一种构造开发者画像的方法。利用文本分析、web数据分析和代码分析技术在开源社区平台上分析开发人员的各种数据以构建画像。构建的画像可以帮助开发者之间更快速地了解,也可以帮助项目管理人员管理开发者分配任务。
附图说明
图1为本发明实施例的开发者画像构建方法流程图;
图2为本发明实施例代码分析中使用的PSI树的一个简单示例;
图3为本发明实施例的开发者画像展示;
图4为本发明实施例获取的开发者画像模型的部分信息。
具体实施方式
下面结合附图对本发明的技术方案作进一步说明。
本实施例中,结合一个具体的开源社区平台上的开发者,阐述本发明所提画像构建方法的具体实施过程。在以下描述中,开发人员、开发者是同一个含义。参照图1,方法包括以下步骤:
步骤1:构建开发者画像模型并从开源社区平台上获取开发人员的相关数据;
综合现有开源社区平台上的信息,本发明提出一种多维度开发者画像模型,具体涉及三个维度,包括个人信息、编程技能和影响力,在每个维度上都有一系列的属性值,属性值的集合刻画了开发人员的画像。其中,开发人员的基本信息包括开源社区平台上开发人员的用户名、开发人员所属的组织以及开发人员的位置和兴趣。其中,开发者的兴趣特别有用。例如,平台可以使用此属性为开发人员提供个性化的代码仓库推荐服务。另外,其他开发人员可以告诉开发人员是否对项目感兴趣并愿意参与。开发者的兴趣可以从两个方面进行总结:开发者的关注列表和开发者starred/forked的代码仓库,因为开发者需要主动发起starred/forked操作。这个方面的信息可以帮助我们对开发人员建立初步的了解。编程技能中的属性与代码相关,并且可以反映开发人员在编程中的专业能力。代码内容丰富,包含很多属性,并且为了了解感兴趣的属性,本发明中将它们进一步分为几组,分别是专长、编程风格、编程偏好和代码统计量。专长反映了开发人员擅长的方面,例如编程语言和应用程序域(例如Android应用程序或web开发)。用于确定开发人员的专长所用的信息与确定开发人员兴趣所用的信息相似。编程风格描述了一组规则或准则,着重于开发人员在编写源代码时使用的代码外观。编码偏好表示的是在实现功能有多种选择时,开发人员倾向于选择的选项。代码统计量是从代码度量中得出的属性。影响力这一维度中的属性包括开发人员拥有的代码仓库数量,开发人员获得的点赞(star)、关注(watch)以及复刻(fork)的数量,开发人员的关注者数量以及由开发人员执行的活动(例如,代码仓库的创建和提交(commit))。获取的原始相关数据就是开发者在开源社区中保存的网络信息(如个人主页信息和近期活动)以及他们的代码仓库。
在实施例中,通过在GitHub上选择了一个名为TeslaZY的开发人员,并获取了他的相关数据,包括个人信息、社交信息及代码仓库信息。
步骤2:根据步骤1得到的数据以及开发者画像模型,通过web数据分析获取开发者TeslaZY画像中相关属性的值,这些属性包括拥有的代码仓库、star/watch/fork数量、关注者以及活动。
在描述开发人员的画像模型中,有许多属性需要填充其值。其中,一些属性,例如开发人员的个人信息,可以通过Web数据分析技术从Github抓取。其他属性,尤其是编程技能方面的属性,由于在开源社区平台上经常被忽略,因此无法在GitHub上直接获得。为了获得这些属性的值,本发明中建议使用其他两种分析技术:文本分析和代码分析。第一种技术是在分析代码的相关属性(例如风格)时将其视为纯文本。第二种分析技术将代码视为编程语言的产物,并利用代码的结构信息来获取相关属性(如编码偏好)的值。
开发者画像中的许多属性,包括个人信息类别下的名字、组织、位置以及影响类别下的代码仓库,star/watch/fork,关注者和活动,都可以通过网络数据分析获得。其中简单的可以直接从GitHub获取,包括开发人员的名字、组织、位置、关注者和活动。对于其他属性,需要进一步分析来自web的数据以获得其值。在网络数据抓取过程中,还会收集数据(例如,源代码和代码仓库标签),用于通过文本分析和代码分析技术。
开发者的GitHub个人资料页面上列出的代码仓库包含由开发人员创建或fork的仓库。通常,对于这两种代码仓库,开发人员将具有不同程度的参与和贡献。代码仓库只能由一个开发人员创建,并且可以由许多开发人员fork。因此,在计算开发人员代码仓库的数量时,对开发人员创建和fork的代码仓库进行区分。同时,在计算开发人员从其代码仓库中获得的star/watch/fork时,也应考虑这一点。开发人员在GitHub个人资料页面上的star数是开发人员给出的star数,而不是开发人员获得的star。要计算star/watch/fork的数量,需要从GitHub上代码仓库页面中检索这些信息。但是代码仓库可能由几个开发人员维护,他们都是代码仓库的贡献者。因此,本发明建议根据开发者的贡献程度分配代码仓库的数量。
对于开发人员的每个代码仓库,收集该仓库的star/watch/fork的数量,同时,对贡献者的数量进行爬取并分析他们对该代码仓库的贡献程度。贡献程度是根据开发人员在代码仓库中的活动(例如,提交)加权计算的,即根据他们的活动数量按比例分配整个项目的点赞、关注与复刻数。开发人员对资源库的贡献越多,应归功于该开发人员的star/watch/fork应该越多。因此,当计算开发人员从代码仓库中获得的star/watch/fork时,分别根据开发人员对代码仓库的贡献程度,将代码仓库中star/watch/fork的总数分配给开发人员。然后,通过将开发人员从所有代码仓库中获得的star/watch/fork的数量分别相加,得到开发者画像所需的这些属性的值。
步骤3:通过文本分析对获取的源数据进行处理,通过文本分析处理开发者TeslaZY的源数据,获取相关属性的值,包括开发者的兴趣、专长和编程风格。
开发人员的兴趣是一种非常有用的信息。平台可以使用此信息为开发人员提供个性化的代码仓库推荐服务,其他开发人员可以告诉开发人员是否对项目感兴趣或愿意参与。本发明中建议从两种类型的来源中提取一组关键字,以概括开发者的兴趣:开发者的关注列表以及开发者starred/forked的代码仓库,因为开发人员需要对其进行关注,starred/forked的主动操作。具体来说,对于要为其创建画像的开发人员小A,可以首先找到开发人员小A的关注列表中的那些开发人员如小B、小C等。同时,一个开发者关注另一个开发者的原因在很大程度上是由于另一个开发者的代码仓库。因此,还需要获取该开发人员关注的其他开发人员的代码仓库。考虑到此类仓库的数量可能很大,因此本发明中选择被关注的开发人员创建并在开源社区平台上流行的代码仓库(例如,需要拥有超过五颗星或由五名以上开发者watched/forked)。同时,本发明中还选择了由开发人员执行starred/forked的仓库。从所有这些仓库中,可以收集它们的README文件,这些文件描述了仓库的工作及其标签。值得注意的是,虽然这些数据是通过网络获取的,但使用文本分析技术进行了分析。
为了从收集的代码仓库中获得开发者兴趣的简洁描述,本发明中应用了文本摘要技术,该技术旨在通过代码仓库的README文件和标签上生成简洁的摘要/关键字,同时保留关键信息内容。由于TextTeaser是一种自动摘要算法,结合了自然语言处理和机器学习的功能,同时可以产生令人满意的结果,因此本发明使用TextTeaser来获得摘要/关键字,将其用作开发人员的兴趣值。
开发人员的专长和兴趣的提取之间存在相似之处。但是,要知道开发人员擅长什么,就需要分析开发人员所做过的代码仓库,而不是分析开发人员所关注的代码仓库。此外,除了开发人员代码仓库中的README文件之外,本发明还研究了开发人员的源代码文件以分析其专长领域。具体来说,首先检查开发人员在实现代码仓库中使用的编程语言,以了解开发人员熟悉哪种语言。然后,对于开发人员代码仓库中的每个代码文件,提取文件开头的注释,因为它们描述了代码的功能和域的目标。开发人员使用的软件包还可以反映开发人员的知识领域。因此,本发明中将开发人员在源代码中导入的软件包提取到代码文件中,然后收集其名称和描述。此处,文本摘要技术再次应用于所有提取的文本以摘取关键字。请注意,在摘要中,来自信誉良好的代码仓库(例如,具有更多star)的开发人员的文本分配的权重大于star数量少的权重,这与star数量成正比,因为信誉良好的代码仓库获得了其他开发人员的更多认可,并且可以更好地反映了开发人员的专长领域。
编程风格属性主要与开发人员采用的代码的命名和格式有关。通常认为是编码风格的一部分的内容包括命名和格式化,例如用户定义的标识符(例如,函数、过程和变量名)的风格和拼写以及在运算符和关键字周围使用空白等。编码风格在特定程序中使用的代码可以由开发人员形成,也可以由开发人员采用的一些通用编码实践派生(例如,不要将语句与if/elseif/else条件放在同一行上以形成一个单行)。现有工作中主要有三种主流命名样式,分别是Lower Camel case、Pascal case和Snake case。Lower Camel case将大写第一个单词之后的所有单词并删除空格来组合单词。Pascal case通过将所有单词(甚至第一个单词)都大写并删除空格来组合单词。Snake case通过用下划线替换每个空格来组合单词,并且所有字母均大写。为了标识开发人员的常用命名风格,本发明建议使用正则表达式来匹配开发人员的标识符命名风格。正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。因此,针对不同命名风格的特点(例如第一个字符是否大小写或者能否包含特殊字符),可以定义出不同的正则表达式来识别不同的风格。此过程需要识别哪些字符串是标识符。
步骤4:通过代码分析对获取的源数据进行处理,获取开发者画像模型中相关属性值,包括编程偏好和代码统计量。
现有的开源社区平台仅存储开发人员的代码,但缺乏对其必要的分析。因此,与代码相关的信息通常不会显示在平台上。而代码蕴含的信息丰富且有用,本发明提出在构造开发人员画像时分析代码。由于需要的大量信息与代码逻辑或结构有关,因此不应将代码分析为纯文本,而应作为程序进行分析。代码分析旨在获得两种属性,即编码偏好和代码统计量。开发人员可以在平台上有几个代码仓库,每个代码仓库包含不同的代码。在分析开发人员的代码时,可以以代码仓库为分析单位,然后结合每个代码仓库的分析结果以形成开发人员代码的完整视图。
编程偏好的一种表现形式是应用程序编程接口(API)的选择,例如在HashMap和Hashtable之间进行选择。在更复杂的情况下,可以是优先选择实现相同功能的API序列。开发人员代码仓库中经常出现的代码段也可以视为编码偏好。代码统计量与代码大小或代码结构有关。例如,就代码大小而言,这些属性可以是代码行数、类的数量、类的平均长度。通过查看这些属性,可以了解开发人员所参与的项目的规模,并了解开发人员是否具有参与大型项目的经验以及管理大型代码的能力。就代码结构而言,属性通常与结构复杂度(例如,圈复杂度)有关。
为了获得其值,本发明中开发了一种分析器,当然在可能的情况下也可以使用现有的分析工具。类似于程序分析,代码分析仍然需要获取代码的结构和控制信息。为了实现此目的,本发明基于IntelliJ IDEA提供的程序结构接口(ProgramStructure Interface,PSI)开发了轻量级代码解析器。PSI是IntelliJ平台中的一层,负责解析文件并创建可以支持许多代码分析功能的语法和语义代码模型。解析过程分为三个步骤。首先,建立一个抽象语法树(Abstract Syntax Tree,AST),以定义程序的结构。其次,在AST的基础上构建PSI树,添加用于处理特定语言构造的语义和方法。PSI树表示代码文件的语法结构,从类声明到关键字和注释。本发明中采用开源工具Grammar-Kit来实现这两个步骤。第三,基于代码仓库中代码文件的PSI树,可以获得代码仓库的语法结构。通过对PSI树进行分析,可以得到编程偏好、代码统计量的属性值。
图2展示了简化的PSI树的结构。该树包含代码中的元素及其关系,以及代码仓库中代码文件之间的关系。IntelliJ IDEA中的PSI树支持各种编程语言(例如Java、C++和C\#)。通过访问树,可以获得提取相关属性值所需的信息。
步骤5:通过获取的一系列的属性值,根据开发者画像模型,可以得到开发者画像,将分析获得的开发者画像存储在数据库中,并通过web页面展示。以便于直观了解。
图3与图4展示的是针对开发者TeslaZY所获取的开发者画像及其展示。图中选择了一些重要的展示对象。图3左侧部分显示了TeslaZY的概述,例如帐户创建日期,他的代码仓库以及他使用的编程语言。核心部分主要是关于开发人员的影响以及GitHub上的最新活动。右侧部分使用词用来显示开发人员的专长和兴趣领域。
由于开发人员的与编码有关的信息(包括编码风格、编码偏好和代码统计量)可能非常丰富,因此可以在新页面上显示这些信息,如图4所示。此界面涵盖了四种与编码有关的信息。编码风格显示在左下方。具体在类、方法和字段级别上显示三种命名样式的频率。同时,还列出了不同风格样式的使用频率。代码统计量在右上角给出。可以选择开发人员的不同代码仓库来检查仓库的统计信息(例如,文件、类、代码行和注释的数量),也可以从右侧的方框图中查看开发人员所有代码仓库的总体统计信息。右下角显示了开发人员的编码偏好。列出了开发人员的常用方法,数据结构和API序列,并且每个项目符号对应一个偏好。可以通过单击光点来检查偏好的详细信息,例如API序列中的方法。
本发明以开源社区上开发者的信息为来源,提出了一种构建开发者画像模型的方法。开发者画像模型囊括了开发者的基本情况、编程技能以及社区影响力等信息。通过该模型可以快速地了解开发者,并可为其提供个性化的推荐服务,同时开发者间也可以快速了解彼此以更有效地开展合作。由于有关开发者画像的信息来自多个来源(例如,文本描述、Web数据和代码),因此本发明采用文本分析、Web数据分析和代码分析技术从开源社区平台上托管的异构的多源数据来构造开发者画像。本发明可用于开源社区平台,平台的管理者及使用人员可以利用本发明构建开发者画像,并可以将所构建的画像直接显示在网页上。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种面向开源社区开发者的画像构建方法,其特征在于,包括以下步骤:
从开源社区平台获取开发人员的相关数据,包括个人基本信息及代码仓库;
根据获取的代码仓库,通过web数据分析获取开发人员的star/watch/fork数量、关注者以及活动,通过文本分析获取开发者的兴趣、专长、编程风格,通过代码分析获取开发者的编程偏好和代码统计量;
基于开发者画像模型,根据个人基本信息和上述分析所得的各类属性值,得到开发者画像。
2.根据权利要求1所述的面向开源社区开发者的画像构建方法,其特征在于,所述通过web数据分析获取开发人员的star/watch/fork数量、关注者以及活动包括:
根据开发人员对代码仓库的贡献程度,将代码仓库中star/watch/fork的总数分配给开发人员,然后,通过将开发人员从所有代码仓库中获得的star/watch/fork的数量分别相加,得到开发人员的star/watch/fork数量;
开发人员的关注者以及活动从开源社区平台该开发人员的个人web页面直接获得。
3.根据权利要求1所述的面向开源社区开发者的画像构建方法,其特征在于,所述通过文本分析获取开发者的兴趣、专长、编程风格包括:
从开发人员的代码仓库,以及该开发人员所关注的其他开发人员的代码仓库中,获取README文件,利用自动摘要算法从README文件中获得第一摘要/关键字,作为开发人员的兴趣值;
提取开发人员代码仓库中的每个代码文件的开头的注释,收集开发人员使用的软件包的名称和描述,利用自动摘要算法从上述注释、名称和描述中获得第二摘要/关键字,作为开发人员的专长;
使用针对不同命名风格的特点预先定义的正则表达式来匹配开发人员的标识符命名风格,得到开发人员的编程风格。
4.根据权利要求1所述的面向开源社区开发者的画像构建方法,其特征在于,所述通过代码分析获取编程偏好和代码统计量包括:
建立一个抽象语法树AST,以定义程序的结构;
在AST的基础上构建程序结构接口PSI树,添加用于处理特定语言构造的语义和方法;
基于代码仓库中代码文件的PSI树,获得代码仓库的语法结构;
对PSI树进行分析,得到开发人员的编程偏好、代码统计量。
5.根据权利要求1所述的面向开源社区开发者的画像构建方法,其特征在于,所述开发者画像模型包括个人信息、编程技能和影响力三个维度,每个维度包含相应的属性,其中所述个人信息维度的属性包括开发人员的名字、组织、位置;所述编程技能维度的属性包括开发人员的兴趣、专长、编程风格、编程偏好和代码统计量;所述影响力维度的属性包括开发人员拥有的代码仓库数量,开发人员获得的star、watch以及fork的数量,开发人员的关注者数量以及由开发人员执行的活动。
6.根据权利要求1所述的面向开源社区开发者的画像构建方法,其特征在于,所述方法还包括:将开发者画像模型存储到数据库,并通过web页面进行展示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010895131.6A CN112115376A (zh) | 2020-08-31 | 2020-08-31 | 一种面向开源社区开发者的画像构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010895131.6A CN112115376A (zh) | 2020-08-31 | 2020-08-31 | 一种面向开源社区开发者的画像构建方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112115376A true CN112115376A (zh) | 2020-12-22 |
Family
ID=73805137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010895131.6A Pending CN112115376A (zh) | 2020-08-31 | 2020-08-31 | 一种面向开源社区开发者的画像构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112115376A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185379A (zh) * | 2022-11-17 | 2023-05-30 | 北京东方通科技股份有限公司 | 一种对代码托管平台进行优化的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290205A1 (en) * | 2012-04-30 | 2013-10-31 | Gild, Inc. | Recruiting service graphical user interface |
CN107491299A (zh) * | 2017-07-04 | 2017-12-19 | 扬州大学 | 面向多源软件开发数据融合的开发者画像建模方法 |
-
2020
- 2020-08-31 CN CN202010895131.6A patent/CN112115376A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290205A1 (en) * | 2012-04-30 | 2013-10-31 | Gild, Inc. | Recruiting service graphical user interface |
CN107491299A (zh) * | 2017-07-04 | 2017-12-19 | 扬州大学 | 面向多源软件开发数据融合的开发者画像建模方法 |
Non-Patent Citations (1)
Title |
---|
WENHUA YANG等: "Developer portraying: A quick approach to understanding developers on OSS platforms", 《INFORMATION AND SOFTWARE TECHNOLOGY》, vol. 125, pages 1 - 13 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185379A (zh) * | 2022-11-17 | 2023-05-30 | 北京东方通科技股份有限公司 | 一种对代码托管平台进行优化的方法 |
CN116185379B (zh) * | 2022-11-17 | 2023-09-22 | 北京东方通科技股份有限公司 | 一种对代码托管平台进行优化的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3549013B1 (en) | Spreadsheet-based software application development | |
JP7490729B2 (ja) | スプレッドシートに基づくソフトウェアアプリケーションの開発 | |
US11275815B2 (en) | System and method for integrating user feedback into website building system services | |
CN102385483B (zh) | 基于上下文的用户接口、搜索和导航 | |
US6356903B1 (en) | Content management system | |
US8370352B2 (en) | Contextual searching of electronic records and visual rule construction | |
CN110134613B (zh) | 一种基于代码语义及背景信息的软件缺陷数据采集系统 | |
CN110147544B (zh) | 一种基于自然语言的指令生成方法、装置以及相关设备 | |
WO2002005088A1 (en) | Method and apparatus for extracting knowledge from software code or other structured data | |
AU2018376913A1 (en) | System and method for the generation and editing of text content in website building systems | |
Wielemaker et al. | Using SWISH to realize interactive web-based tutorials for logic-based languages | |
US20110161934A1 (en) | Generating and monitoring data items | |
CN118227106A (zh) | 代码补全方法、装置、电子设备和介质 | |
CN112115376A (zh) | 一种面向开源社区开发者的画像构建方法 | |
US20220229970A1 (en) | Multi-faceted site evaluator integrating user defined evaluation engines | |
Holmes | Pragmatic software reuse | |
Fraternali et al. | Conceptual-level log analysis for the evaluation of web application quality | |
CN114186974A (zh) | 一种多模型融合的开发任务关联方法、装置、设备及介质 | |
Bernardi et al. | Web applications design evolution with UWA | |
Kabanda et al. | Extending model driven architecture benefits to requirements engineering | |
Hess et al. | Generating automatically class comments in Pharo | |
Schröder | Building Knowledge Graphs from Messy Enterprise Data | |
US20230359814A1 (en) | System and method for creation and handling of configurable applications for website building systems | |
Granberg et al. | Getting Graphical with Knowledge Graphs: A proof-of-concept for extending and modifying knowledge graphs | |
Volk | Visual Analysis of TeX Repositories |
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 |