SI技巧.docx

上传人:b****8 文档编号:9131328 上传时间:2023-02-03 格式:DOCX 页数:25 大小:149.33KB
下载 相关 举报
SI技巧.docx_第1页
第1页 / 共25页
SI技巧.docx_第2页
第2页 / 共25页
SI技巧.docx_第3页
第3页 / 共25页
SI技巧.docx_第4页
第4页 / 共25页
SI技巧.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

SI技巧.docx

《SI技巧.docx》由会员分享,可在线阅读,更多相关《SI技巧.docx(25页珍藏版)》请在冰豆网上搜索。

SI技巧.docx

SI技巧

目录

一、前言3

1.1目标3

1.2预定读者3

1.3历史版本3

1.4参考3

1.5术语表3

二、版本控制功能4

2.1使用条件4

2.2CheckOut功能4

2.3CheckIn功能5

2.4UndoCheckOut功能5

2.5ClearCaseExplorer功能5

2.6FindCheckOuts功能5

2.7VersionTree5

2.8Comparewithpreviousvision6

三、代码美化6

3.1使用条件7

3.2CodeFormat7

四、代码静态检查7

4.1使用条件7

4.2系统变量的设置7

4.2.1INCLUDE系统变量8

4.2.2LARCH_PATH系统变量8

4.2.3LCLIMPORTDIR系统变量8

4.3批处理文件的编写8

4.4SI的设置9

五、项目编译(Build)10

5.1使用条件10

5.2Update编译项目10

5.3New编译项目11

5.4Clean项目临时文件11

六、代码标准化11

6.1新增宏12

6.2插入修改日志宏13

6.3插入文件头14

6.4插入函数头15

七、其他辅助工具15

7.1SkyworksLabTestStudio15

7.2WinTrace16

7.3监视调试输出16

八、附录16

8.1SI的大客户16

8.2表格索引17

8.3图形索引17

一、

前言

SourceInsight(SI)是一个功能强劲的“程序代码编辑器”,他内置对C/C++,Java和x86汇编语言程序的解析功能;有自己的动态数据库在你编程时提供有用的文本提示,包括有关的函数、宏、参数等。

本文档主要描述SI如何结合ClearCase、ArtisticStyle、Splint和自身的宏功能,实现一个IDE编译器基本的“版本控制”、“代码美化”、代码静态检查、项目编译和代码标准化的功能。

SI的强大功能,甚至可以让用户监视设备调试发出的调试信息。

目标

通过本文档的描述,读者可以将SI变成一个方便的工作平台,并在这个平台上,简化我们日常中的大量重复而且繁重的工作。

预定读者

预定读者是对SI有一定了解的用户,如果是第一次使用SI,请参考文章《SI的功能说明》和《SI常用技巧》。

历史版本

本节描述了文档的历史版本。

1历史版本表

日期

作者

说明

01

2005-9-21

黄少文

Draft

参考

本文档参考网络上很多关于SI的文章,同时也应用了其他文档。

2参考列表

参考书目

作者

01

UsingRationalClearCase

RationalSoftware

02

SplintManual

SecureProgrammingGroup

Version3.1.1

03

SI的功能说明

黄少文

04

SI常用技巧

黄少文

05

ArtisticStyleHelp

TalDavidson

06

计算机源代码编写规范

mays

NEU-ALPINE

术语表

3术语表

名称

别名

说明

SourceInsight

SI

软件,代码编辑工具

ClearCase

CC

软件,版本控制软件

CodeFormat

代码整理

代码风格整理,使代码有统一的排版和缩进

ArtisticStyle

AS

代码风格整理工具

ARMDeveloperSuite

ADS

ARM内核开发组件

SkyworksLabTestStudio

Skyworks的综合调试平台

WinTrace

跟踪调试信息工具

二、版本控制功能

这里说的版本控制为RationalClearCase,SI可以利用ClearCase、CVI等软件对代码进行精确的版本控制。

