获取源码
首先,我们拉一份最新的源代码(笔者是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)
| Extension | File Count | Total Size (bytes) | 
|---|---|---|
| .h | 92392 | 774105533 | 
| .cc | 78700 | 1011699744 | 
| [none] | 32369 | 528603110 | 
| .js | 22251 | 268799787 | 
| .sha1 | 21563 | 863072 | 
| .c | 18014 | 321187291 | 
| .py | 17853 | 193770487 | 
| .cpp | 15631 | 342358247 | 
| .html | 13107 | 77496984 | 
| .ts | 12298 | 87919096 | 
| .txt | 10025 | 163453438 | 
| .java | 9697 | 81780064 | 
| .pbtxt | 7673 | 14195049 | 
| .json | 7410 | 272957548 | 
| .md | 6227 | 31809118 | 
| .go | 5715 | 72429888 | 
| .gn | 5703 | 20890844 | 
| .png | 5611 | 102977493 | 
| .mm | 5519 | 44819979 | 
| .xtb | 5163 | 323351125 | 
| .frag | 4205 | 7609282 | 
| .pm | 3658 | 49830859 | 
| .xml | 3046 | 35833237 | 
| .map | 2953 | 48570301 | 
| .vert | 2761 | 4519297 | 
| .idl | 2714 | 6330826 | 
| .rs | 2337 | 50053349 | 
| .proto | 2132 | 9426761 | 
| .mojom | 1799 | 6385653 | 
| .sample | 1754 | 3230720 | 
| .yaml | 1707 | 3040011 | 
| .in | 1643 | 11598760 | 
| .sh | 1640 | 6088675 | 
| .pl | 1517 | 12907535 | 
| .icon | 1444 | 1821459 | 
| .css | 1376 | 8287662 | 
| .csv | 1351 | 65891710 | 
| .pod | 1326 | 23668650 | 
| .svg | 1285 | 12072576 | 
| .rst | 1196 | 7395627 | 
| .comp | 1164 | 2427107 | 
| .td | 1034 | 42924563 | 
| .S | 913 | 22159427 | 
| .gni | 848 | 5068002 | 
| .chromium | 826 | 634536 | 
| .cfg | 748 | 6186795 | 
| .inc | 744 | 292674669 | 
| .yml | 660 | 1235700 | 
| .cmake | 618 | 2809973 | 
| .asm | 606 | 16150717 | 
| .sksl | 601 | 638268 | 
| .ttf | 594 | 26986702 | 
| .bazel | 583 | 2224953 | 
| .pem | 569 | 7965101 | 
| .hpp | 566 | 33897254 | 
| .bzl | 551 | 4452617 | 
| .dll | 536 | 206950836 | 
| .s | 489 | 3164768 | 
| .test | 462 | 2524462 | 
| .a | 460 | 91781731 | 
| .tmpl | 459 | 1411432 | 
| 427 | 161248367 | |
| .utf8 | 424 | 11190941 | 
| .cjs | 399 | 3569046 | 
| .bin | 352 | 96919280 | 
| .patch | 351 | 2601932 | 
| .sql | 343 | 1388571 | 
| .def | 334 | 6722034 | 
| .m | 331 | 2704565 | 
| .hh | 327 | 3742006 | 
| .pyc | 310 | 3421089 | 
| .gif | 305 | 7698487 | 
| .rts | 294 | 202898 | 
| .wav | 284 | 10097254 | 
| .bat | 282 | 1842961 | 
| .BUILD | 277 | 472005 | 
| .vk | 271 | 161213 | 
| .key | 264 | 425547 | 
| .jpg | 256 | 12667896 | 
| .en | 246 | 5889240 | 
| .tq | 243 | 1415868 | 
| .template | 238 | 604356 | 
| .ucm | 222 | 20039087 | 
| .exe | 220 | 975639548 | 
| .tesc | 220 | 938125 | 
| .pb | 211 | 220387 | 
| .mk | 211 | 545744 | 
| .toml | 208 | 327721 | 
| .cs | 205 | 3693035 | 
| .webp | 203 | 4960153 | 
| .swift | 199 | 885223 | 
| .php | 195 | 1528709 | 
| .mjs | 186 | 3113129 | 
| .star | 178 | 2438276 | 
| .so | 178 | 13949612 | 
| .rb | 166 | 679869 | 
| .pyi | 144 | 304030 | 
| .grdp | 140 | 4163500 | 
| .grd | 136 | 5951416 | 
| .plist | 133 | 211718 | 
| .pdb | 130 | 76857344 | 
| .tese | 127 | 465412 | 
| .zip | 120 | 7022009 | 
| .euc-kr | 109 | 1966786 | 
| .ico | 106 | 2780310 | 
| .m4 | 102 | 2198456 | 
| .tpl | 102 | 793106 | 
| .man | 101 | 357309 | 
| .mdoc | 99 | 324131 | 
| .idx | 95 | 10188780 | 
| .pack | 91 | 1356462055 | 
| .rev | 91 | 1446336 | 
| .gz | 89 | 127234439 | 
| .rc | 87 | 168686 | 
| .conf | 85 | 242049 | 
| .pydeps | 82 | 137908 | 
| .dict | 82 | 356797 | 
| .al | 82 | 64043 | 
| .yapf | 81 | 6371 | 
| .dox | 80 | 549790 | 
| .orig | 79 | 130748 | 
| .current_version | 77 | 14439 | 
| .1 | 75 | 443936 | 
| .avif | 70 | 1305373 | 
| .expected | 68 | 863150 | 
| .json5 | 68 | 1213323 | 
| .jsx | 68 | 109086 | 
| .diff | 66 | 721048 | 
| .mock-http-headers | 63 | 4294 | 
| .ogg | 61 | 591480 | 
| .info | 61 | 172965 | 
| .ini | 58 | 34332 | 
| .woff2 | 58 | 1331069 | 
| .fbs | 57 | 335138 | 
| .tcl | 57 | 377715 | 
| .pxi | 57 | 257149 | 
| .bdic | 57 | 112934430 | 
| .vue | 57 | 110081 | 
| .build | 55 | 226201 | 
| .scss | 55 | 192410 | 
| .kt | 54 | 386835 | 
| .textpb | 53 | 69376 | 
| .dsc | 53 | 48662 | 
| .dart | 53 | 344885 | 
| .hyb | 52 | 1762492 | 
| .nc | 51 | 137573 | 
| .am | 51 | 642858 | 
| .f | 51 | 1364188 | 
| .cmd | 50 | 96767 | 
| .jst | 50 | 99630 | 
| .264 | 50 | 54395740 | 
| .geom | 50 | 44572 | 
| .include | 49 | 199229 | 
| .woff | 49 | 924084 | 
| .xhtml | 49 | 515027 | 
| .texi | 49 | 1956440 | 
| .aff | 49 | 13875810 | 
| .dic | 49 | 154174446 | 
| .textproto | 48 | 2488935 | 
| .lock | 48 | 3109574 | 
| .tlb | 45 | 525492 | 
| .settings | 44 | 10278 | 
| .tcc | 44 | 910592 | 
| .evt | 44 | 7131 | 
| .gradle | 43 | 70306 | 
| .aidl | 40 | 42663 | 
| .TXT | 40 | 272529 | 
| .pyd | 40 | 6201920 | 
| .properties | 40 | 19738 | 
| .eot | 40 | 1361708 | 
| .rchit | 40 | 7308 | 
| .storyboard | 37 | 231466 | 
| .mp4 | 37 | 1882958 | 
| .lds | 36 | 23048 | 
| .ipynb | 36 | 975712 | 
| .flags | 34 | 30045 | 
| .mod | 33 | 36815 | 
| .options | 33 | 1192 | 
| .pc | 33 | 25004 | 
| .compute | 33 | 30662 | 
| .jinja2 | 31 | 66533 | 
| .pyl | 31 | 699967 | 
| .typed | 31 | 488 | 
| .lua | 31 | 407540 | 
| .lib | 30 | 33084384 | 
| .pbxproj | 30 | 902205 | 
| .dot | 29 | 66483 | 
| .strings | 29 | 32513 | 
| .raw | 29 | 384009 | 
| .modulemap | 29 | 539586 | 
| .dic_delta | 29 | 442796 | 
| .hxx | 27 | 139938 | 
| .jpeg | 27 | 7161209 | 
| .jar | 26 | 23377841 | 
| .dat | 26 | 66069008 | 
| .j2 | 26 | 39960 | 
| .es | 26 | 980221 | 
| .enc | 26 | 280997 | 
| .unitjs | 26 | 418755 | 
| .ps1 | 25 | 84450 | 
| .rules | 23 | 820993 | 
| .errordata | 23 | 23597 | 
| .inl | 23 | 508913 | 
| .xsl | 23 | 335774 | 
| .podspec | 23 | 522317 | 
| .vcproj | 22 | 539682 | 
| .cxx | 22 | 1156567 | 
| .mac | 22 | 80583 | 
| .log | 21 | 186461 | 
| .de | 21 | 868870 | 
| .o | 21 | 41389 | 
| .cur | 21 | 56918 | 
| .wasm | 20 | 9476297 | 
| .hlsl | 20 | 96103 | 
| .fragment | 20 | 30580 | 
| .sln | 20 | 90004 | 
| .manifest | 19 | 14019 | 
| .ver | 19 | 9448 | 
| .bmp | 19 | 641343 | 
| .webm | 19 | 1367036 | 
| .markdown | 19 | 111988 | 
| .hjson | 19 | 34354 | 
| .mesh | 19 | 71472 | 
| .cipd_version | 18 | 2187 | 
| .var | 18 | 194614 | 
| .exp | 18 | 249790 | 
| .el | 18 | 83197 | 
| .rgen | 18 | 15726 | 
| .version | 17 | 15636 | 
| .entitlements | 17 | 7073 | 
| .sum | 17 | 124231 | 
| .tar | 17 | 247808 | 
| .vcxproj | 17 | 185018 | 
| .bazelrc | 17 | 44017 | 
| .hlo | 17 | 839360 | 
| .jinja | 16 | 15027 | 
| .cnf | 16 | 38464 | 
| .ac | 16 | 288424 | 
| .BSD | 16 | 20320 | 
| .bp | 16 | 1026851 | 
| .sb | 15 | 45622 | 
| .asset | 15 | 39079 | 
| .applescript | 14 | 9784 | 
| .dtd | 14 | 493656 | 
| .meson | 14 | 4077 | 
| .bash | 14 | 24521 | 
| .bnf | 14 | 8666 | 
| .cl | 14 | 73704 | 
src 一级目录信息提取:写一段python脚本,自动提取第一层目录的特征和readme:
接下来移步:Chroium 源码目录结构分析(2)-CSDN博客



















