使用Go以100美元在专用服务器上处理1000万个项目中的40 TB代码

我编写的Sloc Cloc and Code(scc)命令行工具现已完成,并得到了很多人的支持,它计算了代码行,注释并评估了目录中文件的复杂性。 这里需要一个很好的选择。 该工具计算代码中的分支运算符。 但是什么是复杂性? 例如,如果没有上下文,语句“此文件的难度为10”不是很有用。 为了解决这个问题,我在Internet上的所有来源上运行了scc 。 这也将使您找到我在工具本身中未考虑的一些极端情况。 强大的蛮力测试。

但是,如果我要对世界上所有来源进行测试,则将需要大量的计算资源,这也是一种有趣的体验。 因此,我决定将所有内容都写下来-并出现了这篇文章。

简而言之,我下载并处理了许多资源。

裸体人物:

  • 总库9,985,051
  • 9,100,083个存储库,至少包含一个文件
  • 884968空存储库(无文件)
  • 所有存储库中有3,500,000,000个文件
  • 已处理40736530379379778字节(40 TB)
  • 确定了1,086,723,618,560
  • 816,822,273,469行已识别代码
  • 124382152510空白行
  • 145519192581评论行
  • 根据scc规则的总复杂度: 71884867919
  • scc中发现2个新错误

我们只说一个细节。 如高调的标题所示,没有1000万个项目。 我错过了15,000,所以我将其四舍五入。 我为此表示歉意。

下载所有内容,通过scc并保存所有数据大约花费了五个星期。 然后,要花费49多小时来处理1 TB JSON,并获得以下结果。

另请注意,在某些计算中我可能会弄错。 如果检测到任何错误,我会立即通知您,并提供数据集。

目录



方法论


自启动searchcode.com以来我已经在git,mercurial,subversion等方面积累了超过7,000,000个项目的集合。 那么为什么不处理它们呢? 使用git通常是最简单的解决方案,因此这次我忽略了Mercury和Subversion,并导出了git项目的完整列表。 事实证明,我实际上跟踪了1200万个git存储库,并且可能需要刷新主页以反映这一点。

因此,现在我有1200万个git存储库可供下载和处理。

运行scc时,可以选择JSON格式的输出并将文件保存到磁盘: scc --format json --output myfile.json main.go 结果如下(对于单个文件):

 [ { "Blank": 115, "Bytes": 0, "Code": 423, "Comment": 30, "Complexity": 40, "Count": 1, "Files": [ { "Binary": false, "Blank": 115, "Bytes": 20396, "Callback": null, "Code": 423, "Comment": 30, "Complexity": 40, "Content": null, "Extension": "go", "Filename": "main.go", "Hash": null, "Language": "Go", "Lines": 568, "Location": "main.go", "PossibleLanguages": [ "Go" ], "WeightedComplexity": 0 } ], "Lines": 568, "Name": "Go", "WeightedComplexity": 0 } ] 

有关更大的示例,请参见redis项目的结果: redis.json 。 下面的所有结果都是从这种结果中获得的,没有任何其他数据。

应该记住,scc通常根据扩展名对语言进行分类(除非扩展名是通用的,例如Verilog和Coq)。 因此,如果您保存带有Java扩展名的HTML文件,它将被视为Java文件。 通常这不是问题,因为为什么这样做? 但是,当然,在很大程度上,这个问题变得很明显。 后来,当某些文件伪装成其他扩展名时,我才发现了这一点。

前段时间,我编写了用于生成基于scc的github标记的代码 。 由于该过程需要缓存结果,因此我对其进行了一些更改,以便在AWS S3上以JSON格式缓存它们。

借助lambda上AWS上标签的代码,我导出了一个项目列表,编写了约15行python来清除格式以匹配我的lambda,并提出了要求。 使用python多处理,我将请求并行化为32个进程,以便端点足够迅速地响应。

一切都很棒。 但是,问题在于,首先是成本问题,其次,lambda的API网关/ ALB超时了30秒,因此无法足够快地处理大型存储库。 我知道这不是最经济的解决方案,但我认为价格约为100美元,我可以忍受。 处理完一百万个存储库后,我检查了-成本约为60美元。 由于我对最终的700美元AWS账户的前景不满意,因此我决定重新考虑自己的决定。 请记住,这基本上是用于收集所有这些信息的存储和CPU。 任何数据的处理和导出都会大大提高价格。

因为我已经在AWS上,所以一种快速的解决方案是将URL作为SQS中的消息删除,并使用EC2或Fargate实例将其拉出进行处理。 然后像疯了一样缩放。 尽管有AWS的日常经验,但我始终相信Taco Bell编程原理 。 此外,只有1200万个存储库,因此我决定实施一个更简单(更便宜)的解决方案。

由于澳大利亚的互联网糟糕,因此无法在本地启动计算。 但是,我的searchcode.com会谨慎使用Hetzner的专用服务器。 这些是功能强大的i7 Quad Core 32 GB RAM计算机,通常具有2 TB的存储空间(通常不使用)。 它们通常具有良好的计算能力。 例如,前端服务器大部分时间都计算零的平方根。 那么,为什么不在那里开始处理呢?

这不是真正的Taco Bell编程,因为我使用了bash和gnu工具。 我在Go上编写了一个简单的程序,以运行32个例程,这些例程从通道读取数据,生成git和scc子进程,然后再将输出写入S3中的JSON。 我实际上是首先用Python编写解决方案的,但是在干净的服务器上安装pip依赖项的需求似乎是一个坏主意,并且系统以我不想调试的奇怪方式崩溃。

在服务器上运行所有这些操作会在htop中产生以下指标,并且几个正在运行的git / scc进程(此屏幕快照中未显示scc)假定一切都按预期工作,这在S3中得到了证实。



展示和计算结果


我最近阅读了这些 文章 ,所以我有一个主意,可以借用这些帖子的格式来表示信息。 但是,我还想将jQuery DataTables添加到大型表中以对结果进行排序和搜索/过滤。 因此,在原始文章中,您可以单击标题进行排序,并使用搜索字段进行过滤。

需要处理的数据大小提出了另一个问题。 如何处理1000万个JSON文件,它们在S3存储桶中占用的磁盘空间略大于1 TB?

首先想到的是AWS Athena。 但是由于这种数据集每次查询的成本约为2.50 美元 ,因此我迅速开始寻找替代方案。 但是,如果将数据保存在那里并且很少处理,那么这可能是最便宜的解决方案。

我在公司聊天中发布了一个问题(为什么要单独解决问题)。

一种想法是将数据转储到大型SQL数据库中。 但是,这意味着处理数据库中的数据,然后对它执行几次查询。 另外,数据结构意味着多个表,这意味着外键和索引可提供一定程度的性能。 这似乎很浪费,因为我们可以一口气地处理从磁盘读取的数据。 我也担心创建这么大的数据库。 仅使用数据时,添加索引之前其大小将超过1 TB。

我想看到如何以简单的方式创建JSON,为什么不以相同的方式处理结果? 当然,有一个问题。 从S3中提取1 TB数据将花费很多。 如果程序崩溃,那将很烦人。 为了降低成本,我想在本地提取所有文件并将其保存以供进一步处理。 好的建议:最好不要在一个目录中存储许多小文件 。 这会降低运行时性能,而文件系统则不喜欢这样。

我的答案是另一个简单的Go程序 ,该程序可以从S3中提取文件,然后将其保存在tar文件中。 然后,我可以一次又一次地处理此文件。 该过程本身运行一个非常难看的 Go程序来处理tar文件,因此我可以重新运行查询,而不必一次又一次从S3中提取数据。 我没有在这里使用go例程,这有两个原因。 首先,我不想尽可能多地加载服务器,因此我将自己限制在一个内核上,以使CPU能够正常工作(另一个内核通常锁定在处理器上以读取tar文件)。 其次,我想保证线程安全。

完成此操作后,需要回答一系列问题。 当我提出自己的想法时,我再次运用了集体的思想并与同事建立了联系。 这种融合思想的结果如下。

您可以找到我用来处理JSON的所有代码 ,包括用于本地处理的代码,以及用来准备对本文有用的东西的丑陋的Python脚本 :请不要对此发表评论,我知道代码很丑陋,它是为一次性任务编写的,因为我不太可能再看一遍。

如果要查看我编写的通用代码,请查看scc来源

费用


尝试使用Lambda时,我在计算上花费了大约60美元。 我还没有看过存储S3的成本,但是根据数据的大小,它应该接近25美元。 但是,这不包括传输成本,我也没有看过。 请注意,我在用完水桶后便将其清洗干净,因此这不是固定费用。

但是一段时间后,我仍然放弃了AWS。 那么,如果我想再做一次,实际费用是多少?

我们拥有的所有软件都是免费的和免费的。 因此,无需担心。

就我而言,成本是零,因为我使用了searchcode.com留下的“免费”计算能力。 但是,并非每个人都有这样的免费资源。 因此,我们假设其他人想要重复此操作,并且必须举起服务器。

使用Hetzner最便宜的新型专用服务器 (包括安装新服务器的成本),即可以73欧元的价格完成此任务。 如果您等待并深入研究拍卖部分 ,则可以找到便宜得多的服务器,而无需支付安装费用。 在撰写本文时,我发现了一款​​非常适合该项目的汽车,每月25.21欧元,无安装费。



更好的是,在欧盟以外,增值税将从此价格中扣除,因此您可以再收取10%的税。

因此,如果您在我的软件上从头开始提供此类服务,则如果您有一点耐心或成功的话,它将最终花费高达100美元,而不是多达50美元。 假设您使用服务器的时间少于两个月,足以进行下载和处理。 还有足够的时间来获取1000万个存储库的列表。

如果使用压缩的tar(实际上并不那么困难),则我可以在同一台计算机上处​​理10倍以上的存储库,并且生成的文件仍将保持足够小以适合同一HDD。 尽管此过程可能需要几个月,但因为下载会花费更长的时间。

但是,要远远超过1亿个存储库,就需要某种分片。 不过,可以肯定地说,您将在相同的设备上以我的规模或更大的规模重复此过程,而无需花费太多精力或更改代码。

资料来源


以下是来自以下三个来源的每个项目的数量:github,bitbucket和gitlab。 请注意,这是在排除空存储库之前,因此,该数量超出了下表中实际处理并考虑的存储库数量。

来源数量
的github9680111
比特桶248217
gitlab的56722

如果您阅读这篇文章,我向GitHub / Bitbucket / GitLab员工道歉。 如果我的剧本引起了任何问题(尽管我对此表示怀疑),那么在遇见我时,我可以选择喝一杯。

存储库中有多少个文件?


让我们继续讨论实际问题。 让我们从一个简单的开始。 平均存储库中有多少个文件? 大多数项目只有几个文件或更多文件? 遍历存储库后,我们得到以下时间表:



在此,x轴显示具有文件数量的存储桶,y轴显示具有许多文件的项目数量。 将水平轴限制为一千个文件,因为图形太靠近轴了。

似乎大多数存储库的文件少于200个。

但是,可视化到第95个百分位会显示真实图片呢? 事实证明,在绝大多数(95%)项目中-少于1000个文件。 90%的项目文件少于300个,而85%的文件少于200个。



如果您想自己构建一个图表并且比我做得更好,这是指向JSON中原始数据链接

语言分类是什么?


例如,如果标识了Java文件,则我们将项目中的Java数量增加一个,而对第二个文件则不执行任何操作。 这样可以快速了解最常用的语言。 毫不奇怪,最常见的语言包括markdown,.gitignore和纯文本。

Markdown是最常用的语言;在超过600万个项目中都可以看到,大约占总数的2⁄3。 这是有道理的,因为几乎所有项目都包含README.md,该文件以HTML格式显示在存储库页面中。

