各位玩家你们在阅读内核源码时,一般都使用什么工具呢?欢迎到文章末尾投上你的一票!

内核源码和uboot源码一般囊括的文件都很多很多,未删减的都能上万个文件,使用一款称手的阅读源码软件可能可以让你的工作效率提高一个level哦。

当然啦,在windows系统下阅读源码,Source Insight永远都是首选,yyds!选择使用vscode的一般都是在ubuntu等虚拟机环境下使用,这样在修改源码编译等操作尤为的方便。

初次使用vscode阅读源码过的玩家应该多多少少都有些不舒适,特别是从Source Insight用户过来的玩家,比如当源码树很庞大的时候,使用vscode打开源码文件夹,会默认的将所有的文件都添加到工程呢,当我们需要检索某个关键字的时候,vscode会检索出一堆匹配的字串,而且时间随着文件数量增大而增大,这

使用Source Insight阅读源码时,可以通过手动去选择添加的文件,进而可以提高关键字的搜索速度和准确度;
而vscode其实也是可以做到,下面上教程!

使用vscode创建源码工程

首先使用vscode打开你要阅读的源码路径

vscode查看镜像源 vscode查看库源码_ubuntu


完了之后它会自动把当前选中路径下的所有文件给添加到左边栏,如下:

vscode查看镜像源 vscode查看库源码_ubuntu_02


这个时候我们需要将它保存到一个指定的工作区,并起个名字:

vscode查看镜像源 vscode查看库源码_vscode查看镜像源_03


vscode查看镜像源 vscode查看库源码_vscode_04


工作区的具体名字可以自行更改,保存路径推荐放在你要阅读的源码路径下;

自动创建规则

在这之前,所有工作都是基础工作只是完成了一个vscode的工作创建,那么我们需要屏蔽掉一些我们不需要阅读的文件,这个时候我们就要创建一个规则,让vscode帮我们筛选过滤;

点击vscode左下角齿轮形状的按钮,选择设置;也可以按快捷键ctrl+,进入设置界面

vscode查看镜像源 vscode查看库源码_ubuntu_05

剔除指定文件及文件夹

进入设置界面后,选择工作区(Workspace)下的文本编辑器(Text Editor)下的文件(File)下的exclude,点击添加模式(add pattern)

vscode查看镜像源 vscode查看库源码_工作区_06


在这里添加任意文件夹路径,在资源管理器即左边栏就会主动剔除你写入的文件路径,如下:

vscode查看镜像源 vscode查看库源码_vscode查看镜像源_07


写入arch/mips后,点击确定,左边栏的arch/mips将立刻消失,如下:

vscode查看镜像源 vscode查看库源码_vscode查看镜像源_08

屏蔽检索

进入设置界面后,选择工作区(Workspace)下的功能(Features)下的搜索(Search)下的exclude,点击添加模式(add pattern)

vscode查看镜像源 vscode查看库源码_ubuntu_09


完成添加后,在使用全局检索时,指定的文件及文件夹下的内容将不被检索考虑,会主动剔除选中的文件及文件夹内容;

手动创建

如果你想比较直观,不想点击这么多按钮的话,你可以试试手动创建,如下:

创建.vscode文件夹

点击工作区名字,在边上会出现一个创建文件夹的标志,点击后输入.vscode即可;

vscode查看镜像源 vscode查看库源码_vscode查看镜像源_10

新建settings.json文件

完成.vscode文件夹创建之后,需要在该文件夹下面新建一个名为setting.json的json文件

vscode查看镜像源 vscode查看库源码_ubuntu_11


接着写入如下内容:

{
	"search.exclude": {
	},
	"files.exclude": {
	}
}

该文件使用json的语法编写,有两个对象,一个是"search.exclude",一个是"files.exclude",这两个对象就可以实现我们vscode工作区文件检索屏蔽的规则编写;
"search.exclude"表示需要在检索结果中排除掉的文件或者文件夹;
"files.exclude"表示需要将指定的文件夹排除在工程左侧的文件栏中;
这里的两个对象,对应着自动创建规则下面的那两个exclude
我们需要屏蔽什么,就把什么文件夹路径、文件路径写进去即可;

{
	"search.exclude": {
		"**/*.o": true,
		"**/*.su": true,
		"**/*.cmd": true,
		
		"arch/alpha": true,
		"arch/mips": true,
		"arch/nds32": true,
		"arch/nios2": true,
		
		"arch/arc": true,
		"arch/m68k": true,
		"arch/microblaze": true,
		"arch/powerpc": true,
		"arch/sandbox": true,
		"arch/sh": true,
		"arch/xtensa": true,
		"arch/x86": true,
		"arch/arm/mach*": true,
		"arch/arm/mach-zynq": false,
		"arch/arm/cpu/arm11*": true,
		"arch/arm/cpu/arm720t": true,
		"arch/arm/cpu/arm9*": true,
		"arch/arm/cpu/armv7m": true,
		"arch/arm/cpu/armv8": true,
		"arch/arm/cpu/pxa": true,
		"arch/arm/cpu/sa1100": true,
		"board/[a-w]*": true,
		"board/[y-z]*": true,
		"board/[0-9]*": true,
		"board/[A-Z]*": true,
		"board/xe*": true,
		"board/xilinx/m*": true,
		"configs/[a-y]*": true,
		"configs/[A-Z]*": true,
		"configs/[0-9]*": true
	},
	"files.exclude": {
		"**/*.o": true,
		"**/*.su": true,
		"**/*.cmd": true,
		"**/.git": true,
		/*屏蔽不相关架构*/
		"arch/alpha": true,
		"arch/mips": true,
		"arch/nds32": true,
		"arch/nios2": true,
		"arch/arc": true,
		"arch/m68k": true,
		"arch/microblaze": true,
		"arch/powerpc": true,
		"arch/sandbox": true,
		"arch/sh": true,
		"arch/xtensa": true,
		"arch/x86": true,
		"arch/arm/mach*": true,
		"arch/arm/mach-zynq": false,
		"arch/arm/cpu/arm11*": true,
		"arch/arm/cpu/arm720t": true,
		"arch/arm/cpu/arm9*": true,
		"arch/arm/cpu/armv7m": true,
		"arch/arm/cpu/armv8": true,
		"arch/arm/cpu/pxa": true,
		"arch/arm/cpu/sa1100": true,
		/*屏蔽不相关的板级文件*/
		"board/[a-w]*": true,
		"board/[y-z]*": true,
		"board/[0-9]*": true,
		"board/[A-Z]*": true,
		"board/xe*": true,
		"board/xilinx/m*": true,
		/*屏蔽不相关的配置文件*/
		"configs/[a-y]*": true,
		"configs/[A-Z]*": true,
		"configs/[0-9]*": true,
		
		/* 屏蔽不用的 DTB 文件 */
		"arch/arm/boot/dts/[a-y]*":true,
		"arch/arm/boot/dts/.*":true,
	}
}

以上是提供也给示例写法,玩家可以自行去完成配置;