Grank
Grank copied to clipboard
根据项目主体代码进行分类
根据项目主体代码,将所分析的项目分成几类:
- 文档类项目,以 markdown、html 为主体的项目
- 前端类项目,以 javascript、css(及预处理器) 为主体的项目
- 开发类项目,以其它源代码为主体的项目
以上三类项目的开发和活跃度模式相差比较大,应该分别进行排行。
实现思路
- 使用 GraphQL 获取语言的前5~10的语言,参考 GraphQL 如下
{
repository(owner: "lctt", name: "grank") {
name
languages(first:10,orderBy:{field:SIZE,direction:DESC}){
nodes{
id
name
}
}
}
}
-
根据前三或特定顺序来进行分组。建议以排名第一的语言进行排序。比如,JS 语言的不区分 Node 还是前端,统一归为前端。Python 的不区分网站还是cli,统一归为 Python 类型的。
-
数据以各自的列表进行排序。
需要注意的点:
- 可以在导出的 CSV 中添加对应的 type,排序由人工来完成。(也就是输出时带上 type,分析人员通过 Excel / Numbers 之类的软件进行手动实现排序)
- 第一步建议实现按语言划分(即区分 JavaScript 、Java、Php、Python 等语言),后续再考虑综合不同语言的排序来实现(文档类、前端类、开发类)。
正如之前讨论的,我们需要一个记录被采集项目的配置文件,这个配置文件中的配置值与其它途径的配置存在优先级:
- 全局配置,优先级最低
- 程序自动分析的得出的配置,优先级次高
- 数据配置文件中的配置,优先级更高
- 命令行指定的配置,优先级最高
举例一:项目分类
全局配置中不会指定项目分类,所以项目的分类首先是据此 issue 算法的自动分析得出的;然后,如果数据配置文件中有指定该分类,则采用数据配置;如果命令行中强制指定,则采用命令行配置。