使用BigQuery分析GitHub上的C#代码
来源:互联网 发布:淘宝双11后生意不好 编辑:程序博客网 时间:2024/04/30 01:29
一年多以前,Google 在GitHub中提供了BigQuery用于查询的GitHub上的开源代码(open source code on GitHub available for querying),如果这还不够,您可以免费每月运行1TB的查询!
所以在这篇文章中,我将要收集GitHub上的所有我们可以访问的C#源代码。非常简单,只包含C#,而且数据集已经收集完成(在BigQuery中,是按字节读取收费的),称为fh-bigquery:github_extracts.contents_net_cs 并具有
5,885,933 不重复的“.cs”文件
792,166,632 行代码 (LOC)
37.17 GB (37,174,783,891 bytes) 数据
这是一套非常全面的C#源代码!
这篇文章的剩余部分将 尝试 回答以下问题:
Tab或空格?
regions:“应该被禁止”或“在某些情况下使用”?
“K&R” or “Allman”, C#开发者喜欢把它们的大括号放在哪里?(译者注:关于‘K&R’ 与 ‘Allman’,请参考维基百科)
然后转到一些没有争议的C#主题:
哪些using 声明使用最广泛?
哪些NuGet软件包常常被包含在.NET项目中
C#文件一般有多少行代码(LOC)?
使用最广泛的“Exception”是哪一个?
使用“async/await”?
C#开发人员是否喜欢使用“var”关键字?
在我们最终看到Repository:
包含C#代码最流行的Repository是哪一些
在一个Repository中一般有多少个文件?
最受欢迎的C# Class 名称中哪些?
“Foo.cs”,“Program.cs”或其它,最常见的文件是哪些?
如果您想为自己尝试查询(或发现我的错误),那么所有这些查询可以在github上面找到,链接地址。很有可能我的正则表达式遗漏了一些边缘案例,毕竟正则表达式:现在有两个问题:
Tab或空格?
在整个数据集中有5,885,933个文件,但是我们只包括一个从Tab或空格开始的10行以上的文件
显然,C#开发人员(在GitHub上)喜欢空格超过Tab !(我认为一些这可以通过Visual Studio中的事实来解释:默认情况下使用“空格”)。
如果您想了解C#与其它编程语言的比较,请查看40万个GitHub资源库,10亿个文件,14太字节的代码:空格或制表符?。
regions:“应该被禁止”或“在某些情况下使用”?
事实证明,有一个令人印象深刻的712,498 C#文件(总共580万),至少包含一个#region
语句(查询方法),只有超过12%。(我希望很多这些文件已被工具自动生成!)
“K&R” or “Allman” ,C#开发者喜欢把它们的大括号放在哪里?
C#开发人员绝大多数喜欢将打开大括号{
放在当单独的行上(查询方法)
(“同一行初始化实例”包括代码new { Name = "", .. }
,new [] { 1, 2, 3.. }
)
哪些 using 声明 使用最广泛?
这是一个更实质的统计,C#代码中,using
声明 最广泛的语句是哪一些?
显示前10名结果(全部统计结果在这里查看):
但是,当您在Visual Studio中添加新文件时,默认情况下包含前5个,许多人不会删除它们。默认情况下,“AssemblyInfo.cs”中包含的“System.Runtime.InteropServices”和“System.Runtime.CompilerServices”也是一样。
所以如果我们考虑到这一点,调整一下统计规则,前10名的结果是:
最后,using
声明不在System
,Microsoft
和Windows
命名空间的前10名统计结果 :
哪些NuGet软件包常常被包含在.NET项目中
还有一个单独的数据集包含GitHub上的所有‘packages.config’文件,它被称为contents_net_packages_config,有104,808个条目。通过查询,我们可以看到Json.Net是完胜的赢家!
一般C#文件中有多少行代码(LOC)?
C#开发人员是否容易创建巨大的文件,可以为1000的行?
注意Y轴是“代码行”,原始数据。
您是否想知道十大最大的C#文件是哪些呢!
使用最广泛的“Exception”是哪一个?
这里有一些有趣的结果(查询方式),谁知道这么多ApplicationExceptions
被抛出来,NotSupportedException
这么高令人有点担心!
使用“async/await”?
在C#语言中使用async
和await
关键字编写异步代码更容易:
public async Task<int> GetDotNetCountAsync() { // Suspends GetDotNetCountAsync() to allow the caller (the web server) // to accept another request, rather than blocking on this one. var html = await _httpClient.DownloadStringAsync("http://dotnetfoundation.org"); return Regex.Matches(html, ".NET").Count; }
但它使用了多少?使用下面的查询:
SELECT Count(*) count FROM [fh-bigquery:github_extracts.contents_net_cs] WHERE REGEXP_MATCH(content, r'\sasync\s|\sawait\s')
我发现有218,643个文件(总共5,885,933个)至少使用一个async
、await
关键字。
C#开发人员是否喜欢使用“var”关键字?
比async
、await
关键字使用的更少,只有130,590个文件至少有一个var
关键字被使用。
在一个Repository中一般有多少个文件?
90%的Repository(具有任何C#文件)具有95个或更少的文件。95%具有170个文件或更少,99%具有535个或更少的文件。
(Y轴(C##文件)是个数)
根据C#文件数量排名前10的最大Repository如下所示:
最受欢迎的Repository是哪一些(其中有C#代码)?
这次我们将要统计包含至少50个C#文件(查询方式)的最受欢迎的Repository(基于GitHub'stars' ):
有趣的是,第一名是Google Repository!(其中的C#文件是使用.NET中的GRPC库的示例代码)
最受欢迎的C# Class 名称中哪些?
假设我使用正则表达式,最流行的C# class
名称如下:
Yay Foo
,偷偷进入前10!
'Foo.cs','Program.cs'或其它,最常见的文件是哪些?
最后,我们来看看class
使用的不同的名称,就像using
声明作为Visual Studio默认模板一样:
原文:《Analysing C# code on GitHub with BigQuery》http://mattwarren.org/2017/10/12/Analysing-C-code-on-GitHub-with-BigQuery/
翻译:Sweet Tang
本文地址:http://www.cnblogs.com/tdfblog/p/Analysing-C-code-on-GitHub-with-BigQuery.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
- 使用BigQuery分析GitHub上的C#代码
- 更新github上的代码
- 使用GitBash向gitHub上同步代码
- 在macbook上使用github上传代码
- 使用TortoiseGit上传代码到Github上
- 使用Git在GitHub上管理代码
- GitHub的使用(上)
- 工作上github的使用
- Eclipse导入Github上的Robotium源码进行代码分析的步骤
- Eclipse导入Github上的Robotium源码进行代码分析的步骤
- Eclipse导入Github上的Robotium源码进行代码分析的步骤
- Github上更新自己Fork的代码
- Github上更新自己Fork的代码
- 【python学习.Github上的代码】
- Github上更新自己Fork的代码
- GitHub上更新自己Fork的代码
- 读github上的爬虫代码(html_downloader)
- Github上更新自己Fork的代码
- Java中的IO流
- _CrtIsValidHeapPointer 错误
- Linux 下的Setuid命令的用法和功能
- ubuntu linux 本地搭建homeland
- 添加用户判断
- 使用BigQuery分析GitHub上的C#代码
- Microsoft加入量子计算的竞争
- Azure Cosmos DB技术性解读
- Ubuntu系统下装Atheros网卡搜索不到wifi问题
- VisualSVN错误 Cannot query proxy blanket解决办法
- java算法基础--二分查找
- Android Framework中引入第三方框架jar包
- 多线程进阶InheritableThreadLocal
- 三分熟博士生の阅读理解与问答数据集 | 论文集精选 #03