本节描述:

如何对SI的功能进行扩展,以支持CC的某些功能。

配置完成后,效果如下图:

SI版本控制图

使用条件

在SI下正常使用CC功能,需要满足一些条件。

4版本控制使用条件列表

条件

说明

01

版本控制软件支持命令行

SI通过命令行调用外部命令

02

已经安装ClearCase

保证ClearCase的系统设置正确

03

编辑的文件为CC受控文档

文件必须为CC某个Libary下的文档

CheckOut功能

在SI中,点击菜单->options->customcommands…

选择[Command:

]->“CheckOut”

在[Run]下写:

cleartoolco-c"ModifyFileBySourceInsight:

"%f

其中的cleartool是CC的命令行工具,%f是SI内部命令,表示当前文件的全路径。

co是参数,表示文件签出,也可以使用checkout代替。

以上参数大小写区分。

-c表示有注释,为后面紧跟的“ModifyFileBySourceInsight:

”是文件Checkout时的描述(Description)。

CheckIn功能

在SI中,点击菜单->options->customcommands…

选择[Command:

]->“CheckIn”

在[Run]下写:

cleartoolci-c"ModifyFileBySI:

"-rm%f

参数解释请参考上一节,特殊说明如下:

ci是参数,表示文件签入,也可以使用checkin代替。

-rm表示覆盖原来的文件,不备份原来的文件。

以上参数大小写区分。

UndoCheckOut功能

在SI中,点击菜单->options->customcommands…

选择[Command:

]->“undocheckout”

在[Run]下写:

cleartoolunco-rm%f

ClearCaseExplorer功能

在SI中,点击菜单->options->customcommands…

点击[Add]按钮,新的命令叫“RationalClearCaseExplorer”。

在[Run]下写:

clearexplorer.exe%f

点击按钮“menu…”增加这个命令到菜单中。

运行时,SI会调用ClearCaseExplorer并定位到当前文件。

FindCheckOuts功能

本功能可以列出所有正在修改的文件(必须是CC受控文件)。

在SI中,点击菜单->options->customcommands…

点击[Add]按钮,新的命令叫“FindCheckOuts”。

在[Run]下写:

clearfindco.exe%j

%j命令是SI的项目主目录,结合CC的ShortSnop快照功能,可以列出所有正在修改的文档。

点击按钮“menu…”增加这个命令到菜单中。

VersionTree

在SI中,点击菜单->options->customcommands…

点击[Add]按钮,新的命令叫“VersionTree”。

在[Run]下写:

clearvtree.exe%f

点击按钮“menu…”增加这个命令到菜单中,如下图:

自定义命令菜单图

Comparewithpreviousvision

本功能可以将本文件和最近提交的版本比较。

在SI中,点击菜单->options->customcommands…

点击[Add]按钮,新的命令叫“Comparewithpreviousvision”。

在[Run]下写:

cleardiffbl.exe/ispred%f

点击按钮“menu…”增加这个命令到菜单中。

运行时,SI会调用CC的文档比较工具进行比较。

三、代码美化

如果您使用过VB,一定会对VB自动排版、自动对齐的功能十分向往。

统一格式的代码不仅方便我们阅读、观赏和小组内交流,也使代码看起来有强烈、统一的风格和特征。

代码整理功能(CodeFormat)推进使用ArtisticStyle(以下简称AS),它是一个自由开源软件。

他可以快速的整理C、C++、C#、Java的源代码。

AS是一个命令行程序,他没有界面。

AS支持多种代码整理风格,如下表:

5AS整理风格表

风格

说明

--style=ansi

标准C的风格,这种风格为我们常用的格式

--style=kr

如雷贯耳的Kernighan和Ritchie的风格,KR是C语言标准的最早制定者,AnsiC的也是在他们的基础上制定的

--style=linux

Linux风格

--style=gnu

GNU风格

使用条件

SI下正常使用AS需要满足一些条件。

6代码整理使用条件列表

条件

说明

01

安装AS

将AS复制到一个目录下

CodeFormat

在SI中,点击菜单->options->customcommands…

点击[Add]按钮,新的命令叫“CodeFormat”。

在[Run]下写:

D:

\astyle\astyle.exe%f

点击按钮“menu…”增加这个命令到菜单中,这里操作和上文差不多,就不再介绍。

四、代码静态检查

静态检查工具,英文名称Lint。

当C语言还在贝尔实验室时(那时它还是B语言),它就已经是单独的一个工具。

不过,现在有些观点认为Lint功能是编译器不可缺少的功能,把它重新集成到编译器中(如GCC)。

Lint功能可以检查出代码中存在的各种问题,如:

内存泄漏问题、野指针,甚至是实参的效率问题。

灵活使用Lint功能,可以大幅提高代码的质量,提高系统的健壮性。

它是一个高阶程序员的必备工具。

Lint工具比较出名的有SpLint、PcLint和微软的CL。

SpLint为开源软件;PcLint需要收费;CL为微软的开发工具,他们各有优缺点。

PcLint可以选择代码检查的风格,如Kernighan&Ritchie风格等,甚至是一些比较出名的书籍建议的风格。

我们使用的是Splint。

使用条件

SI下正常使用Splint需要满足一些条件。

7代码整理使用条件列表

条件

说明

01

安装Splint

将Splint复制到一个目录下,如D:

\splint\

02

正确设置系统变量

系统变量的设置

Splint的系统设置包括:

INCLUDE、LARCH_PATH、LCLIMPORTDIR,系统变量设置的结果如下图。

正确系统变量图

四.1.1INCLUDE系统变量

在控制面板->系统->高级->环境变量(E)…->系统变量(S)…,点击按钮[新建(W)…]

在[新建用户变量]的[变量名(N)]中输入:

INCLUDE

在[变量(V)]中输入:

D:

\splint\lib

如下图所示:

新增系统变量图

四.1.2LARCH_PATH系统变量

在控制面板->系统->高级->环境变量(E)…->系统变量(S)…,点击按钮[新建(W)…]

在[新建用户变量]的[变量名(N)]中输入:

LARCH_PATH

在[变量(V)]中输入:

D:

\splint\bin;D:

\splint\imports

四.1.3LCLIMPORTDIR系统变量

在控制面板->系统->高级->环境变量(E)…->系统变量(S)…,点击按钮[新建(W)…]

在[新建用户变量]的[变量名(N)]中输入:

LCLIMPORTDIR

在[变量(V)]中输入:

D:

\splint\imports

批处理文件的编写

下文以项目A686+的设置来描述如何在SI中正确的使用Splint功能。

这里要强调指出的是:

我们可以通过技巧,能使SI中Splint功能做到通用,如:

在SI的A686+项目、M2项目使用同样的CustomCommand(Build功能也是同理)。

当Splint的静态检查时,需要往往需要了解整个项目的函数、宏的情况。

这决定Splint工作时,需要清楚、准确的知道项目所有相关的头文件的位置。

因此,我们新增一个批处理文件Splint_686PE.bat来处理一些工作,将项目的一些信息告诉我们的Splint。

8Splint_686PE.bat文件解析表

命令

说明

01

setMMI_INCLUDE=J:

\include\mmi_inc;…

设置项目库文件路径到MMI_INCLUDE中

02

setINCLUDE=%INCLUDE%;%MMI_INCLUDE%

将Splint的库和项目库合并

03

setMARCO_DEFINE=-D_KEYMAP_I_0_-D…

设置项目的一些宏定义到MARCO_DEFINE

04

splint.exe%MARCO_DEFINE%%1

将需要静态编译的文件和宏定义传给Splint

Splint_686PE.bat完全文件信息如下:

@echooff

setoldpath=%path%

settmp=c:

\temp

settemp=c:

\temp

setARMHOME=C:

\progra~1\ARM\ADSv1_2

setpath=%CD%\PVCS;%ARMHOME%;%path%

setARMINC=%ARMHOME%\Include

setARMLIB=%ARMHOME%\Lib

setMMI_INCLUDE=J:

\include\mmi_inc;J:

\include\mmiapi_inc;J:

\include\rtxc_inc

setCMS_INCLUDE=J:

\cms_include\app;J:

\cms_include\common;J:

\cms_include\ftp;J:

\cms_include\inputzi;J:

\cms_include\medialib;;J:

\cms_include\obj;J:

\cms_include\prodconf

setINCLUDE=%INCLUDE%;%MMI_INCLUDE%;%CMS_INCLUDE%

setMARCO_DEFINE=-D__ARM__-DIROM_MEMCPY-D__PRODUCTIZATION__-D_KEYMAP_I_0_-D_COLORLCD_-DSFFS_NOFLASHAPI-DSFFS_MULTIPLE_INSTANCE-DATK_SUPPORT-DMET_FEATURES-D__ENHANCED_EEPROM__-DCPHS_SUPPORT-DAT_DIAL_DISPLAY-DZT_APPLE-DZT_APPLE2-D_MMI_MA2API_-DCMS_SAST_NEW_LCD_SUPPORT-DCMS_HAVE_CAMERA-DCMS_HAVE_VIBRATOR-D_ITAP_H

setMARCO_DEFINE2=-DBOOT_LOCATION=0x1000000-D__IA_DEVICE__=IA_20505_13-D__PMIC_DEVICE__=PMIC_20460-DIIC_OPTIMIZATION=IIC_OPTIMIZATION_DI_DATAOUT-D__SIM_INTERFACE__=SIM_3VONLY-DADC_CAL_DATA=SLOPE_INT_MULT-DSIM_DEBUG=SIM_DEBUG_MAX

setMARCO_DEFINE_HSW=-D_HSW_DEBUG1111-D_SAST_DEBUG111

setTEMP_MARCO=-casebreak-paramuse-compdef-mustfreefresh-compmempass-globstate

D:

\splint\bin\splint.exe%SPLINT_MARCO%%TEMP_MARCO%%MARCO_DEFINE%%MARCO_DEFINE2%%MARCO_DEFINE_HSW%%1

SI的设置

在SI中,点击菜单->options->customcommands…

点击[Add]按钮,新的命令叫“Splint”。

在[Run]下写:

D:

\splint\bin\Splint_686PE.bat%r

点击按钮“menu…”增加这个命令到菜单中。

注意,这里传输的文件参数不是%f,而是%r。

具体区别读者可以自己试试。

其他配置项目编译的配置。

五、项目编译(Build)

SI也可以编译一个项目,方法很简单。

使用条件

SI下正常编译一个项目需要满足一些条件。

9项目编译条件列表

条件

说明

01

安装ADS开发环境

ARMDeveloperSuite

02

环境变量为短文件路径

如ARMHOME=C:

\progra~1\ARM\ADSv1_2

setARMINC=%ARMHOME%\Include

setARMLIB=%ARMHOME%\Lib

03

有临时文件路径,并注意这些目录的临时文件不能太多

settmp=c:

\temp

settemp=c:

\temp

04

ADS在默认路径下

Path=C:

\ProgramFiles\ARM\ADSv1_2\bin

05

如果编译的项目生成的临时文件(包括目标文件)为CC受控文件,请批量去除这些文件的只读属性

06

如果文件路径太长,导致编译缓冲区溺出(如CC受控文件目录都非常深,会导致执行编译时,出现这个问题),请映射编译路径

SubstJ:

\A686+

注意:

使用Substj:

/d卸载

Update编译项目

在SI中,点击菜单->options->customcommands…

选择[Command:

]->“Build”

在[Run]下写:

cmd/c"J:

\build_ads1.2\cmsbuild.batupdate"

Build设置图

在[Patten]中输入内容为:

^\([a-zA-Z].*\)(\([0-9][0-9]*\)).*

New编译项目

在SI中,点击菜单->options->customcommands…

点击[Add]按钮,新的命令叫“ReBuild”。

在[Run]下写:

cmd/c"J:

\build_ads1.2\cmsbuild.batnew"

点击按钮“menu…”增加这个命令到菜单中。

Clean项目临时文件

在SI中,点击菜单->options->customcommands…

选择[Command:

]->“CleanBuild”

在[Run]下写:

cmd/c"J:

\build_ads1.2\cmsbuild.batclean"

六、代码标准化

“代码标准化”就是利用SI的宏,将我们日常的一些操作包装起来,如插入文件头、插入函数头、插入代码修改记录等。

这些操作,我们都可以借助SI的宏功能。

在下文中,将列出我们常用的几个宏的代码。

遵循标准很方便,我们不需要在编程时去查看标准化文档;也不需要随便找一个类似的文本复制过去,只需要使用SI的内置功能,一个菜单,或者是快捷键(如F2),SI会帮助你,什么都生成拉。

偷懒就是这么简单。

新增宏

,。

1、在菜单->Project->OpenProject中,打开BASE项目;

打开BASE项目图

2、找到SI安装目录下的utils.em文件,也可以在“ProjectWindow”中,打开这个文件。

打开utils.em文件图

3、把宏代码添加到该文件的尾部(当然你也可以另建一新文件,记住文件扩展要为.em,且要把它加到SI的Base工程中)。

4、打开菜单->Options->MenuAssignments…,在[Command]对话框中输入m(Macrc的缩写);

5、找到Macro:

HswPrintFixMsg(用户新增的函数名称,这个将在下文介绍);

6、在Menu中选择一个你喜欢的菜单,把这个宏命令加到这个菜单中;

加入宏菜单图

7、现在你可以方便地使用这个命令了,当然,对于常用命令,用户最好定义为快捷键。

插入修改日志宏

在修改别人的代码时,需要非常小心。

任何修改都必须着记录,这些记录包括:

修改者、修改原因和修改日期。

“插入修改日志宏”以统一的形式自动生成:

修改者和修改日期信息,免除用户老是输入这些东西。

日志生成后,会自动定位到输入“修改原因”的位置上

如下示范:

/*fixedbyhuangshw2005/09/22:

*/

代码如下:

/*createbyhsw2005/08/17:

自动加入有"黄少文特征"的日期修改宏*/

macroHswPrintFixMsg()

{

szTime=GetSysTime

(1)

Day=szTime.Day

Month=szTime.Month

Year=szTime.Year

if(Day<10)

szDay="0@Day@"

else

szDay=Day

if(Month<10)

szMonth="0@Month@"

else

szMonth=Month

hwnd=GetCurrentWnd()

lnFirst=GetWndSelLnFirst(hwnd)

lnLast=GetWndSelLnLast(hwnd)

hbuf=GetCurrentBuf()

/*取得用户名称*/

szMyName=getenv(USERNAME)

strPrint="/*Fixedby@szMyName@@Year@/@szMonth@/@szDay@:

*/"

InsBufLine(hbuf,lnFirst,strPrint)

/*光标定位到注释的中间*/

selection_record=GetWndSel(hwnd)

ichPos=strlen(strPrint)-2

selection_record.ichFirst=ichPos

selection_record.ichLim=ichPos

SetWndSel(hwnd,selection_record)

}

插入文件头

根据《计算机源代码编写规范》中,章节“3.2.1源代码文件的注释”的描述,规范的源文件头由以下内容组成:

10源文件注释规范表

组成元素

01

版权声明

02

在文件的头部标明程序名称,它所完成的主要功能

03

文件的作者,及开始和完成时间

04

阶段测试结束后,主要修改活动的修改人、时间、简单原因说明列表

05

维护过程中需要修改程序时,应在被修改语句前面注明修改时间和原因说明。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1