- Highlight Word 将文件中所有所选单词高亮显示,再次点击会取消高亮。比如截图中选择“reason”并高亮,文件中的所有“reason”这个单词都高亮了。另外,这个功能对注释区无效。
- Special Window Color/Remove Special Window Color 设置和取消编辑窗口的背景颜色。
- Keyword List 显示当前文件所有的的关键字列表。
- Style Properties
- Document Options 设置编辑区文字颜色、大小、间隔等属性。
- Language Properties
- Edit Condition
4、符号窗口(Symbol Windows)
符号的概念前面第二大节第2小点解释过,不清楚的可以往前翻看。该窗口和源文件窗口相依相存,同时出现或隐藏,它显示在源文件窗口的左边,展示了当前文件中的所有符号列表。如下图所示:
顶部显示了文件名;搜索栏中输入要查找的符号可以快速找到要找的符号;中间部分显示了符号列表,每一项前面都有一个符号,这些符号表示不同的符号类型;底部为工具栏,主要用于显示符号排序方式,决定显示哪些内容,字体颜色和大小等。(Tips:如果在操作过程中,发现该窗口为空白了,可以点击工具栏中的排序方式选择按钮,相当于刷新了一下,即可正常显示了,最开始笔者碰到这种情况的时候,曾经蒙圈过…)
在窗口区域内点击右键,会显示一个菜单栏,显示针对该窗口的一些操作功能,如下图所示:
值得注意的是,菜单栏中Cut~Select Symbol,操作对象是整个符号所代表的代码块,而不是符号所代表的字符串。比如鼠标选中某个方法符号,点击“Copy Symbol”后复制的就是整个方法了。这里有个比较生僻的功能——“Duplicate Symbol”,表示重复符号,将符号复制并粘贴,功能上看就相当于“Copy Symbol”和“Paste Symbol”一次组合使用了。菜单中剩余的功能基本上就是Window面板中搜索栏和工具栏中的功能,这里不赘述。
5、项目窗口(Project Window)
项目窗口显示了项目的相关信息,可以在SI顶部“View > Project Window”或者Toolbar中“Project Window”按钮来控制该窗口的显示/隐藏。
(1)概貌 如下图所示,为项目默认窗口的概貌图,我们可以看到,它显示了项目名称,快速搜索栏,中间的内容显示区和底部的工具栏,当然还有右上角的最大/最小化和关闭按钮。 (2)内容显示区 这个区域会根据“快速搜索栏”输入的关键字过滤出文件名或路径包含该关键字的匹配列表,上图中还显示了文件大小,和修改时间。这个区域的内容也会随着工具栏中的按钮的切换而变化显示内容。后面讲工具栏时会再讲到。双击某一项或者在某一项上点击右键调出的菜单中点击“Open”就可以快速进入到对应的源文件。 (3)工具栏 默认选择是显示,也可以通过在该项目窗口点击右键后显示的菜单栏“Toolbar”选项来显示/隐藏工具栏。窗口工具栏中黄框部分按钮用于切换内容显示区的显示内容;蓝框部分会根据黄框部分按钮的选择而有所变动,主要用于跳转到某些界面;绿框部分为项目窗口属性设置按钮,包括字体大小、颜色、背景色等。把鼠标指针放置在按钮上,会显示该按钮功能。
1)黄框中按钮功能如下:
- Project File List:项目文件列表。默认选择为该项,在“内容显示区”显示当前项目中的所有文件列表,并降序排列,如概貌图中所示。Tips:这里可以在搜索栏中灵活使用通配符,比如输入“.java”再按“Enter”按键,可以筛选出所有的java文件;如果再输入“”并“Enter”,则取消前面通配符效果,也可以理解是“*”表示显示所有。
- Project File Browser:项目文件浏览器,以目录树的形式显示。
- Project Document Types:按照文件的文档类型来分类显示。
- Project Symbol List:显示项目中符号列表。
注意:这里工具栏中黄色边框中的按钮,与其他几个界面有所不同了。
- Project Symbol Classes:按照符号的类型进行分类显示。
2)黄框中 前面也提到了,蓝框中的按钮是变化的。当左边切换到“Project Symbol List”或“Project Symbol Classes”这两个显示Symbol的界面时,蓝框中显示了4个按钮,这里的4个按钮和SI整体窗口顶部的工具栏中符号工具栏(Symbol Toolbar)一样,这里不赘述,不清楚的可以查看前面“工具栏”这一节。当选择的是其他3种界面时,显示的是概貌图中界面:Open Project、Add or Remove Project Files 和 Project Report。Project Report,生成当前项目中的统计数据,如下图(1)所示,可以选择一些统计项,点击“OK”按钮,会生成一个统计报告文件如下图(2)所示。
图(1) 图(2)3)绿框中
绿框中按钮的功能是设置项目窗口的界面信息,如下图所示,可以设置显示内容,字体/颜色/大小等。
(4)右键菜单栏 在该窗口中点击右键,可以调起项目窗口的功能菜单栏,如下图所示。前面黄框部分按钮在切换显示内容是文件或符号的时候,菜单栏会有一点不同,但也是大同小异,这里不单独贴图了。这里单独提一下“Synchronize Files”,同步项目中的所有修改,其他功能或在工具栏中讲到过,或见名思义,就不赘述了。
6、关联窗口(Relation Window) Relation Window也是SI的一个创新点,用于显示当前被选中的Symbol和外界的联系,比如被哪些地方引用,被哪些地方调用等。它和后面要讲到的Context Window一样,都是跟踪选中的Symbol而自动实时地变化。 可以在SI顶部菜单栏选择/取消“View > Relation Window”,或者在顶部Toolbar中点击“Relation Window”快捷按钮来显示/隐藏该窗口。 (2)窗口内容 当鼠标光标停留在某个Symbol上时,该窗口中会立即显示设置的关联内容,该窗口基本内容如下图所示:
图4.6.1顶部“References”表示该窗口显示的内容与当前光标所在的Symbol是引用关系,这个关系可以在设置中选中,还有“Calls”、Contains等关系,后面会讲到。中间内容区显示了引用当前Symbol的地方,该例子中就是表示变量“_isFaceIDSwitchOpen”被当前类KeyguardUpdateMonitor中isFaceIDSwitchOpen()方法的第2760、2764、2769行引用。点击每一行会在Context Window中实时显示上下文。底部是该窗口的快捷工具箱。
(3)Toolbar各功能简介
从左往功能依次为
- Jump To Definition:将光标移动到所选项被定义的地方,可能是某个方法,或者某个类等。
- Symbol Info:弹出一个popup window,显示Relation Window中被选项的定义。
- Lookup Reference:搜索指定或者选中字段的应用情况,后面讲搜索的时候会详细讲到。
- Lock Relation Window:选中后表示锁住当前窗口,不会实时改变内容。
- Refresh Relation Window:刷新窗口。
- View Relation Outline:以大纲的形式显示内容,如图4.6.2所示。
- View Relation Horizonal Graph:水平显示内容,如图4.6.3所示。
- View Relation Vertical Graph:垂直显示内容,如图4.6.1所示。
- Relation Window Properties:窗口属性设置,里面功能点比较多,这里单独划出一个小节详细说明。
图4.6.2 图4.6.3(4)Relation Window Properties
该对话框除了能设置字体,颜色等外观属性外,还能设置内容与光标选项的关系等多种内在联系。
图4.6.4 1)Automatic Symbol Tracking
设置Symbol自动跟踪相关属性,如下图所示。如果不希望自动跟踪Symbol,选择“Off”或者在Toolbar中选择“Lock Relation Window”即可。
这些选项字面意思比较简单,这里就不啰嗦了。
2)Automatic Expansion OptionExpand duplicate branches:是否展开重复的分支。Level:展开分支的层级。比如设置为“2”,那么被Calls的函数,以及该函数再调用的函数都会显示。
3)View Relationship 单独设置被选中的Symbol类型与Relaiton Window中显示内容的关系,选中的类型不同,关系也不一样。该处列出了“Type”、“Functions”、“Variables/Constants”、“Classes”、“Files”五种类型,以及可以设置的关系。例如,如图4.6.4中,给“Functions”设置的是“Calls”关系,那么当鼠标选中某个函数,那么当前Relation Window中就会显示被该函数“Calls”的信息。 这些Relation可以分为3类,不同的类型匹配的速度也不一样,从快到慢依次为:
- Contains:显示当前symbol的内容。
- Calls:被当前symbol调用的其他symbol。比如选中了函数,则会显示被该函数调用的其他函数。
- References:显示有哪些symbol调用了当前symbol,作用范围仅在当前文件。比如,选中了某个函数,则会显示当前文件中调用了该函数的函数。在比较大的项目中,这项关系的匹配是比较耗时的。
对于“Group multiple references into one item” 以及“Columns”,其中的有些功能还没太明白,以后搞明白了再补上。 4)Graph按钮(最右边一列中的按钮) 该对话框主要用于设置关系图的外观,这个比较简单,不多说了。 (5)右键菜单栏 该菜单栏中的功能有的在前面讲到过,有的比较简单,就不一一列举。这里说一下“New Relation Window”,同一个窗口中可以同时打开多个Relation Window。开发者可以同时打开“Calls”关系窗口和“References”关系窗口,根据自己的需求决定,非常便利。7、剪贴板窗口(Clip Window) 剪贴板窗口是一个浮动窗口,可以随意拖动和停留在界面中。它类似于剪贴板,但相比于剪贴板只能保存最近一次的剪切外,该窗口可以保留多个剪贴记录。 (1)开关位置 可以在SI界面顶部的Toolbar中点击“Clip Window”开关,或在顶部菜单栏“View > Clip Window”选择/取消来显示/隐藏该窗口。 该窗口的显示信息如下图。每一个clip项都包含一clip名称和该clip的内容。
(3)Toolbar各功能简介
上图中最底部的Toolbar,从左往右功能如下:
- New Clip:创建一个新的clip。
- Delete Clip:删除选中的clip。
- Edit Clip:编辑选中的clip的内容。
- Cut To Clip:在“Source File Window”选中某字符串,点击该按钮,所选择部分将被剪切并弹出对话框创建一个新的clip,被剪内容将作为新clip的内容,clip名称需要自定义。
- Copy To Clip:与“Cut To Clip”类似,不同的是,该功能是复制选中的部分。
- Paste From Clip:选中某条clip,如果光标在“Source File Window”内,点击该功能按钮,会把clip内容粘贴在光标处。双击选中的clip也有同样的效果。
- Clip Window Properties:设置该窗口的一些属性
(4)右键菜单栏 在该窗口内点击右键,会显示如下菜单栏。其中功能上面基本都介绍了,这里不赘述,只简单补充一下“Show Clipboard”。当选中某个clip,并点击“Show Clipboard”,会弹出一个窗口显示该clip的内容,和点击“Edit Clip”非常类似,只是无法编辑。
8、搜索窗口(Search Results Window) 搜索功能绝对是一个最常用的功能之一了,使用十分频繁,下面对搜索功能及搜索结果窗口做一些基本的介绍。 (1)搜索功能入口 开发者可以点击顶部主菜单栏中“Search”选择搜索子功能,如下图4.8.1所示;或者在顶部Toolbar快捷工具栏中点击相应的快捷按钮进行搜索,如下图4.8.2红框部分;或者使用快捷键调出对应的搜索功能窗口,如下图4.8.1所示。 图4.8.1 图4.8.2 (2)Search 该功能主要在当前文件范围内进行搜索,根据自身的需要添加搜索条件,一般选择默认就可以了。
图4.8.3
- Find:需要搜索的字符串,点击右边倒三角可以查看并选择历史搜索记录。
- Case Sensitive:大小写敏感。
- Use Regular Expressions:使用正则表达式。
- Wrap Arround:(还没清楚其作用)
- Select When Found:找到该字符串时,该字符串被选中。
- Whole Words Only:只包含整个要搜索的字符串。如果不选中,则包含欲搜索字符串的字符串都会被搜索到。
- Forward/Backward 以当前文件中鼠标光标所在处为参照点,向前/向后搜索。与图4.8.1或图4.8.2中“Search Forward”/“Search Backward”功能一致。
- Selection 在当前文件可见范围内搜索。
- Whole File (截图红框①处):在当前整个文件内搜索。
- Search(截图红框②处):如果能搜索到,鼠标只会定位到满足条件的某一个搜索结果处。
- Whole File(截图红框③处):点击该按钮,会在当前整个文件中进行搜索,如果有多个搜索结果,会显示一个搜索结果列表,如下图4.8.4所示。
- Files(截图红框④处):点击该按钮,会跳转到“Search Files”功能界面,下面会详细介绍。
图4.8.4(3)Search Files 与“Search”功能相比,这里用于在多个文件中进行搜索。如下图所示,为其功能界面,以下将对该功能进行简单介绍。
图4.8.5
1)先看“Options”(上图红框②处)中各选项的含义(在“Search”功能中讲到过的选项含义,这里不再赘述):
- Project Wide:在整个项目范围内的所有文件中进行搜索。
- Include Subdirectories:在图4.8.5红框①处如果选中的是目录,该选项用于选择是否要在该目录的子目录中进行递归搜索。
- Find Non-Matching:
- Skip Inactive Code:跳过无效代码查找。
- Skip Comments:跳过注释查找。
- Search Only Comments:仅在注释中查找。
2)Find:在“Search”功能中讲过,这里不赘述。
3)File Name:制定查找范围,可以是具体的某个文件,也可以是某个文件夹。可以图4.8.5红框①处中选择,也可以在截图右下角点击“Browser”按钮进行选择。左边的倒三角点击后,显示历史记录列表。
4)图4.8.5红框①区:该区域会显示具体的文件或者目录。点击③处“Show Dirs”,该按钮显示的文字会在“Show Dirs”/“Show Files”之间换号,①区内容也会随之变化。在②区选择“Project Wide”也会显示所有文件,选择“Include Subdirectories”则会显示目录。 5)Search Results:④区中的选项为设置搜索结果需要显示哪些内容,如图4.8.4所示。 值得注意的是:在选择源文件的时候,不是硬盘中所有的文件都能显示,这里和前文介绍新建项目时所选择的源码路径所在盘符有关。 (4)Search Project/Lookup Reference “Search Project“和”Lookup Reference”功能界面除了左上角标题栏不同外,其它一模一样,这里就以“Lookup Reference”为例,如下图所示。
1)Search Method:这里有四个选项
- Simple String:最普通的形式,把搜索项作为字符串,可以查找文件中出现的任意字符或者字符串,当工程比较大的时候查找比价慢。
- Regular Expression:正则表达式方式搜索。可以参考:【Source Insight搜索正则表达式使用技巧】
- Keyword Expression/Lookup Reference:这两种方式查找的结果基本相同,只是显示方式略有差异。有些文章中说,这两种方式都是使用SI预先建立的数据库,查找起来速度相当快,但通常这种速度只在查找标识符时有明显效果,且强烈建议像函数名、变量名等的查找,用这两种方式进行查找。这里笔者声明一下,笔者暂时还没体验到这里说的快速,在浩瀚的源码中搜索某个函数或变量时,都很费事,所以这里不敢打包票。
2)Lines of Context:每一条结果项显示的行数。前面我们可以看到,不同方式的搜索结果种,有的只显示一行,有的显示多行,就和这里有关。有的行数可以编辑,而有的不能编辑。 3)Search In:指定搜索范围。 4)Find Reference To:这个lable会根据“Search Method”中方式的选择而变化。其中的内容为搜索项,点击倒三角会显示搜索记录列表。 (5)Search Result Window 其实前面已经讲到过该窗口了,当搜索完后,会展示一个窗口用于显示搜索结果,如下图所示,红色框中显示了有多少个匹配项,多少个文件。主内容区也显示文件名,所在行数等信息。 图4.8.10 下图是一个完整的搜索结果及其它窗口交互界面。当选择“Search Result Window”中某一项时,会在“Context Window”中实时显示其上下文内容,如下图中④去所示。在搜索结果项前都有一个红色按钮,如③区所示。点击对应项该按钮,会显示其对应的“Source File Window”及所搜索字段所在位置,且也有一个红色按钮,如下图②区所示,点击这些按钮,界面会在“Source File Window”和“Search Result Window”之前来回切换。下图①区显示的Toolbar按钮,我们在前面讲Toolbar的时候介绍过,是"Go To Previous Link / Go To Next Link",此时点击这两个按钮会跳转到前一个/后一个搜索结果链接。
(6)其他 在图4.8.1中“Search”子菜单中还有很多选项,有的比较简单,有的前文中陆陆续续介绍过,这里就不赘述了。
9、上下文窗口(Context Window) 上下文窗口是SI中一个革新功能,在用户浏览或者编辑源码过程中,会实时自动显示鼠标点击或选中部分的相关信息,可以简单地看做是预览功能。 (1)开关位置 上下文窗口的显示/隐藏开关位于菜单栏“View > Context Window” 或 Toolbar中“Context Window”按钮。 (2)窗口内容显示 上下文窗口位于前面SI概貌图的左下角,其显示内容,会根据鼠标所选取或点击的内容的类型而有很大差别。下表总结了不同的鼠标行为与相应的上下文窗口显示结果(摘自SI官方帮助文档):1)在源文件窗口操作时 如果选中的是源文件窗口中的符号或局部变量,参数等,该窗口会显示选中内容被定义(如果是方法、类或结构体等,下同)或声明(如果是全局变量或引用等,下同)的上下文信息。如下图显示的是在源文件窗口中选中“reason”时的结果:顶部显示了选中的内容“reason”,类型“Locol Variable”,所在文件名“SystemServer.java”,所在文件路径等;中间显示区高亮显示了“reason”的定义处,以及它所在的上下文信息——函数performPendingShutdown()内;底部为工具栏,这个后面单独讲到。如果在源文件窗口中输入信息,如果以这个字符串开头的符号有多个,则会在上下文窗口中显示匹配的符号列表。如下图显示的就是在源码文件中输入“star”字符串后该窗口的表现。 2)在Project Window操作时 如果当前Project Window显示的是文件,且鼠标选中了其中一个文件,Context Window中显示的则是文件内容。 如果当前Project Window显示的是符号,鼠标选中后,Context Window中则会显示符号的声明或这定义的上下文代码。 3)在Clip Window操作时 当鼠标选中Clip Window列表中的某一项Clip时,Context Window顶部会显示当前内容类型为“Clip”,Clip名称为“Reason”,内容来源为“Text from Typing”,Clip内容为“Text Clip in Context Window”,当双击Clip内容时,会弹出一个编辑窗口,编辑其内容。 4)在Symbol Window操作时 如果当期鼠标选中的是Symbol中的某一个符号,那Context Window显示的是对符号的定义或声明。 5)在Relation Window操作时 如果当前鼠标选中的是Relation Window中的内容时,Context Window中显示的是该引用项所在的位置。如下图中,Relation Window显示的是SystemServer.java类中performPendingShutdown()方法中的局部变量reason的应用者列表,当鼠标点击最后一条时,Context Window就定位并高亮显示了该引用项的位置。 (3)底部工具栏 下图为Context Wiindow中底部的工具栏,黄框部分功能参考SI顶部Toolbar中部分,这里不赘述。蓝框部分功能为:Complete Symbol、Lock Context Window、Context Window Properties
- Complete Symbol:自动补全符号功能。即当用户在Source File Window区域输入字符串时,点击该按钮可以显示以该字符串开头的符号列表,供用户选择自动补全。如下图所示:
- Lock Context Window:上下文窗口锁。选中该按钮后,上下文窗口内容就会被锁住,不会实时变化;再次点击,则取消锁功能。
- Context Window Properties:上下文窗口属性。设置上下文窗口的字体类型/大小/颜色,背景色,跟踪属性,显示内容等特性。
(4)右键菜单栏 在Context Window上点击右键调出功能菜单如下所所示,除了红框中“Project-Wide Rename(顾名思义:项目范围内对选中项重命名)”外其他都在前面讲过了,这里不赘述。
正如大多数软件及开发工具包一样,官方提供的帮助文档就是最好的教程,SI也不例外。当然这需要读者有一定的英文文档阅读基本功,因为这类文档都是英文版的。从笔者的经验来看,语法什么的其实不那么复杂,关键的生僻单词可以查词典,也不是难事,反而是阅读的耐心才是阅读英文文档的关键。下面简单介绍一下SI的帮助相关的功能。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!