完整清单
语言能力项目数量
降价促销6041849
gitignore5,471,254
纯文字3,553,325
Java脚本3408921
的HTML3 397 596
的CSS3037754
执照2 597 330
XML格式2218846
杰森1903569
Yaml1 860 523
巨蟒1424505
壳牌1395199
红宝石1,386,599
爪哇1319091
C头1,259,519
生成文件1215586
Rakefile1 006 022
p992 617
属性文件909631
SVG804946
ç791773
C ++715269
批处理645442
萨斯535341
自动配置505347
目标c503932
CoffeeScript435133
的SQL413,739
佩尔390,775
C#380841
ReStructuredText356922
编译器354,212
较少281286
中央电视台275,143
C ++标题199,245
CMake的173,482
贴片169,078
组装方式165,587
XML模式148511
m4147204
JavaServer页面142,605
Vim脚本134156
斯卡拉132454
目标C ++127797
摇篮126,899
模块定义120181
淡褐色114842
[R113770
ASP.NET111431
转到模板111263
文件类型定义109,710
小黄瓜规格107187
Smarty模板106668
玉石105903
快乐的105631
Emacs Lisp105620
序言102792
去吧99093
a98232
重击95931
d94,400
动作脚本93,066
特克斯84841
动力壳80347
Awk79870
Groovy75796
莱克斯75335
核子72,478
sed70454
up67732
组织67703
Clojure67145
Xaml65135
打字稿62556
系统化58197
哈斯克尔58162
Xcode配置57173
o55318
乳胶55093
sh55044
触控笔54412
剃刀54102
车把51893
Erlang49,475
十六进制46,442
协议缓冲区45254
小胡子44,633
均价43114
可扩展样式表语言转换42,664
树枝模板42,273
处理中41,277
Docker文件39,664
威格37539
LD脚本36307
FORTRAN旧版35,889
骗子35,373
方案34982
亚历克斯34221
TCL33,766
Android界面定义语言33,000
Ruby HTML32645
设备树31918
期待30,249
阴谋集团30109
虚幻脚本29113
帕斯卡28,439
GLSL28,417
英特尔十六进制27504
合金材质27142
Freemarker模板26,456
IDL26,079
适用于Visual Basic26,061
Macromedia可扩展标记语言24,949
F#24,373
赛顿23,858
朱皮特23,577
第四22108
视觉基础21909
Lisp21,242
OCaml20,216
铁锈19,286
18,079
猴子c17753
艾达17253
SAS17 031
飞镖16,447
打字稿打字16,263
系统验证15541
节俭15390
C壳14,904
片段着色器文件14,572
顶点着色器文件14312
QML13,709
冷融13,441
长生不老药12716
哈克斯12404
金佳12,274
x12194
规格12071
福特现代11,460
PKGBUILD11398
忽略11,287
真子10846
托尔10444
技能10048
阿西多克9868
斯威夫特9679
生成流9198
ColdFusion CFScript8614
斯塔塔8296
克里奥尔语8030
基本的7 751
V7560
甚高密度脂蛋白7,368
朱莉亚7 070
ClojureScript7018
关闭模板6,269
自动热键5 938
沃尔夫拉姆5,764
Docker忽略5555
角壳5541
Arvo5,364
辅酶Q5,068
SRecode模板5019
游戏制作者语言4557
尼克斯4,216
瓦拉4 110
科宝3946
清漆配置3,882
科特林3,683
比特烤3645
脚本3 189
标准ML(SML)3143
詹金斯构建文件2822
Xtend2791
阿巴普2381
模组32,376
尼姆2,273
Verilog2013年
榆木1 849
脑干1 794
Ur /网站1,741
欧泊朗1,367
GN1,342
任务纸1,330
锡兰1,265
水晶1259
阿格达1,182
Vue1,139
大声笑1 101
哈姆雷特1,071
机器人框架1,062
腮腺炎940
Emacs开发环境937年
货运锁905
流9839
伊德里斯804
朱利叶斯765
奥兹764
问#695
卢修斯627
介子617
F *614
空中交通服务492
PSL断言483
Bitbucket管道418
纯文字370
报告定义语言313
伊莎贝尔296
i286
MQL4271
Ur / Web项目261
炼金术士250
卡修斯213
软桥基础207
MQL标头167
杰森146
精益104
香料网表100
马德朗97
露娜91
小马86
MQL546
ren33
只是30
QCL27
曲折21
SPDX20
Futhark16
道尔15
菲德尔14
博斯克14
珍妮特13
游戏制作者计划6
波莉6
Verilog Args文件2

按语言在存储库中有多少个文件?


除上表外,但按存储库中每种语言的文件数平均。 也就是说,存在Java的所有项目平均存在多少个Java文件?

完整清单
语言能力平均文件数
阿巴普1,0008927583699165
均价1.6565139917314107
ASP.NET346.88867258489296
空中交通服务7.888545610390882
Awk5,098807478952136
动作脚本15.682562363539644
艾达7.265376817272021
阿格达1,2669381110755398
炼金术士7.437307493090622
亚历克斯20.152479318023637
合金材质1,0000000894069672
Android界面定义语言3.1133707938643074
Arvo9.872687772928423
阿西多克14,645389421879814
组装方式1049.6270518312476
自动热键1,5361384288472488
自动配置33,99728695464163
重击3.7384110335355545
基本的5,103623499110781
批处理3.943513588378872
淡褐色1.0013122734382187
比特烤1,0878349272366024
Bitbucket管道1个
o5,321822367969364
博斯克1.28173828125
脑干1,3141119785974242
生成流1,4704635441667189
ç15610,17972307699
C头14103,33936083782
C壳3.1231084093649315
C#45.804460355773394
C ++30,416980313492328
C ++标题8.313450764990089
CMake的37.2566873554469
科宝3,129408853490878
的CSS5.332398714337156
中央电视台8.370432089241898
阴谋集团1.0078125149013983
货运锁1.0026407549221519
卡修斯4.657169356495984
锡兰7,397692655679642
Clojure8,702303821528872
ClojureScript5.384518778099244
关闭模板1,0210028022356945
CoffeeScript45.40906609668401
冷融13.611857060674573
ColdFusion CFScript40,42554202020521
辅酶Q10,903652047164622
克里奥尔语1.000122070313864
水晶3.8729367926098117
赛顿1.9811811237515262
d529,2562750397005
飞镖1.5259554297822313
设备树586,4119588123021
道尔5.072265625
Docker忽略1.0058596283197403
Docker文件1.7570825852789156
文件类型定义2.2977520758534693
长生不老药8,916658446524252
Elm1,6702759813968946
Emacs Dev Env15,720268315288969
Emacs Lisp11,378847912292201
Erlang3,4764894379621607
Expect2,8863991651091614
Extensible Stylesheet Language Transformations1,2042068607534995
F#1,2856606249320954
F*32,784058919015
FIDL1,8441162109375
FORTRAN Legacy11,37801716560221
FORTRAN Modern27,408192558594685
Fish1,1282354207617833
Flow95,218046229973186
Forth10,64736177807574
Fragment Shader File3,648087980622546
Freemarker Template8,397226930409037
Futhark4,671875
GDScript3,6984173692608313
GLSL1,6749061330076334
GN1,0193083210608163
Game Maker Language3,6370866431049604
Game Maker Project1,625
Gherkin Specification60,430588516231666
Go115,23482489228113
Go Template28,011342078505013
Gradle5,628880473160033
Groovy6,697367294187844
HEX22,477003537989486
HTML4,822243456786672
Hamlet50,297887645777536
Handlebars36,60120978679127
Happy5,820573911044464
Haskell8,730027121836951
Haxe20,00590981880653
IDL79,38510300176867
Idris1,524684997890027
Intel HEX113,25178379632708
Isabelle1,8903018088753136
JAI1,4865150753259275
JSON6,507823973898348
JSONL1,003931049286678
JSX4,6359645801363465
Jade5,353279289700571
Janet1,0390625
爪哇118,86142228014006
JavaScript140,56079100796154
JavaServer Pages2,390251418283771
Jenkins Buildfile1,0000000000582077
Jinja4,574843152310338
Julia6,672268339671913
Julius2,2510109380818903
Jupyter13,480476117239338
Just1,736882857978344
Korn Shell1,5100887455636172
Kotlin3,9004723322169363
LD Script16,59996086864524
LESS39,6484785300563
LEX5,892075421476933
LOLCODE1,0381496530137617
LaTeX5,336103768010524
Lean1,6653789470747329
License5,593879701111845
Lisp33,15947937896521
Lua24,796117625764612
Lucius6,5742989471450155
Luna4,437807061133055
MQL Header13,515527575704464
MQL46,400151428436254
MQL546,489316522221515
MSBuild4,8321384193507875
MUMPS8,187699062741014
Macromedia eXtensible Markup Language2,1945287114300807
Madlang3,7857666909751373
Makefile1518,1769808494607
Mako3,410234685769436
Markdown45,687500000234245
Meson32,45071679724949
Modula31,1610784588847318
Module-Definition4,9327688042002595
Monkey C3,035163164383345
Mustache19,052714578803542
Nim1,202213335585401
Nix2,7291879559930488
OCaml3,7135029841909697
Objective C4,9795510788040005
Objective C++2,2285232767506264
Opalang1,9975597794742732
Org5,258117805392903
Oz22,250069644336204
p199,17870638869982
PKGBUILD7,50632295051949
PSL Assertion3,0736406530442473
Pascal90,55238627885495
Patch25,331829692384225
Perl27,46770444081142
Plain Text1119,2375825397799
Polly1个
Pony3,173291031071342
Powershell6,629884642978543
Processing9,139907354078636
Prolog1,816763080890156
Properties File2,1801967863634255
Protocol Buffers2,0456253005879304
Puppet43,424491631161054
PureScript4,063801504037935
巨蟒22,473917606983292
Q#5,712939431518483
QCL7,590678825974464
QML1,255201818986247
[R2,3781868952970115
Rakefile14,856192677576413
Razor62,79058974450959
ReStructuredText11,63852408056825
Report Definition Language23,065085061465403
Robot Framework2,6260137148703535
Ruby554,0134362337432
Ruby HTML24,091116656979562
Rust2,3002003813895207
SAS1,0032075758254648
SKILL1,9229039972029645
SPDX2,457843780517578
SQL2,293643752864969
SRecode Template20,688193360975845
SVG4,616972531365432
Sass42,92418345584642
Scala1,5957851387966393
Scheme10,480490204644848
Scons2,1977062552968114
Shell41,88552208947577
Smarty Template6,90615223295527
Softbridge Basic22,218602385698304
Specman e2,719783829645327
Spice Netlist2,454830619852739
Standard ML (SML)3,7598713626650295
Stata2,832579915520368
Stylus7,903926412469745
Swift54,175594149331914
Swig2,3953681161240747
SystemVerilog7,120705494624247
Systemd80,83254275520476
TCL46,9378307136513
TOML1,0316491217260413
TaskPaper1,0005036006351133
TeX8,690789447558961
Thrift1,620168483240211
Twig Template18,33051814392764
TypeScript1,2610517452930048
TypeScript Typings2,3638072576034137
Unreal Script2,9971615019965148
Ur/Web3,420488425604595
Ur/Web Project1,8752869585517504
V1,8780624768245784
VHDL5,764059992075602
Vala42,22072166146626
Varnish Configuration1,9899734258599446
Verilog1,443359777332832
Verilog Args File25,5
Vertex Shader File2,4700152399875077
Vim Script3,2196359799822662
Visual Basic119,8397831247842
Visual Basic for Applications2,5806381264096503
Vue249,0557418123258
Wolfram1,462178856761796
Wren227,4526259500999
XAML2,6149608174399264
XCode Config6,979387911493798
XML146,10128153519918
XML Schema6,832042266604565
Xtend2,87054940757827
YAML6,170148717655746
Zig1,071681022644043
Zsh2,6295064863912088
gitignore6,878908416722053
ignore1,0210649380633772
m457,5969985568356
nuspec3,245791111381787
sed1,3985770380241234

典型的语言文件中有几行代码?


我认为仍然有趣的是,平均来看哪些语言的文件最多?使用算术平均值会由于sqlite.c之类的项目而产生异常高的数字,该项目包含在许多存储库中,将许多文件合并为一个文件,但是没人能处理这个大文件(我希望!)

因此,我计算了中位数的平均值。但是,仍然具有很高的价值的语言,例如Bosque和JavaScript。

所以我想,为什么不采取骑士行动呢?Darrell(Kablamo居民和出色的数据科学家)的建议下,我做了一个小小的更改,并更改了算术平均值,删除了5,000行以上的文件以消除异常。

完整清单
语言能力< 5000
ABAP13936
ASP513170
ASP.NET315148
ATS9451 411
AWK431774
ActionScript9502 676
Ada1 17913
Agda46689
Alchemist1 0401 463
Alex479204
Alloy7266
Android Interface Definition Language119190
Arvo2571 508
AsciiDoc5191 724
Assembly993225
AutoHotKey36023
Autoconf495144
BASH42526
Basic476847
Batch178208
Bazel22620
Bitbake43610
Bitbucket Pipeline1913
Boo898924
Bosque58199 238
Brainfuck141177
BuildStream1 9552 384
ç1 0525 774
C Header869126 460
C Shell12877
C#1 2151 138
C++1 166232
C++ Header838125
CMake75015
COBOL42224
CSS729103
CSV41112
Cabal11613
Cargo Lock814686
Cassius124634
Ceylon20715
Clojure52119
ClojureScript504195
Closure Template34375
CoffeeScript342168
ColdFusion6865
ColdFusion CFScript1 2311 829
Coq56029 250
Creole8520
Crystal973119
Cython8531 738
D39710
Dart583500
Device Tree73944 002
Dhall12499
Docker ignore102
Dockerfile7617
Document Type Definition5221 202
Elixir402192
Elm438121
Emacs Dev Env646755
Emacs Lisp65315
Erlang930203
Expect419195
Extensible Stylesheet Language Transformations442600
F#38464
F*33565
FIDL6551 502
FORTRAN Legacy2771 925
FORTRAN Modern636244
Fish16874
Flow936832
Forth25662
Fragment Shader File30911
Freemarker Template52220
Futhark175257
GDScript4011个
GLSL38029日
GN9508 866
Game Maker Language710516
Game Maker Project1 290374
Gherkin Specification5162 386
Go780558
Go Template41125 342
Gradle22822
Groovy73413
HEX1 00217 208
HTML5561 814
Hamlet22070
Handlebars5063 162
Happy1 6170
Haskell65617
Haxe8659 607
IDL386210
Idris28542
Intel HEX1 256106 650
Isabelle7921 736
JAI26841
JSON28939
JSONL432
JSX39324
Jade299192
Janet50832
爪哇1 165697
JavaScript89473 979
JavaServer Pages644924
Jenkins Buildfile796
Jinja4653 914
Julia5391 031
Julius11312
Jupyter1 361688
Just6272
Korn Shell427776
Kotlin554169
LD Script521439
LESS1 08617
LEX1 014214
LOLCODE1294
LaTeX8957 482
Lean1819
License26620
Lisp7461 201
Lua820559
Lucius284445
Luna8548
MQL Header79310 337
MQL47993 168
MQL5384631
MSBuild558160
MUMPS92498 191
Macromedia eXtensible Markup Language50020
Madlang368340
Makefile30920
Mako269243
Markdown20610
Meson546205
Modula316217
Module-Definition4897
Monkey C14028
Mustache2988 083
Nim3523
Nix24078
OCaml71868
Objective C1 11117 103
Objective C++903244
Opalang15129日
Org52324
Oz3607 132
p96414 660
PKGBUILD13119
PSL Assertion149108
Pascal1 044497
Patch67612
Perl76211
Plain Text352841
Polly1226
Pony33842 488
Powershell652199
Processing800903
Prolog2826
Properties File18418岁
Protocol Buffers5768 080
Puppet499660
PureScript598363
巨蟒879258
Q#4755 417
QCL5483
QML8156 067
[R56620
Rakefile1227
Razor7131 842
ReStructuredText7355 049
Report Definition Language1 38934 337
Robot Framework292115
Ruby7394 942
Ruby HTML326192
Rust1 0074
SAS23365
SKILL526123
SPDX1 242379
SQL466143
SRecode Template796534
SVG7961 538
Sass68214 653
Scala612661
Scheme5666
Scons5456 042
Shell3044
Smarty Template39215
Softbridge Basic2 0673
Specman e1270
Spice Netlist9061 465
Standard ML (SML)47875
Stata20012
Stylus505214
Swift683663
Swig1 0314 540
SystemVerilog563830
Systemd12726
TCL77442 396
TOML10017
TaskPaper377
TeX804905
Thrift545329
Twig Template7139 907
TypeScript46110
TypeScript Typings1 465236 866
Unreal Script795927
Ur/Web429848
Ur/Web Project3326
V7045 711
VHDL9521 452
Vala6032
Varnish Configuration20377
Verilog1982
Verilog Args File456481
Vertex Shader File16874
Vim Script55525
Visual Basic7381 050
Visual Basic for Applications979936
Vue732242
Wolfram940973
Wren358279 258
XAML70324
XCode Config20011
XML6051 033
XML Schema1 008248
Xtend710120
YAML16547 327
Zig188724
Zsh3009
gitignore333
ignore62
m4959807
nuspec187193
sed8233

每种语言的平均文件复杂度?


每种语言的平均文件复杂度是多少?

实际上,复杂度评估不能直接在语言之间进行比较。自述文件摘录scc

复杂度分数只是一个数字,只能在使用相同语言的文件之间进行匹配。它不应用于直接比较语言。原因是它是通过为每个文件查找分支和循环运算符来计算的。

因此,尽管这里可以在类似的语言(例如Java和C)之间进行比较,但语言在这里不能相互比较。

对于使用相同语言的单个文件,这是更有价值的指标。因此,您可以回答以下问题:“我正在使用的文件比普通文件更容易或更难?”

我不得不提到,我将对在scc中改进此指标的建议感到满意对于一次提交,通常只需在languages.json文件中添加几个关键字就足够了,因此任何程序员都可以提供帮助。

完整清单
语言能力
ABAP11,180740488380376
ASP11,536947250366211
ASP.NET2,149275320643484
ATS0,7621728432717677
AWK0
ActionScript22,088579905848178
Ada13,69141626294931
Agda0,19536590785719454
Alchemist0,3423442907696928
Alex0
Alloy6,9999997997656465
Android Interface Definition Language0
Arvo0
AsciiDoc0
Assembly1,5605608227976997
AutoHotKey423,87785756399626
Autoconf1,5524294972419739
BASH7,500000094871363
Basic1,0001350622574257
Batch1,4136352496767306
Bazel6,523681727119303
Bitbake0,00391388021490391
Bitbucket Pipeline0
Boo65,67764583729533
Bosque236,79837036132812
Brainfuck27,5516445041791
BuildStream0
ç220,17236548200242
C Header0,027589923237434522
C Shell1,4911166269191476
C#1,0994400597744005
C++215,23628287682845
C++ Header2,2893104921677154
CMake0,887660006199008
COBOL0,018726348891789816
CSS6,317460331175305E-176
CSV0
Cabal3,6547924155738194
Cargo Lock0
Cassius0
Ceylon21,664400369259404
Clojure0,00009155273437716484
ClojureScript0,5347588658332859
Closure Template0,503426091716392
CoffeeScript0,02021490140137264
ColdFusion6,851776515250336
ColdFusion CFScript22,287403080299764
Coq3,3282556015266307
Creole0
Crystal1,6065794006138856
Cython42,87412906489837
D0
Dart2,1264450684815657
Device Tree0
Dhall0
Docker ignore0
Dockerfile6,158891172385556
Document Type Definition0
Elixir0,5000612735793482
Elm5,237952479502043
Emacs Dev Env1,2701271416728307E-61
Emacs Lisp0,19531250990197657
Erlang0,08028322620528387
Expect0,329944610851471
Extensible Stylesheet Language Transformations0
F#0,32300702900710193
F*9,403954876643223E-38
FIDL0,12695312593132269
FORTRAN Legacy0,8337643985574195
FORTRAN Modern7,5833590276411185
Fish1,3386242155247368
Flow934.5
Forth2,4664166555765066
Fragment Shader File0,0003388836600090293
Freemarker Template10,511094652522283
Futhark0,8057891242233386
GDScript10,750000000022537
GLSL0,6383056697891334
GN22,400601854287807
Game Maker Language4,709514207365569
Game Maker Project0
Gherkin Specification0,4085178437480328
Go50,06279203974034
Go Template2,3866690339840662E-153
Gradle0
Groovy3,2506868488244898
HEX0
HTML0
Hamlet0,25053861103978114
Handlebars1,6943764911351036E-21
Happy0
Haskell28,470107150053625
Haxe66,52873523714804
IDL7,450580598712868E-9
Idris17,77642903881352
Intel HEX0
Isabelle0,0014658546850726184
JAI7,749968137734008
JSON0
JSONL0
JSX0,3910405338329044
Jade0,6881713929215119
Janet0
爪哇297,22908150612085
JavaScript1,861130583340945
JavaServer Pages7,24235416213196
Jenkins Buildfile0
Jinja0,6118526458846931
Julia5,779676990326951
Julius3,7432448068125277
Jupyter0
Just1,625490248219907
Korn Shell11,085027896435056
Kotlin5,467347841779503
LD Script6,538079182471746E-26
LESS0
LEX0
LOLCODE5,980839657708373
LaTeX0
Lean0,0019872561135834133
License0
Lisp4,033602018074421
Lua44,70686769972825
Lucius0
Luna0
MQL Header82,8036524637758
MQL42,9989408299408566
MQL532,84198718928553
MSBuild2,9802322387695312E-8
MUMPS5,767955578948634E-17
Macromedia eXtensible Markup Language0
Madlang8,25
Makefile3,9272747722381812E-90
Mako0,007624773579836673
Markdown0
Meson0,3975182396400463
Modula30,7517121883916386
Module-Definition0,25000000023283153
Monkey C9,838715311259486
Mustache0,00004191328599945435
Nim0,04812580073302998
Nix25,500204694250044
OCaml16,92218069843716
Objective C65,08967337175548
Objective C++10,886891531550603
Opalang1,3724696160763994E-8
Org28,947825231747235
Oz6,260657086070324
p2,8314653639690874
PKGBUILD0
PSL Assertion0,5009768009185791
Pascal4
Patch0
Perl48,16959255514553
Plain Text0
Polly0
Pony4,91082763671875
Powershell0,43151378893449877
Processing9,691001653621564
Prolog0,5029296875147224
Properties File0
Protocol Buffers0,07128906529847256
Puppet0,16606500436341776
PureScript1,3008141816356456
巨蟒11,510142201304832
Q#5,222080192729404
QCL13,195626304795667
QML0,3208023407643109
[R0,40128818821921775
Rakefile2,75786388297917
Razor0,5298294073055322
ReStructuredText0
Report Definition Language0
Robot Framework0
Ruby7,8611656283491795
Ruby HTML1,3175727506823756
Rust8,62646485221385
SAS0,5223999023437882
SKILL0,4404907226562501
SPDX0
SQL0,00001537799835205078
SRecode Template0,18119949102401853
SVG1,7686873200833423E-74
Sass7,002974651049148E-113
Scala17,522343645163424
Scheme0,00003147125255509322
Scons25,56868253610655
Shell6,409446969197895
Smarty Template53,06143077491294
Softbridge Basic7,5
Specman e0,0639350358484781
Spice Netlist1,3684555315672042E-48
Standard ML (SML)24,686901116754818
Stata1,5115316917094068
Stylus0,3750006556512421
Swift0,5793484510104517
Swig0
SystemVerilog0,250593163372906
Systemd0
TCL96,5072605676113
TOML0,0048828125000002776
TaskPaper0
TeX54,0588040258797
Thrift0
Twig Template2,668124511961211
TypeScript9,191392608918255
TypeScript Typings6,1642456222327375
Unreal Script2,7333421227943004
Ur/Web16,51621568240534
Ur/Web Project0
V22,50230618938804
VHDL18,05495198571289
Vala147,2761703068509
Varnish Configuration0
Verilog5,582400367711671
Verilog Args File0
Vertex Shader File0,0010757446297590262
Vim Script2,4234658314493798
Visual Basic0,0004882812500167852
Visual Basic for Applications4,761343429454877
Vue0,7529517744621779
Wolfram0,0059204399585724215
Wren0,08593750013097715
XAML6,984919309616089E-10
XCode Config0
XML0
XML Schema0
Xtend2,8245844719990547
YAML0
Zig1,0158334437942358
Zsh1,81697392626756
gitignore0
ignore0
m40
nuspec0
sed22,91158285739948

每种语言的文件平均注释数?


每种语言的文件中平均注释数是多少?

也许这个问题可以改写:用语言写的开发人员最多的评论,暗示读者的误解。

完整清单
语言能力
ABAP56,3020026683825
ASP24,67145299911499
ASP.NET9,140447860406259E-11
ATS41,89465025163305
AWK11,290069486393975
ActionScript31,3568633027012
Ada61,269572412982384
Agda2,4337660860304755
Alchemist2,232399710231226E-103
Alex0
Alloy0,000002207234501959681
Android Interface Definition Language26,984662160277367
Arvo0
AsciiDoc0
Assembly2,263919769706678E-72
AutoHotKey15,833985920534857
Autoconf0,47779749499136687
BASH34,15625059662068
Basic1,4219117348874069
Batch1,0430908205926455
Bazel71,21859817579139
Bitbake0,002480246487177871
Bitbucket Pipeline0,567799577547725
Boo5,03128187009327
Bosque0,125244140625
Brainfuck0
BuildStream12,84734197699206
ç256,2839210573451
C Header184,88885430308878
C Shell5,8409870392823375
C#30,96563720101839
C++44,61584829131642
C++ Header27,578790410119197
CMake1,7564333047949374
COBOL0,7503204345703562
CSS4,998773531463529
CSV0
Cabal4,899812531420634
Cargo Lock0,0703125
Cassius0,07177734654413487
Ceylon3,6406326349824667
Clojure0,0987220821845421
ClojureScript0,6025725119252456
Closure Template17,078124673988057
CoffeeScript1,6345682790069884
ColdFusion33,745563628665096
ColdFusion CFScript13,566947396771592
Coq20,3222774725393
Creole0
Crystal6,0308081267588145
Cython21,0593019957583
D0
Dart4,634361584097128
Device Tree33,64898256434121
Dhall1,0053101042303751
Docker ignore8,003553375601768E-11
Dockerfile4,526245545632278
Document Type Definition0
Elixir8,0581139370409
Elm24,73191350743249
Emacs Dev Env2,74822998046875
Emacs Lisp12,168370702306452
Erlang16,670030919109056
Expect3,606161126133445
Extensible Stylesheet Language Transformations0
F#0,5029605040200058
F*5,33528354690743E-27
FIDL343,0418392068642
FORTRAN Legacy8,121405267242158
FORTRAN Modern171,32042583820953
Fish7,979248739519377
Flow90,5049991616979244
Forth0,7578125
Fragment Shader File0,2373057885016209
Freemarker Template62,250244379050855
Futhark0,014113984877253714
GDScript31,14457228694065
GLSL0,2182627061047912
GN17,443267241931284
Game Maker Language3,9815753922640824
Game Maker Project0
Gherkin Specification0,0032959059321794604
Go6,464829990599041
Go Template4,460169822267483E-251
Gradle0,5374194774415457
Groovy32,32068506016523
HEX0
HTML0,16671794164614084
Hamlet4,203293477836184E-24
Handlebars0,9389737429747177
Happy0
Haskell20,323476462551376
Haxe9,023509566990532
IDL1,01534495399968
Idris0,36279318680267497
Intel HEX0
Isabelle4,389802167076498
JAI2,220446049250313E-16
JSON0
JSONL0
JSX0,9860839844113964
Jade0,25000000000034117
Janet9,719207406044006
爪哇330,66188089718935
JavaScript22,102491285372537
JavaServer Pages4,31250095370342
Jenkins Buildfile0
Jinja2,5412145720173454E-50
Julia12,542627036271085
Julius0,24612165248208867
Jupyter0
Just0,3186038732601446
Korn Shell40,89005232702741
Kotlin0,3259347784770708
LD Script3,7613336386434204
LESS15,495439701029127
LEX55,277186392539086
LOLCODE13,578125958700468
LaTeX3,316717967334341
Lean21,194565176965895
License0
Lisp88,10676444837796
Lua76,67247973843406
Lucius0,3894241626790286
Luna16,844066019174637
MQL Header82,22436339969337
MQL41,957314499740677
MQL527,463183855085845
MSBuild0,19561428198176206
MUMPS5,960464477541773E-8
Macromedia eXtensible Markup Language0
Madlang6,75
Makefile1,2287070602578574
Mako1,3997604187154047E-8
Markdown0
Meson4,594536366188615
Modula33,4375390004645627
Module-Definition7,754887182446689
Monkey C0,02734480644075532
Mustache0,0000038370490074157715
Nim0,8432132130061808
Nix165,09375
OCaml27,238212826702338
Objective C32,250000004480256
Objective C++4,688333711547599
Opalang3,2498599900436704
Org2,4032862186444435
Oz11,531631554476924
p0,37573912739754056
PKGBUILD0
PSL Assertion4,470348358154297E-7
Pascal274,7797153576955
Patch0
Perl42,73014043490598
Plain Text0
Polly0
Pony0,2718505859375
Powershell2,0956492198317282
Processing11,358358417519032
Prolog6,93889390390723E-17
Properties File4,297774864451927
Protocol Buffers5,013992889700926
Puppet1,9962931947466012
PureScript6,608705271035433
巨蟒15,208443286809963
Q#0,4281108849922295
QCL13,880147817629737
QML16,17036877582475
[R5,355639399818855
Rakefile0,4253943361101697
Razor0,2500305203720927
ReStructuredText0
Report Definition Language1,8589575837924928E-119
Robot Framework0
Ruby8,696056880656087
Ruby HTML0,031281024218515086
Rust22,359375028118006
SAS0,7712382248290134
SKILL0,002197265625
SPDX0
SQL0,4963180149979617
SRecode Template17,64534428715706
SVG0,780306812508952
Sass1,6041624981030795
Scala2,7290137764062656
Scheme18,68675828842983
Scons9,985132321266597
Shell19,757167057040007
Smarty Template0,0009841919236350805
Softbridge Basic4,76177694441164E-25
Specman e0,1925095270881778
Spice Netlist5,29710110812646
Standard ML (SML)0,20708566564292288
Stata0,04904100534194722
Stylus4,534405773074049
Swift1,8627019961192913E-9
Swig11,786422730001505
SystemVerilog0,00009708851624323821
Systemd0
TCL382,839838598133
TOML0,37500173695180483
TaskPaper0
TeX8,266233975096164
Thrift50,53134153016524
Twig Template0
TypeScript8,250029131770134
TypeScript Typings37,89904005334354
Unreal Script46,13322029508541
Ur/Web0,04756343913582129
Ur/Web Project6,776263578034403E-21
V28,75797889154211
VHDL37,47892257625405
Vala74,26528331441615
Varnish Configuration19,45791923156868
Verilog4,165537942430622
Verilog Args File0
Vertex Shader File1,7979557178975683
Vim Script0
Visual Basic0,26300267116040704
Visual Basic for Applications0,3985138943535276
Vue5,039982162930666E-52
Wolfram70,01674025323683
Wren30694,003311276458
XAML0,5000169009533838
XCode Config13,653495818959595
XML3,533205032457776
XML Schema0
Xtend19,279739396268607
YAML1,1074293861154887
Zig0,507775428428431
Zsh6,769231127673729
gitignore1,3347179947709417E-20
ignore0,0356445312500015
m45,4183238737327075
nuspec3,640625
sed6,423678000929861

最常见的文件名是什么?


忽略扩展名和大小写,所有代码库中最常见的文件名是什么?

如果您早些时候问我,我会说:自述文件,主要文件,索引,许可证。结果很好地反映了我的假设。虽然有很多有趣的事情。我不知道为什么这么多项目包含一个名为15的文件s15

最常见的makefile令我有些惊讶,但是后来我想起它在许多新的JavaScript项目中都使用过。需要注意的另一件有趣的事情:jQuery似乎仍在继续发展,其死亡的报道被大大夸大了,他名列第四。

完整清单
file-namecount
makefile59 141 098
index33 962 093
readme22 964 539
jquery20 015 171
主要的12 308 009
package10 975 828
license10 441 647
__init__10 193 245
strings8 414 494
安卓7 915 225
config7 391 812
default5 563 255
build5 510 598
setup5 291 751
test5 282 106
irq4 914 052
154 295 032
country4 274 451
pom4 054 543
io3 642 747
system3 629 821
common3 629 698
gpio3 622 587
core3 571 098
module3 549 789
init3 378 919
dma3 301 536
bootstrap3 162 859
application3 000 210
time2 928 715
cmakelists2 907 539
plugin2 881 206
base2 805 340
s152 733 747
androidmanifest2 727 041
cache2 695 345
调试2 687 902
file2 629 406
app2 588 208
version2 580 288
assemblyinfo2 485 708
exception2 471 403
project2 432 361
util2 412 138
user2 343 408
clock2 283 091
timex2 280 225
pci2 231 228
style2 226 920
styles2 212 127

请注意,由于内存限制,此过程的准确性有所降低。在每100个项目中,我检查了地图,并从列表中删除了少于10次的文件名。他们可以返回下一个测试,并且如果遇到10次以上,他们将继续留在名单上。如果某些通用名称在变得通用之前很少出现在第一批存储库中,则某些结果可能会出错。简而言之,这些不是绝对数字,但应该足够接近它们。

我可以使用前缀树来“压缩”空间并获取绝对数字,但是我不想编写它,因此我略微滥用了地图以节省足够的内存并获取结果。但是,稍后尝试前缀树将非常有趣。

有多少存储库缺少许可证?


这很有趣。多少个存储库至少具有一些显式许可证文件?请注意,此处缺少许可证文件并不表示该项目没有该文件,因为它可以存在于README文件中,也可以通过SPDX注释标记显示。这只是意味着scc它无法使用其自己的条件来找到显式许可证文件。当前,此类文件被认为是“许可证”,“许可证”,“复制”,“ copying3”,“无许可证”,“无许可证”,“许可证许可证”,“许可证许可证”或“版权”。

不幸的是,绝大多数存储库没有许可证。我会说为什么任何软件都需要许可证有很多原因,但是其他人为我了许可证

有执照吗?数量
没有啦6502753
在那边2 597 330



多少个项目使用多个.gitignore文件?


有些人可能不知道这一点,但是git项目中可能有几个.gitignore文件。考虑到这一点,有多少项目使用多个.gitignore文件?同时,有几个没有一个?

我在存储库中找到了一个相当有趣的项目,其中包含25794个.gitignore文件。下一个结果是2547。我不知道发生了什么。我简短地看了一眼:看起来它们好像是用来检查目录的,但是我无法确认。

返回到数据,这是一个带有最多20个.gitignore文件的存储库图,它覆盖了所有项目的99%。



不出所料,大多数项目都有0或1个.gitignore文件。带有2个文件的项目数量下降了十倍,这证实了这一点,令我惊讶的是,有多少个项目具有多个.gitignore文件。在这种情况下,长尾巴特别长。

我很好奇为什么有些项目有成千上万个这样的文件。主要的麻烦制造者之一是派生https://github.com/PhantomX/slackbuilds:每个分支都有大约2547个.gitignore文件。下面列出了具有一千多个.gitignore文件的其他存储库。


.gitignore
03 628 829
1个4 576 435
2387 748
3136 641
479 808
548 336
633 686
733 408
822 571
916 453
1011 198
1110 070
128 194
137 701
145 040
154 320
165 905
174 156
18岁4 542
193 828
202 706
212 449
221 975
232 255
242 060
251 768
262 886
272 648
282 690
29日1 949
301 677
313 348
321 176
33794
341 153
35845
36488
37627
38533
39502
40398
41370
42355
431 002
44265
45262
46295
47178
48384
49270
50189
51435
52202
53196
54325
55253
56320
57126
58329
59286
60292
61152
62237
63163
64149
65187
66164
6792
6880
69138
70102
7168
7262
73178
74294
7589
76118
77110
78319
79843
80290
81162
82127
83147
84170
85275
861 290
87614
884 014
892 275
90775
913 630
92362
93147
94110
9571
9675
9762
98228
9971
100174
101545
102304
103212
104284
105516
106236
10739
10869
109131
11082
111102
112465
113621
11447
11559
11643
11740
11843
119443
12072
12142
12233
123392
12466
12546
126381
12719
12899
129906
13052
13119
13211
13399
13410
13515
1366
13722
13844
13933
14024
14133
14239
14348
14480
14520
14628
14719
14817
14911
15020
15157
15235
15324
15431
15535
15655
15789
15857
15988
16018岁
16147
16256
16336
16463
16599
16644
16764
16886
16970
170111
171106
17225
17339
17414
17525
17653
17720
17856
17911
1807
18140
18232
18317
18468
18538
18616
1873
1884
1892
19012
19118岁
19237
1939
19410
19511
19618岁
19745
19827
19911
20039
20123
20237
20322
20421
2057
20640
2077
2088
20916
21029日
21120
21221
2137
2144
21512
21721
21813
22012
2212
22215
2234
22412
2259
2261个
2278
2283
2296
2308
23131
23226
2336
23417
2356
23623
2371个
23811
2392
24010
2417
24211
2431个
24414
24521
2463
24712
2481个
2496
25010
2515
25218岁
2537
25417
2554
25616
2578
25824
25917
2604
2611个
2623
26312
2643
2658
2672
2681个
2693
2714
2721个
2731个
2741个
2753
2766
2795
2801个
2811个
2844
2851个
2861个
2882
2891个
2905
2914
2937
2944
2951个
2961个
2971个
29970
3002
3014
3021个
3037
3051个
3062
3072
3091个
3107
3111个
31314
3161个
3201个
3216
3222
3233
3244
3274
3282
3291个
33013
3315
33211
3333
3341个
3351个
33611
3371个
33820
33911
3402
3416
34210
34337
34425
3459
34632
3474
3489
3497
35012
3512
3525
3547
35832
3597
3606
3611个
36221
36314
36451
36517
36718岁
3689
3707
3716
37215
3731个
37438
375113
37657
37737
37823
37987
38065
3821个
3862
3881个
3915
3921个
3941个
3973
4011个
4031个
4081个
4092
4105
4111个
4134
4151个
4181个
4201个
4273
4282
4302
433314
4371个
4502
4531个
4681个
4691个
4835
4841个
4861个
4882
4899
4904
4922
493106
4943
4951个
4962
4981个
5121个
5391个
5531个
5602
5702
6001个
6023
6431个
6462
6571个
6631个
6701个
6722
7295
7321个
7391个
7441个
7591个
7781个
8191个
8591个
9561个
9592
9642
9651个
9731个
1 1331个
1 1861个
1 2672
1 5231个
2 5351个
2 5361个
2 5372
2 5391个
2 5401个
2 5415
2 5421个
2 5451个
2 5471个
25 7941个

?


本节不是一门精确的科学,而是属于自然语言处理的问题类别。在特定文件列表中搜索辱骂或辱骂术语永远不会有效。如果使用简单搜索进行搜索,则会发现许多普通文件assemble.sh,诸如此类。因此,我列出了一个curses列表,然后检查每个项目中是否有任何文件以这些值之一开头,后跟一个点。这意味着gangbang.java将考虑但assemble.sh考虑命名的文件。但是,他将错过许多不同的选择,例如pu55syg4rgle.java其他同样粗鲁的名字。

我的清单上有一些关于leetspeak的单词,例如b00bsb1tch,以捕捉一些有趣的情况。完整清单在这里

如前所述,尽管这并不完全准确,但查看结果却非常有趣。让我们从诅咒最多的语言列表开始。可能应该将结果与每种语言的代码总数相关联。所以这是领导人。

语言能力发誓文件名档案百分比
C头76600.00126394567906%
爪哇70230.00258792635479%
ç68970.00120706524533%
p57130.00283428484703%
Java脚本43060.00140692338568%
的HTML35600.00177646776919%
红宝石31210.00223136542655%
杰森15980.00293688627715%
C ++15430.00135977378652%
飞镖15330.19129310646%
铁锈15040.038465935524%
转到模板15000.0792233157387%
SVG12340.00771043360379%
XML格式12120,000875741051608%
巨蟒10920.00119138129893%
JavaServer页面10370.0215440542669%


有趣!我的第一个想法是:“哦,这些顽皮的C开发人员!” 但是,尽管此类文件数量很多,但它们编写的代码太多,以致于诅咒在总金额中所占的百分比丢失了。但是,很明显,Dart开发人员的武器库中有几句话!如果您认识Dart程序员之一,则可以握手。

我也想知道最常用的诅咒是什么。让我们看一个共同的肮脏的集体思想。我发现一些最好的名字是普通名字(如果您着眼睛看),但是大多数其他名字肯定会让同事感到惊讶,并在合并请求中提出了一些意见。

这个词数量
屁股11358
旋钮10368
8001
xxx7205
性爱5021
贵族3385
典当2919
地狱2819
废话1112
肛门的950
抢夺885年
572
便便510
考克斯476
狗屎383
欲望367
屁股265
烧伤151
虫子132
n121
118
可可112
该死的105


请注意,列表中一些更令人反感的词的确具有匹配的文件名,我感到非常震惊。幸运的是,它们不是很常见,也没有包含在上面的列表中,该列表仅限于数量超过100个的文件。我希望这些文件仅用于测试允许/拒绝列表等。

按每种语言的行数最多的文件


不出所料,纯文本,SQL,XML,JSON和CSV占据了头等位置:它们通常包含元数据,数据库转储等。

注意事项 创建文件时,由于某些其他信息,下面的某些链接可能不起作用。大多数都可以,但是对于某些情况,您可能需要稍微修改URL。

完整清单
语言能力
Plain Text1366100696temp.txt347 671 811
pphpfox_error_log_04_04_12_3d4b11f6ee2a89fd5ace87c910cee04b.php121 930 973
HTMLyo.html54 596 752
LEXl39 743 785
XMLdblp.xml39 445 222
Autoconf21-t2.in33 526 784
CSVontology.csv31 946 031
Prologtop500_full.p22 428 770
JavaScriptmirus.js22 023 354
JSONdouglasCountyVoterRegistration.json21 104 668
Game Maker Languagelg.gml13 302 632
C Headertrk6data.h13 025 371
Objective C++review-1.mm12 788 052
SQLnewdump.sql11 595 909
Patchclook_iosched-team01.patch10 982 879
YAMLdata.yml10 764 489
SVGlarge-file.svg10 485 763
Sasslarge_empty.scss10 000 000
AssemblyJs8 388 608
LaTeXtex8 316 556
C++ Headerprimpoly_impl.hh8 129 599
LispsimN.lsp7 233 972
PerlaimlCore3.pl6 539 759
SASoutput.sas5 874 153
çCathDomainDescriptionFile.v3.5.c5 440 052
Luagiant.lua5 055 019
[Rdisambisearches.R4 985 492
MUMPSref.mps4 709 289
HEXcombine.hex4 194 304
巨蟒mappings.py3 064 594
Schemeatomspace.scm3 027 366
C++Int.cpp2 900 609
Properties Filenuomi_active_user_ids.properties2 747 671
AlexDalek.X2 459 209
TCLTCL2 362 970
Rubysmj_12_2004.rb2 329 560
Wolframhmm.nb2 177 422
BrainfuckBF2 097 158
TypeScriptall_6.ts1 997 637
Module-Definitionmatrix.def1 948 817
LESSless1 930 356
Objective Cfaster.m1 913 966
Orgdefault.org1 875 096
JupyterReHDDM — AllGo sxFits-Copy0.ipynb1 780 197
Specman etwitter.e1 768 135
F*Pan_troglodytes_monomers.fst1 739 878
Systemdvideo_clean_lower_tokenized.target1 685 570
VImageMazeChannelValueROM.v1 440 068
Markdowneukaryota.md1 432 161
TeXjapanischtest.tex1 337 456
Fortheuroparl.tok.fr1 288 074
Shelladd_commitids_to_src.sh1 274 873
SKILLhijacked.il1 187 701
CSS7f116c3.css1 170 216
C#Form1.cs1 140 480
gitignore.gitignore1 055 167
Boo3.out.tex1 032 145
爪哇Monster.java1 000 019
ActionScriptas1 000 000
MSBuildtrain.props989 860
DD883 308
CoqCompiledDFAs.v873 354
Clojureraw-data.clj694 202
Swig3DEditor.i645 117
Happyy624 673
GLSLcapsid.vert593 618
Verilogpipeline.vg578 418
Standard ML (SML)Ambit3-HRVbutNoHR.sml576 071
SystemVerilogbitcoinminer.v561 974
Visual BasiclinqStoreProcs.designer.vb561 067
Goinfo.go559 236
ExpectArgonne_hourly_dewpoint.exp552 269
Erlangsdh_analogue_data.erl473 924
MakefileMakefile462 433
QML2005.qml459 113
SPDXlinux-coreos.spdx444 743
VHDLcpuTest.vhd442 043
ASP.NETAllProducts.aspx438 423
XML SchemaAdvanceShipNotices.xsd436 055
Elixirgene.train.with.rare.ex399 995
Macromedia eXtensible Markup LanguageStaticFlex4PerformanceTest20000.mxml399 821
Adabmm_top.adb390 275
TypeScript Typingsdojox.d.ts384 171
PascalFHIR.R4.Resources.pas363 291
COBOLcpy358 745
Basicexcel-vba-streams-#1.bas333 707
Visual Basic for ApplicationsDispatcher.cls332 266
Puppetmain_110.pp314 217
FORTRAN Legacyf313 599
OCamlPent.ML312 749
FORTRAN Modernslatec.f90298 677
CoffeeScriptdictionary.coffee271 378
Nixhackage-packages.nix259 940
Intel HEXepdc_ED060SCE.fw.ihex253 836
Scalamodels_camaro.sc253 559
JuliaIJulia 0 .jl221 058
SRecode Templateespell.srt216 243
sedCSP-2004fe.SED214 290
ReStructuredTextS40HO033.rst211 403
Bosqueworld_dem_5arcmin_geo.bsq199 238
Emacs Lispubermacros.el195 861
F#Ag_O1X5.5_O2X0.55.eam.fs180 008
GDScript72906.gd178 628
Gherkin Specificationfeature175 229
HaskellExcel.hs173 039
Dartsurnames_list.dart153 144
Bazelmatplotlib_1.3.1-1_amd64-20140427-1441.build149 234
Haxeelf-x86id.hx145 800
IDLall-idls.idl129 435
LD Scriptkernel_partitions.lds127 187
Monkey CLFO_BT1-point.mc120 881
Modula3tpch22.m3120 185
BatchEZhunter.cmd119 341
Rustdata.rs114 408
Ur/Webdict.ur-en.ur113 911
Unreal Scriptorfs.derep_id97.uc110 737
Groovygroovy100 297
Smarty Templateassign.100000.tpl100 002
Bitbakebb100 000
BASHpalmer-master-thesis.bash96 911
PSL Assertiontest_uno.psl96 253
ASPsat_gbie_01.asp95 144
Protocol Buffersselect1.proto89 796
Report Definition LanguageACG.rdl84 666
PowershellPresentationFramework.ps183 861
Jinjajinja276 040
AWKwords-large.awk69 964
LOLCODElol67 520
Wrenreuse_constants.wren65 550
JSXAEscript.jsx65 108
Rakefileseed.rake63 000
Stata.31113.do60 343
Vim Scriptddk.vim60 282
SwiftGoogle.Protobuf.UnittestEnormousDescriptor.proto.swift60 236
Korn Shellattachment-0002.ksh58 298
AsciiDocindex.adoc52 627
Freemarker Templatedesigned.eml.ftl52 160
CythonCALC.pex.netlist.CALC.pxi50 283
m4ax.m447 828
Extensible Stylesheet Language Transformationsgreen_ccd.xslt37 247
Licensecopyright37 205
JavaServer Pages1MB.jsp36 007
Document Type Definitionbookmap.dtd32 815
FishGodsay.fish31 112
ClojureScriptcore.cljs31 013
Robot Frameworkrobot30 460
Processingdata.pde30 390
Ruby HTMLbig_table.rhtml29 306
ColdFusionspreadsheet2009Q1.cfm27 974
CMakeListOfVistARoutines.cmake27 550
ATStest06.dats24 350
Nimwindows.nim23 949
VueOgre.vue22 916
Razorvalidationerror.cshtml22 832
Spice Netlistinput6.ckt22 454
IsabelleWooLam_cert_auto.thy22 312
XAMLSymbolDrawings.xaml20 764
Opalangp4000_g+5.0_m0.0_t00_st_z+0.00_a+0.00_c+0.00_n+0.00_o+0.00_r+0.00_s+0.00.opa20 168
TOMLtoo_large.toml20 000
Madlangevgg.mad19 416
Stylustest.styl19 127
Go Templatehtml-template.tmpl19 016
AutoHotKeyglext.ahk18 036
ColdFusion CFScriptIntakeHCPCIO.cfc17 606
Zsh_oc.zsh17 307
Twig Templateshow.html.twig16 320
ABAPZRIM01F01.abap16 029
Elm57chevy.elm14 968
Kotlin_Arrays.kt14 396
Varnish Configuration40_generic_attacks.vcl13 367
Mustachehuge.mustache13 313
Alloyoutput.als12 168
Device Treetegra132-flounder-emc.dtsi11 893
MQL4PhD Appsolute System.mq411 280
Jadefugue.jade10 711
Q#in_navegador.qs10 025
JSONLtrain.jsonl10 000
Flow9graph2.flow9902
Valamwp.vala8765
Handlebarstheme.scss.hbs8259
CrystalCR8084
C Shellplna.csh8000
Hamlethamlet7882
BuildStreambiometrics.bst7746
Makoverificaciones.mako7306
AgdaPifextra.agda6483
Thriftconcourse.thrift6471
Fragment Shader Filems812_bseqoslabel_l.fsh6269
Cargo LockCargo.lock6202
XtendUMLSlicerAspect.xtend5936
Arvotest-extra-large.avsc5378
SconsSConstruct5272
Closure Templatebuckconfig.soy5189
GNBUILD.gn4653
Softbridge Basicowptext.sbl4646
PKGBUILDPKGBUILD4636
OzStaticAnalysis.oz4500
Luciusbootstrap.lucius3992
CeylonRedHatTransformer.ceylon3907
CreoleMariaDB_Manager_Monitors.creole3855
LunaBase.luna3731
Gradledependencies.gradle3612
MQL HeaderIncGUI.mqh3544
Cabalsmartword.cabal3452
Emacs Dev Envede3400
Mesonmeson.build3264
nuspecNpm.js.nuspec2823
Game Maker ProjectLudumDare.yyp2679
Juliusdefault-layout.julius2454
Idrisring_reduce.idr2434
Alchemistout.lmf-dos.crn2388
MQL5DTS1-Build_814.1_B-test~.mq52210
Android Interface Definition LanguageITelephony.aidl2005年
Vertex Shader Filesdk_macros.vsh1922
Leaninteractive.lean1664
Jenkins BuildfileJenkinsfile1559
FIDLamb.in.fidl1502
Ponyscenery.pony1497
PureScriptprelude.purs1225
TaskPapertask-3275.taskpaper1196
DockerfileDockerfile1187
JanetJanet1158
Futharkmath.fut990
Zigmain.zig903
XCode ConfigProject-Shared.xcconfig522
JAILCregistryFile.jai489
QCLbwt.qcl447
Ur/Web Projectreader.urp346
Cassiusdefault-layout.cassius313
Docker ignore.dockerignore311
DhalllargeExpressionA.dhall254
ignore.ignore192
Bitbucket Pipelinebitbucket-pipelines.yml181
JustJustfile95
Verilog Args Fileor1200.irunargs60
Pollypolly26

每种语言中最复杂的文件是什么?


同样,这些值不能彼此直接比较,但是很有趣的是,每种语言都认为最困难的是什么。

这些文件中有些是绝对的怪物。例如,考虑一下我找到的最复杂的C ++文件:COLLADASaxFWLColladaParserAutoGen15PrivateValidation.cpp:它是28.3兆字节的编译器地狱(而且幸运的是,它似乎是自动生成的)。

注意事项 创建文件时,由于某些其他信息,下面的某些链接可能不起作用。大多数都可以,但是对于某些情况,您可能需要稍微修改URL。

完整清单
语言能力
C++COLLADASaxFWLColladaParserAutoGen15PrivateValidation.cpp682 001
JavaScriptblocks.js582 070
C Headerbigmofoheader.h465 589
çfmFormula.c445 545
Objective Cfaster.m409 792
SQLdump20120515.sql181 146
ASP.NETresults-i386.master164 528
爪哇ConcourseService.java139 020
TCL68030_TK.tcl136 578
C++ HeaderTPG_hardcoded.hh129 465
TypeScript Typingsall.d.ts127 785
SVGClass Diagram2.svg105 353
LualuaFile1000kLines.lua102 960
pfopen.php100 000
Org2015-02-25_idfreeze-2.org63 326
Rubyall_search_helpers.rb60 375
Schemetest.ss50 000
Stata.31113.do48 600
Elixirpmid.sgd.crawl.ex46 479
BrainfuckPoll.bf41 399
Perlr1d7.pl41 128
Gosegment_words_prod.go34 715
巨蟒lrparsing-sqlite.py34 700
Module-Definitionwordnet3_0.def32 008
Clojureraw-data.clj29 950
C#Matrix.Product.Generated.cs29 675
Dparser.d27 249
FORTRAN Moderneuitm_routines_407c.f9027 161
Puppetsqlite3.c.pp25 753
SystemVerilog6s131.sv24 300
AutoconfMakefile.in23 183
Specman ehansards.e20 893
Smarty Templatetest-include-09.tpl20 000
TypeScriptJSONiqParser.ts18 162
Valtera_mf.v13 584
F*slayer-3.fst13 428
TeXdefinitions.tex13 342
SwiftGoogle.Protobuf.UnittestEnormousDescriptor.proto.swift13 017
Assemblyall-opcodes.s12 800
Bazelfirebird2.5_2.5.2.26540.ds4-10_amd64-20140427-2159.build12 149
FORTRAN Legacylm67.F11 837
[RRallfun-v36.R11 287
ActionScriptAccessorSpray.as10 804
HaskellTags.hs10 444
Prologbooks_save.p10 243
DartDartParser.dart9606
VHDLunisim_VITAL.vhd9590
Batchtest.bat9424
Boocompman.tex9280
CoqNangateOpenCellLibrary.v8988
Shelli3_completion.sh8669
Kotlin1.kt7388
JSXtypescript-parser.jsx7123
MakefileMakefile6642
Emacs Lispbible.el6345
Objective C++set.mm6285
OCamlsparcrec.ml6285
Expectcondloadstore.stdout.exp6144
SASimport_REDCap.sas5783
Juliapilot-2013-05-14.jl5599
Cythontypes.pyx5278
Modula3tpch22.m35182
HaxeT1231.hx5110
Visual Basic for ApplicationsCoverage.cls5029
LispsimN.lsp4994
ScalaSpeedTest1MB.sc4908
GroovyZulTagLib.groovy4714
PowershellPresentationFramework.ps14108
Adabhps-print_full_version.adb3961
JavaServer Pagessink_jq.jsp3850
GNpatch-third_party ffmpeg ffmpeg_generated.gni3742
BasicMSA_version116_4q.bas3502
PascalPython_StdCtrls.pas3399
Standard ML (SML)arm.sml3375
Erlanglipsum.hrl3228
ASPmylib.asp3149
CSSthree-viewer.css3071
Unreal ScriptScriptedPawn.uc2909
CoffeeScriptgame.coffee2772
AutoHotKeyfishlog5.93.ahk2764
MQL4PhD Appsolute System.mq42738
ProcessingFinal.pde2635
IsabelleStdInst.thy2401
RazorChecklist.cshtml2341
Sass_multi-color-css-stackicons-social.scss2325
Valavalaccodebasemodule.vala2100
MSBuildall.props2008年
Rustffi.rs1928
QMLDots.qml1875
F#test.fsx1826
Vim Scriptnetrw.vim1790
Korn Shellattachment.ksh1773
VueVue1738
sedSED1699
GLSLcomp1699
Nixauth.nix1615
Mustachetemplate.mustache1561
Bitbakemy-2010.bb1549
Ur/Webvotes.ur1515
BASHpgxc_ctl.bash1426
MQL Headerhanoverfunctions.mqh1393
Visual BasicLGMDdataDataSet.Designer.vb1369
Q#flfacturac.qs1359
C Shellregtest_hwrf.csh1214
MQL5DTS1-Build_814.1_B-test~.mq51186
XtendParser.xtend1116
Nimdisas.nim1098
CMakeMacroOutOfSourceBuild.cmake1069
Protocol Buffersconfigure.proto997
SKILLswitch.il997
COBOLgeekcode.cob989
Game Maker LanguagehydroEx_River.gml982
Gherkin Specificationupload_remixed_program_again_complex.feature959
Alloybattleformulas.als948
Bosquerecover.bsq924
ColdFusionjquery.js.cfm920
Stylusbuttron.styl866
ColdFusion CFScriptapiUtility.cfc855
Verilogexec_matrix.vh793
Freemarker TemplateDefaultScreenMacros.html.ftl771
Crystallexer.cr753
Forthe4690
Monkey Cmc672
Rakefileimport.rake652
Zshzshrc649
Ruby HTMLext_report.rhtml633
Handlebarstemplates.handlebars557
SRecode TemplateAl3SEbeK61s.srt535
SconsSConstruct522
AgdaSquare.agda491
Ceylonruntime.ceylon467
Juliusdefault-layout.julius436
WolframqmSolidsPs8dContourPlot.nb417
Cabalparconc-examples.cabal406
Fragment Shader Fileflappybird.fsh349
ATSats_staexp2_util1.dats311
Jinjaphp.ini.j2307
Opalangunicode.opa306
Twig Templateproduct_form.twig296
ClojureScriptcore.cljs271
Hamlethamlet270
OzStaticAnalysis.oz267
ElmIndexer.elm267
Mesonmeson.build248
ABAPZRFFORI99.abap244
DockerfileDockerfile243
Wrenrepl.wren242
Fishfisher.fish217
Emacs Dev Envede211
GDScripttiled_map.gd195
IDLbgfx.idl187
Jadedocs.jade181
PureScriptList.purs180
XAMLMidnight.xaml179
Flow9TypeMapper.js.flow173
IdrisUtils.idr166
PSL Assertionpre_dec.psl162
Leankernel.lean161
MUMPSlink.mps161
Vertex Shader Filebase.vsh152
Go Templatecode-generator.tmpl148
Makopokemon.mako137
Closure Templatetemplate.soy121
Zigmain.zig115
TOMLtelex_o.toml100
Softbridge Basicasm.sbl98
QCLbwt.qcl96
Futharkmath.fut86
Ponyjstypes.pony70
LOLCODELOLTracer.lol61
Alchemistalchemist.crn55
MadlangCopying.MAD44
LD Scriptplugin.lds39
Device Treedts22
FIDLGlobalCapabilitiesDirectory.fidl19
JAILICENSE.jai18岁
JustJustfile7
Android Interface Definition Languageaidl3
Ur/Web ProjectjointSpace.urp2
Spice NetlistGRI30.CKT2

关于行数最复杂的文件?


从理论上讲,这听起来不错,但实际上...缩小或没有换行符的内容会使结果失真,从而使它们毫无意义。因此,我不发布计算结果。不过,我创建了一个scc支持微小的检测是从计算结果中删除。

您可能可以根据可用数据得出一些结论,但是我希望所有用户都能从此功能中受益scc

每种语言中评论最多的文件是什么?


我不知道您可以从中提取什么有价值的信息,但是很有趣。

注意事项 创建文件时,由于某些其他信息,下面的某些链接可能不起作用。大多数都可以,但是对于某些情况,您可能需要稍微修改URL。

完整清单
语言能力
Prologts-with-score-multiplier.p5 603 870
çtestgen.c1 705 508
巨蟒Untitled0.py1 663 466
JavaScript100MB.js1 165 656
SVGp4-s3_I369600.svg1 107 955
SQLtest.sql858 993
C Headerhead.h686 587
C++ResidueTopology.cc663 024
Autoconfsquare_detector_local.in625 464
TypeScriptreallyLargeFile.ts583 708
LEXpolaris-xp900.l457 288
XMLTest1-CDL-soapui-project.xml411 321
HTMLtodos_centros.html366 776
PascalFHIR.R4.Resources.pas363 289
SystemVerilogmkToplevelBT64.v338 042
plt.php295 054
TypeScript Typingsdojox.d.ts291 002
VerilogCVP14_synth.vg264 649
Luaobjects.lua205 006
VTestDataset01-functional.v201 973
爪哇FinalPackage.java198 035
C++ Headertest_cliprdr_channel_xfreerdp_full_authorisation.hpp196 958
Shelladd_commitids_to_src.sh179 223
C#ItemId.cs171 944
FORTRAN Modernslatec.f90169 817
AssemblyHeavyWeather.asm169 645
Module-Definitiontop_level.final.def139 150
FORTRAN Legacydlapack.f110 640
VHDLcpuTest.vhd107 882
Groovygroovy98 985
IDLall-idls.idl91 771
WolframK2KL.nb90 224
Gofrequencies.go89 661
Schemes7test.scm88 907
Dcoral.jar.d80 674
Coqcycloneiv_hssi_atoms.v74 936
Specman esysobjs.e65 146
Puppetsqlite3.c.pp63 656
Wrenmany_globals.wren61 388
Boosun95.tex57 018
Rubybigfile.rb50 000
Objective Cjob_sub011.m44 788
CSSscreener.css43 785
SwigCIDE.I37 235
FishGodsay.fish31 103
Sasssm30_kernels.sass30 306
CoffeeScripttmp.coffee29 088
Erlangnci_ft_ricm_dul_SUITE.erl28 306
Lispkm_2-5-33.lisp27 579
YAMLciudades.yml27 168
[RPhyloSimSource.R26 023
ScalaGeneratedRedeclTests.scala24 647
Emacs Lisppjb-java.el24 375
HaskellDipole80.hs24 245
ATStest06.dats24 179
m4ax.m422 675
ActionScript__2E_str95.as21 173
Objective C++edges-new.mm20 789
Visual BasicclsProjections.vb20 641
TCL68030_TK.tcl20 616
Nixnix19 605
PerlLF_aligner_3.12_with_modules.pl18 013
Adaamf-internals-tables-uml_metamodel-objects.adb14 535
BatchMAS_0.6_en.cmd14 402
OCamlcode_new.ml13 648
LaTeXpm3dcolors.tex13 092
Properties Filemessages_ar_SA.properties13 074
MSBuildncrypto.csproj11 302
ASP.NETGallerySettings.ascx10 969
Powershellmail_imap.ps110 798
Standard ML (SML)TCP1_hostLTSScript.sml10 790
Darthtml_dart2js.dart10 547
AutoHotKeystudio.ahk10 391
ExpectNavigator.exp10 063
JuliaPETScRealSingle.jl9417
MakefileMakefile9204
Fortheuroparl.lowercased.fr9107
ColdFusionjs.cfm8786
TeXhyperref.sty8591
Opalangi18n_language.opa7860
LESS_variables.less7394
SwiftCodeSystems.swift6847
Bazelgcc-mingw-w64_12_amd64-20140427-2100.build6429
Kotlin_Arrays.kt5887
SAS202_002_Stream_DQ_DRVT.sas5597
HaxeCachedRowSetImpl.hx5438
Rustlrgrammar.rs5150
Monkey Cmc5044
Cythonpcl_common_172.pxd5030
Nimdisas.nim4547
Game Maker Languagegm_spineapi.gml4345
ABAPZACO19U_SHOP_NEW_1.abap4244
XAMLRaumplan.xaml4193
RazorPrivacy.cshtml4092
Varnish Configuration46_slr_et_rfi_attacks.vcl3924
BasicMSA_version116_4q.bas3892
IsabellePick.thy3690
Protocol Buffersmetrics_constants.proto3682
BASHbashrc3606
Clojureall-playlists-output.clj3440
F#GenericMatrixDoc.fs3383
ThriftNoteStore.thrift3377
COBOLdb2ApiDf.cbl3319
JavaServer Pagessink_jq.jsp3204
Modula3gdb.i33124
Visual Basic for ApplicationsHL7xmlBuilder.cls2987
Oztiming.oz2946
Closure Templatebuckconfig.soy2915
AgdaPifextra.agda2892
StataR2_2cleaningprocess.do2660
ColdFusion CFScriptIntake.cfc2578
LunaBase.luna2542
Unreal ScriptUIRoot.uc2449
CMakecmake2425
Orglens-wsn.org2417
Flow9index.js.flow2361
MQL HeaderIncGUI.mqh2352
JSXContactSheetII.jsx2243
MQL4PhD Appsolute System.mq42061
Ruby HTMLFinalOral-Old.Rhtml2061
GDScriptgroup.gd2023
Processingtestcode.pde2014年
PSL Assertion2016-08-16.psl2011年
ASPc_system_plugin.asp1878
AWKdic-generator.awk1732
Jinjaphp.ini.j21668
Zsh.zshrc1588
Q#in_navegador.qs1568
sedMakefile.sed1554
Styluspopup.styl1550
BitbakeDoxyfile.bb1533
Rakefilesamples.rake1509
Gherkin SpecificationWorkflowExecution.feature1421
Crystalstring.cr1412
Android Interface Definition LanguageITelephony.aidl1410
XtendProperties.xtend1363
SKILLDT_destub.il1181
Madlang.config.mad1137
Spice NetlistAPEXLINEAR.ckt1114
QMLMainFULL.qml1078
GLSLsubPlanetNoise.frag1051
Ur/Webinitial.ur1018
AlloyTransactionFeatureFinal.als1012
Valapuzzle-piece.vala968
Smarty TemplateEnsau.tpl965
Makojobs.mako950
TOMLtraefik.toml938
gitignore.gitignore880
Elixirmacros.ex832
GNrules.gni827
Korn Shelllx_distro_install.ksh807
LD Scriptvmlinux.lds727
SconsSConstruct716
HandlebarsConsent-Form.handlebars714
Device Treeddr4-common.dtsi695
FIDLamb.in.fidl686
JuliusglMatrix.julius686
C Shellsetup_grid.csh645
Leanperm.lean642
IdrisOverview.idr637
PureScriptArray.purs631
Freemarker Templateresult_softwares.ftl573
ClojureScriptlt-cljs-tutorial.cljs518
Fragment Shader Filebulb.fsh464
ElmAttributes.elm434
Jadeindex.jade432
Vueform.vue418
Gradlebuild.gradle416
Luciusbootstrap.lucius404
Go Templatefast-path.go.tmpl400
Mesonmeson.build306
F*Crypto.Symmetric.Poly1305.Bignum.Lemmas.Part1.fst289
CeylonIdeaCeylonParser.ceylon286
MQL5ZigzagPattern_oldest.mq5282
XCode ConfigProject-Shared.xcconfig265
Futharkblackscholes.fut257
Ponyscenery.pony252
Vertex Shader FileCC3TexturableRigidBones.vsh205
Softbridge Basicgreek.sbl192
Cabaldeeplearning.cabal180
nuspecXamarin.Auth.XamarinForms.nuspec156
DockerfileDockerfile152
Mustachemodels_list.mustache141
LOLCODELOLTracer.lol139
BuildStreamastrobib.bst120
JanetJanet101
Cassiusxweek.cassius94
Docker ignore.dockerignore92
Hamletupload.hamlet90
QCLmod.qcl88
Dhallnix.bash.dhall86
ignore.ignore60
JustJustfile46
SRecode Templatesrecode-test.srt35
Bitbucket Pipelinebitbucket-pipelines.yml30
Ur/Web Projectreader.urp22
Alchemistctrl.crn16
Zigmain.zig12
MUMPSmps11
Bosquebosque.bsq8
Report Definition Languageexample.rdl4
Emacs Dev EnvProject.ede3
Cargo LockCargo.lock2
JAIthekla_atlas.jai1个


多少个“清洁”项目


在“纯”项下的项目类型完全是一种语言。当然,这本身并不是很有趣,所以让我们从上下文中来看它们。事实证明,绝大多数项目的语言少于25种,大多数项目的语言少于10种。

下图中的峰用四种语言表示。

当然,在干净的项目中只能有一种编程语言,但是支持其他格式,例如markdown,json,yml,css,.gitignore scc。假设任何使用少于五种语言的项目都是“干净的”(对于某种程度的清洁度),这可能是合理的,并且这仅占整个数据集的一半以上。当然,您对清洁度的定义可能不同于我的定义,因此您可以专注于自己喜欢的任何数字。

让我惊讶的是,围绕34-35种语言的语言出现了奇怪的增长。对于它的来源,我没有合理的解释,这可能值得单独调查。



完整清单
1个886 559
2951 009
3989 025
41 070 987
51 012 686
6845 898
7655 510
8542 625
9446 278
10392 212
11295 810
12204 291
13139 021
14110 204
1587 143
1667 602
1761 936
18岁44 874
1934 740
2032 041
2125 416
2224 986
2323 634
2416 614
2513 823
2610 998
279 973
286 807
29日7 929
306 223
315 602
326 614
3312 155
3415 375
357329
366227
374158
383744
393844
401570
411041
42746
431037
441363
45934
46545
47503
48439
49393
50662
51436
52863
53393
54684
55372
56366
57842
58398
59206
60208
61177
62377
63450
64341
6586
6678
67191
68280
6961
70209
71330
72171
73190
74142
75102
7632
7757
7850
7926
8031
8163
8238
8326
8472
85205
8673
8767
8821
8915
906
9112
9210
938
9416
9524
967
9730
984
991个
1006
1017
10216
1031个
1045
1051个
10619
1082
1092
1101个
1113
1121个
1131个
1143
1155
1165
1181个
1205
1241个
1251个
1312
1321个
1342
1361个
1371个
1381个
1421个
1432
1441个
1581个
1592

使用TypeScript但不使用JavaScript的项目


啊,TypeScript的现代世界。但是对于TypeScript项目,有多少纯粹是这种语言?

清理TypeScript项目
27,026个项目

我必须承认,这个数字让我有些惊讶。尽管我知道将JavaScript与TypeScript混合使用是相当普遍的,但我认为将会有更多使用新语言的项目。但是,更新的存储库集可能会大大增加其数量。

有人使用CoffeeScript和TypeScript吗?


使用TypeScript和CoffeeScript
7849个项目

我觉得有些TypeScript开发人员对此一无所知。如果这对他们有帮助,我可以假定这些项目大多数都是程序,例如scc带有用于测试目的的所有语言的示例。

每种语言的典型路径长度是多少


鉴于您可以将所需的所有文件上传到一个目录中或创建目录系统,典型的路径长度和目录数是多少?

为此,请对每个文件的路径中的斜杠数和平均值进行计数。我不知道在这里会发生什么,除了Java可能位于列表的顶部,因为通常文件路径很长。

完整清单
语言能力
ABAP4,406555175781266
ASP6,372800350189209
ASP,NET7,25
ATS4,000007286696899
AWK4,951896171638623
ActionScript8,139775436837226
Ada4,00042700953189
Agda3,9126438455441743
Alchemist3,507827758789091
Alex5,000001311300139
Alloy5,000488222547574
Android Interface Definition Language11,0048217363656
Arvo5,9999994741776135
AsciiDoc3,5
Assembly4,75
AutoHotKey2,2087400984292067
Autoconf5,8725585937792175
BASH2,1289059027401294
Basic3,003903865814209
Batch6,527053831937014
Bazel3,18005371087348
Bitbake2,015624999069132
Bitbucket Pipeline2,063491820823401
Boo4,010679721835899
Bosque4,98316764831543
Brainfuck4,2025654308963425
BuildStream3,4058846323741645
ç4,923767089530871
C Header4,8744963703211965
C Shell3,027952311891569
C#3,9303305113013427
C++3,765686050057411
C++ Header5,0468749664724015
CMake4,474763816174707
COBOL2,718678008809146
CSS3,158353805542812
CSV2,0005474090593514
Cabal2,0234456174658693
Cargo Lock2,602630615232607
Cassius3,56445312181134
Ceylon4,750730359584461
Clojure3,992209411809762
ClojureScript4,905477865257108
Closure Template6,800760253008946
CoffeeScript4,503051759227674
ColdFusion6,124976545410084
ColdFusion CFScript6,188602089623717
Coq4,000243186950684
Creole3,124526690922411
Crystal3,1243934621916196
Cython5,219657994911814
D9,291626930357722
Dart3,939864161220478
Device Tree6,530643464186369
Dhall0,12061593477278201
Docker ignore2,9984694408020562
Dockerfile3,1281526535752064
Document Type Definition6,3923129292499254
Elixir3,9999989270017977
Elm2,968016967181992
Emacs Dev Env4,750648772301943
Emacs Lisp2,0156250001746203
Erlang4,756546300111156
Expect5,126907349098477
Extensible Stylesheet Language Transformations4,519531239055546
F#5,752862453457055
F*4,063724638864983
FIDL4,484130888886213
FORTRAN Legacy6,117128185927898
FORTRAN Modern5,742561882347131
Fish3,993835387425861
Flow99,462829245721366
Forth4,016601327653859
Fragment Shader File3,8598623261805187
Freemarker Template11,122007250069213
Futhark6,188476562965661
GDScript3,2812499999872675
GLSL6,6093769371505005
GN3,497192621218512
Game Maker Language4,968749999941792
Game Maker Project3,8828125
Gherkin Specification3,999099795268081
Go3,9588454874029275
Go Template4
Gradle2,655930499769198
Groovy11,499969503013528
HEX3,98394775342058
HTML4,564478578133282
Hamlet3,4842224120074867
Handlebars4,998766578761208
Happy5,699636149570479
Haskell2,000140870587468
Haxe5,999999999999997
IDL6,249999993495294
Idris3,515075657458509
Intel HEX3,983397483825683
Isabelle4,18351352773584
JAI7,750007518357038
JSON3,9999972562254724
JSONL5,751412352804029
JSX5,0041952044625715
Jade4,744544962807595
Janet3,0312496423721313
爪哇11,265740856469563
JavaScript4,242187985224513
JavaServer Pages7,999993488161865
Jenkins Buildfile2,000000000087315
Jinja6,937498479846909
Julia3,9999848530092095
Julius3,187606761406953
Jupyter2,375
Just4,312155187124516
Korn Shell7,0685427486899925
Kotlin6,455277973786039
LD Script5,015594720376608
LESS5,999999999999886
LEX5,6996263030493495
LOLCODE3,722656242392418
LaTeX4,499990686770616
Lean4,1324310302734375
License4,7715609660297105
Lisp6,00048828125
Lua3,999999057474633
Lucius3,0000303482974573
Luna4,758178874869392
MQL Header5,421851994469764
MQL45,171874999953652
MQL54,069171198975555
MSBuild4,8931884765733855
MUMPS4,999999672174454
Macromedia eXtensible Markup Language3,9139365140181326
Madlang3,625
Makefile4,717208385332443
Mako4,0349732004106045
Markdown2,25
Meson3,342019969206285
Modula33,980173215190007
Module-Definition8,875000973076205
Monkey C3,0672508481368164
Mustache6,000003708292297
Nim3,7500824918105313
Nix2,0307619677526234
OCaml3,269392550457269
Objective C3,526367187490962
Objective C++5,000000834608569
Opalang4,500069382134143
Org5,953919619084296
Oz4,125
p7,999984720368943
PKGBUILD4,875488281252839
PSL Assertion5,004394620715175
Pascal5,0781240425935845
Patch3,999999999999819
Perl4,691352904239976
Plain Text5,247085583343509
Polly2,953125
Pony2,9688720703125
Powershell4,596205934882159
Processing3,999931812300937
Prolog4,4726600636568055
Properties File3,5139240025278604
Protocol Buffers6,544742336542192
Puppet6,662078857422106
PureScript4,000007774680853
巨蟒5,4531080610843805
Q#3,7499999999999996
QCL2,992309644818306
QML7,042003512360623
[R3,0628376582587578
Rakefile4,78515574071335
Razor8,062499530475186
ReStructuredText5,061766624473476
Report Definition Language5,996573380834889
Robot Framework4,0104638249612155
Ruby5,1094988621717725
Ruby HTML5,57654969021678
Rust3,2265624976654292
SAS4,826202331129183
SKILL6,039547920227052
SPDX4,000203706655157
SQL7,701822280883789
SRecode Template3,500030428171159
SVG5,217570301278483
Sass6,000000000056957
Scala4,398563579539738
Scheme6,999969714792911
Scons5,010994006631478
Shell4,988665378738929
Smarty Template5,000527858268356
Softbridge Basic4,87873840331963
Specman e5,765624999999318
Spice Netlist3,9687499998835882
Standard ML (SML)4,031283043158929
Stata6,27345275902178
Stylus3,5000006667406485
Swift3
Swig5,246093751920853
SystemVerilog2,9995259092956985
Systemd3,9960937500000284
TCL2,508188682367951
TOML2,063069331460588
TaskPaper2,003804363415667
TeX3,500000000931251
Thrift4,956119492650032
Twig Template8,952746974652655
TypeScript4,976589231140677
TypeScript Typings5,832031190521718
Unreal Script4,22499089783372
Ur/Web4,41992186196147
Ur/Web Project5,1147780619789955
V4,251464832544997
VHDL4,000000961231823
Vala3,99804687498741
Varnish Configuration4,006103516563625
Verilog3,6906727683381173
Verilog Args File8,93109059158814
Vertex Shader File3,8789061926163697
Vim Script3,9995117782528147
Visual Basic4,5
Visual Basic for Applications3,6874962672526417
Vue7,752930045514701
Wolfram3,075198844074798
Wren4
XAML4,515627968764219
XCode Config6,969711296260638
XML6
XML Schema5,807670593268995
Xtend4,315674404631856
YAML3,2037304108964673
Zig3,4181210184442534
Zsh2,0616455049940288
gitignore2,51172685490884
ignore10,6434326171875
m43,7519528857323934
nuspec4,109375
sed4,720429063539986

是YAML还是YML?


在Slack曾经有一次“讨论”-使用.yaml或.yml。双方都有许多人被杀。

辩论可能最终(?)结束。尽管我怀疑有些人还是会死于争执。

扩展名编号
yaml3,572,609
yml14076349

大写,小写还是混合大小写?


文件名使用什么寄存器?由于仍然存在扩展,因此我们可以预期主要是混合情况。

款式数量
混合的9094732
下层2476
2875

当然,这不是很有趣,因为通常文件扩展名是小写的。如果忽略扩展名怎么办?

款式数量
混合的8104053
下层347458
614922

不是我所期望的。同样,大多数情况是混合的,但我会认为底层会更受欢迎。

Java工厂


同事在查看一些旧的Java代码时想到的另一个想法。我以为,为什么不对标题中出现Factory,FactoryFactory或FactoryFactoryFactory的任何Java代码添加检查。这个想法是估计这种工厂的数量。

型式数量分享到
不是工厂27137557497.9%
工厂56955682.09%
工厂工厂25,3160.009%
工厂工厂00%

因此,只有2%以上的Java代码是工厂或工厂。幸运的是,没有找到工厂。尽管我确信至少有一个严肃的三级递归多工厂仍然可以在某种Java 5整体模型中运行,并且每天赚到的钱比我整个职业生涯中所赚的钱还多,但这个笑话也许最终会消失。 。

。忽略文件


.ignore文件的概念由burntsushi和ggreer在“黑客新闻”讨论中提出也许这是“竞争”开放源代码工具的最佳示例之一,这些工具可以很好地结合在一起并在创纪录的时间内完成。它已成为添加工具将忽略的代码的事实上的标准。scc也符合.ignore规则,但也知道如何计算它们。让我们看看这个想法传播得如何。

完整清单
.ignore
09 088 796
1个7848
21258
3508
4333
543
6130
78
814
983
1049
1135
12112
13736
154
171个
18岁4
202
211个
232
243
262
271个
3431
3519
369
382
391个
4312
441个
452
465
497
507
5112
522

未来的想法


我喜欢对未来做一些分析。扫描AWS AKIA密钥之类的东西将非常好。我还想通过对每个项目的分析来扩大Bitbucket和Gitlab项目的覆盖范围,以查看是否可能存在来自不同领域的开发团队。

如果我重复这个项目,我想克服以下缺点,并考虑以下想法。

  • 将URL正确存储在元数据中的某个位置。使用文件名存储它不是一个好主意,因为信息会丢失,并且可能很难确定文件的来源和位置。
  • 不要理会S3。如果仅将其用于存储,则为流量付费几乎没有意义。从一开始就将所有内容锤打成tar文件会更好。
  • , .
  • -n , , , .
  • scc, , . , CIDE.C C, , HTML. .
  • , scc, , , . .
  • 我想对scc添加一个shebang检测
  • 最好考虑一下Github上的星星数和提交数。
  • 我想以某种方式添加可维护性指标计算。很高兴看到哪些项目根据其大小被认为是最可修复的。

为什么这一切呢?


好吧,我可以获取其中一些信息,并将其用于searchcode.com搜索引擎和program中scc至少有一些有用的数据点。最初,该项目是通过多种方式构想的。另外,将您的项目与其他项目进行比较非常有用。花几天时间解决一些有趣的问题也是一种有趣的方式。并进行了良好的可靠性检查scc

另外,我目前正在开发一种工具,可以帮助领先的开发人员或管理人员分析代码,搜索特定的语言,大文件,缺陷等。...假设您需要分析多个存储库。您输入某种代码,该工具将说明它的可维护性以及维护它所需的技能。在决定是否购买某种代码库,为其提供服务或获得开发团队给出的有关您自己的产品的想法时,这很有用。从理论上讲,这应该有助于团队通过共享资源进行扩展。类似于AWS Macie,但需要代码-我正在研究类似的东西。我本人在日常工作中需要此工具,并且我怀疑其他人可能会找到这种工具的应用,至少是理论上如此。

对于那些有兴趣的人来说,也许值得在这里进行某种形式的注册。

未处理/已处理的文件


如果有人要进行自己的分析并进行更正,请访问以下链接到已处理文件(20 MB)。如果有人想在公共领域发布原始文件,请告诉我。这是83 GB的tar.gz,内部刚好超过1 TB。内容包含超过900万个各种大小的JSON文件。

UPD 建议几个好心人放置文件,这些位置如下所示:


托管该文件的tar.gz感谢CNCF服务器xet7项目Wekan

Source: https://habr.com/ru/post/zh-CN470852/


All Articles