Chroium 源码目录结构分析(1):源码目录体积一栏

获取源码

首先,我们拉一份最新的源代码(笔者是2024.6.6日拉取的):

fetch --nohistory chromium

源码预处理

如果运行build,会生成许多生成的代码,因此我们不运行build。

然后,把干扰后续分析的.git目录删除。这次拉取仅仅从源文件的物理结构对chromium进行分析。

rd /s /q .git

然后删除testsdata、test等相关的文件,减少理解源码功能的干扰。

@echo off
setlocal enabledelayedexpansion

REM Define the root directory to start searching from
set "ROOT_DIR=src"

REM Find all directories named "test" under the root directory and delete them
for /r "%ROOT_DIR%" %%d in (test) do (
    if /i "%%~nxd"=="test" (
        echo Deleting: "%%d"
        rd /s /q "%%d"
    )
)

echo Deletion complete.

endlocal

还手动删除了一些数据

获取数据

目录体积一览

用space sniffer 可视化观察源码目录体积的情况,有个大概的印象:

从src根目录:可见体积最大的是third-party,占据了接近80%

放大我们后面会重点关注的src/content部分:

以及重点关注的thirdparty/blink:

文件类型聚类

接着,我们写个脚本,按文件类型,统计个数和大小:(File Types Analysis)

ExtensionFile CountTotal Size (bytes)
.h92392774105533
.cc787001011699744
[none]32369528603110
.js22251268799787
.sha121563863072
.c18014321187291
.py17853193770487
.cpp15631342358247
.html1310777496984
.ts1229887919096
.txt10025163453438
.java969781780064
.pbtxt767314195049
.json7410272957548
.md622731809118
.go571572429888
.gn570320890844
.png5611102977493
.mm551944819979
.xtb5163323351125
.frag42057609282
.pm365849830859
.xml304635833237
.map295348570301
.vert27614519297
.idl27146330826
.rs233750053349
.proto21329426761
.mojom17996385653
.sample17543230720
.yaml17073040011
.in164311598760
.sh16406088675
.pl151712907535
.icon14441821459
.css13768287662
.csv135165891710
.pod132623668650
.svg128512072576
.rst11967395627
.comp11642427107
.td103442924563
.S91322159427
.gni8485068002
.chromium826634536
.cfg7486186795
.inc744292674669
.yml6601235700
.cmake6182809973
.asm60616150717
.sksl601638268
.ttf59426986702
.bazel5832224953
.pem5697965101
.hpp56633897254
.bzl5514452617
.dll536206950836
.s4893164768
.test4622524462
.a46091781731
.tmpl4591411432
.pdf427161248367
.utf842411190941
.cjs3993569046
.bin35296919280
.patch3512601932
.sql3431388571
.def3346722034
.m3312704565
.hh3273742006
.pyc3103421089
.gif3057698487
.rts294202898
.wav28410097254
.bat2821842961
.BUILD277472005
.vk271161213
.key264425547
.jpg25612667896
.en2465889240
.tq2431415868
.template238604356
.ucm22220039087
.exe220975639548
.tesc220938125
.pb211220387
.mk211545744
.toml208327721
.cs2053693035
.webp2034960153
.swift199885223
.php1951528709
.mjs1863113129
.star1782438276
.so17813949612
.rb166679869
.pyi144304030
.grdp1404163500
.grd1365951416
.plist133211718
.pdb13076857344
.tese127465412
.zip1207022009
.euc-kr1091966786
.ico1062780310
.m41022198456
.tpl102793106
.man101357309
.mdoc99324131
.idx9510188780
.pack911356462055
.rev911446336
.gz89127234439
.rc87168686
.conf85242049
.pydeps82137908
.dict82356797
.al8264043
.yapf816371
.dox80549790
.orig79130748
.current_version7714439
.175443936
.avif701305373
.expected68863150
.json5681213323
.jsx68109086
.diff66721048
.mock-http-headers634294
.ogg61591480
.info61172965
.ini5834332
.woff2581331069
.fbs57335138
.tcl57377715
.pxi57257149
.bdic57112934430
.vue57110081
.build55226201
.scss55192410
.kt54386835
.textpb5369376
.dsc5348662
.dart53344885
.hyb521762492
.nc51137573
.am51642858
.f511364188
.cmd5096767
.jst5099630
.2645054395740
.geom5044572
.include49199229
.woff49924084
.xhtml49515027
.texi491956440
.aff4913875810
.dic49154174446
.textproto482488935
.lock483109574
.tlb45525492
.settings4410278
.tcc44910592
.evt447131
.gradle4370306
.aidl4042663
.TXT40272529
.pyd406201920
.properties4019738
.eot401361708
.rchit407308
.storyboard37231466
.mp4371882958
.lds3623048
.ipynb36975712
.flags3430045
.mod3336815
.options331192
.pc3325004
.compute3330662
.jinja23166533
.pyl31699967
.typed31488
.lua31407540
.lib3033084384
.pbxproj30902205
.dot2966483
.strings2932513
.raw29384009
.modulemap29539586
.dic_delta29442796
.hxx27139938
.jpeg277161209
.jar2623377841
.dat2666069008
.j22639960
.es26980221
.enc26280997
.unitjs26418755
.ps12584450
.rules23820993
.errordata2323597
.inl23508913
.xsl23335774
.podspec23522317
.vcproj22539682
.cxx221156567
.mac2280583
.log21186461
.de21868870
.o2141389
.cur2156918
.wasm209476297
.hlsl2096103
.fragment2030580
.sln2090004
.manifest1914019
.ver199448
.bmp19641343
.webm191367036
.markdown19111988
.hjson1934354
.mesh1971472
.cipd_version182187
.var18194614
.exp18249790
.el1883197
.rgen1815726
.version1715636
.entitlements177073
.sum17124231
.tar17247808
.vcxproj17185018
.bazelrc1744017
.hlo17839360
.jinja1615027
.cnf1638464
.ac16288424
.BSD1620320
.bp161026851
.sb1545622
.asset1539079
.applescript149784
.dtd14493656
.meson144077
.bash1424521
.bnf148666
.cl1473704

src 一级目录信息提取:写一段python脚本,自动提取第一层目录的特征和readme:

接下来移步:Chroium 源码目录结构分析(2)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值