一、Source Insight简介
Source insight是一款简洁、强大的轻量级代码浏览编辑器,启动快、使用便捷,很多程序员应该都使用过!它几乎支持所有的语言,比如C、C++、ASMA汇编、HTML等,能创建并维护其高性能的符号数据库,包括函数、变量、结构体、类等符号,特别对于阅读大型工程项目的代码十分方便。
可实现多文件代码中变量和函数的快速搜索,有利于代码的搜索与阅读,能够轻松地浏览和编辑代码,同时自动显相关信息,轻松跳转到函数的调用者或对变量的引用。
不过Source insight仅仅是个代码浏览编辑器,没有包含编译器,所以没有编译代码的能力。
二、函数调用关系查看
当选择某个函数时,显示函数调用流程,选择某个函数->右键->Show in Relation Window。
三、Autosar代码查看
在使用Autosar架构代码时,经常会遇见(FUNC,FUNC_P2CONST,FUNC_P2VAR,P2VAR,P2CONST,CONSTP2VAR,CONSTP2CONST,P2FUNC,CONSTP2FUNC,CONST,VAR,AUTOMATIC,TYPEDEF)无法查看函数(在左侧导航栏,只能显示FUNC,无法显示接口名字),变量解析为VAR,函数无法索引追溯的问题。
四、解决办法
因为AUTOSAR代码添加了编译器抽象层,导致代码查看工具无法解析,函数名等都为黑色,无法进行跳转。
关键字宏通常被定义在Compiler.h和Compiler_Cfg.h头文件中,这些关键字宏在一个特定的compiler编译器和平台中是固定。Compiler.h文件也是Autosar SWS Compiler Abstraction功能的载体。Compiler Abstraction文件不实现任何功能,只有symbol符号和macro宏。
Source insight支持自定义宏,本文使用该功能解决。
1.搜索C.tom文件(如果默认安装,位于:C:\Program Files (x86)\Source Insight 3)
2.打开路径:C:\Users\用户名\Documents\Source Insight下的C.tom。如果没有,则从安装路径(上面提到的路径)里面拷贝一个到该路径下。
3.在文件末尾加上下面这些代码,如果Source Insight处于打开状态,重启Source Insight,在菜单栏中Project -> Rebuild Project 下就可以了
; AUTOSAR
FUNC(rettype, memclass) rettype
P2VAR(ptrtype, memclass, ptrclass) ptrtype *
P2CONST(ptrtype, memclass, ptrclass) const ptrtype *
CONSTP2VAR(ptrtype, memclass, ptrclass) ptrtype * const
CONSTP2CONST(ptrtype, memclass, ptrclass) const ptrtype * const
P2FUNC(rettype, ptrclass, fctname) rettype (*fctname)
CONST(consttype, memclass) const consttype
VAR(vartype, memclass) vartype
CONSTP2FUNC(rettype, ptrclass, fctname) rettype (* const fctname)
FUNC_P2CONST(rettype, ptrclass, memclass) const ptrclass rettype * memclass
FUNC_P2VAR(rettype, ptrclass, memclass) ptrclass rettype * memclass
操作后效果图: