Klocwork K7使用要点培训7.7_第1页
Klocwork K7使用要点培训7.7_第2页
Klocwork K7使用要点培训7.7_第3页
Klocwork K7使用要点培训7.7_第4页
Klocwork K7使用要点培训7.7_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Klocwork

产品使用要点培训

k7.7内容简介KlocworkK7.7环境KlocworkK7.7安装KlocworkK7.7安装后设置用Klocwork分析C/C++项目分析VisualStudio项目分析Tornado项目常见问题处理/编译器设置/知识库及其他用Klocwork分析Java项目环境要求操作系统支持有条件支持环境要求硬盘空间安装所需空间在安装过程中,完全安装Klocwork需要400-450M的硬盘空间,仅安装引擎工具需要250M,EnterpriseDeveloper需要20M硬盘空间。数据存储所需空间Klocwork的数据包括projects_root目录、源文件、配置文件、Klocwork编译表以及Klocwork数据库。一次构建中每MLOC代码产生的数据目录将消耗大约400M硬盘空间,但这个数字高度取决于被分析的应用程序语言及其复杂度。在Windows平台下,并且使用预编译头文件,内存最小需要2G。度量和趋势分析每一百万行代码需要大约100M空间。对于小型或中等规模的构建,每一次项目构建需要300M。环境要求磁盘空间空间占用实例环境要求Windows下推荐使用NTFS文件系统;对于非NTFS系统,大小写不敏感的文件系统(FAT32),您需要确保所有的命令以正确的大小写来拼写并正确执行,以避免Klocwork数据库异常。支持Java1.4.2的系统环境环境要求浏览器浏览器要启用Cookies支持环境要求客户端环境要求内容简介KlocworkK7.7环境KlocworkK7.7安装KlocworkK7.7安装后设置用Klocwork分析C/C++项目分析VisualStudio项目分析Tornado项目常见问题处理/编译器设置/知识库及其他用Klocwork分析Java项目安装1、执行安装程序安装2、显示Welcome页面安装3、同意软件许可;4、选择安装目录(建议目录尽量短,如:d:\Klocwork77)安装5、选择安装类型;安装6、选择projects_root目录如:d:\Klocwork\projects_root,注意:projects_root目录的最大路径长度不要超过68-72字符,这取决于MySQL端口号长度(1-5位数)安装7、继续完成安装;8、将license文件复制到<projects_root>\licenses目录下;LINUX、Solaris安装1、不要以root用户登录系统;2、安装文件.sh文件,修改此.sh文件的访问模式,使之能够执行;chmod755kw-enterprise-installer[1]..linux.sh3、执行安装文件:kw-enterprise-installer[1]..linux.sh-i<install_dir>-p<projects_root_dir>4、将license文件复制到<projects_root>\licenses目录下内容简介KlocworkK7.7环境KlocworkK7.7安装KlocworkK7.7服务器用Klocwork分析C/C++项目分析VisualStudio项目分析Tornado项目常见问题处理/编译器设置/知识库及其他用Klocwork分析Java项目四个服务机器端口认识Klocwork的4个服务及其占用的端口lm27000License服务器tomcat8068Web服务器mysql3311数据库服务器rmimanager1103分析引擎调度服务器用户访问方式1、运行用户访问方式设置程序:启动菜单->Klocwork7.7->KlocworkSecurityConfiguration;或命令行:kwauthconfig;2、选择要设置的projects_root;3、选择四种方式之一:None任何用户都可以使用KlocworkBasic设置指定的用户可以使用KlocworkNIS与NIS服务器集成,NIS用户可以使用KlocworkLDAP与LDAP服务器集成,LDAP用户可以使用Klocwork常用的服务器管理命令启动和停止Klocwork服务查看服务:kwservicecheck<projects_root>启动服务kwservicestart<projects_root>kwservicestart<projects_root><server_name>Server_name:lm,tomcat,mysql,rmimanager停止服务kwservicestop<projects_root>kwservicestop<projects_root><server_name>Server_name:lm,tomcat,mysql,rmimanager常用的服务器管理命令修改Klocwork服务设置在改变服务器主机配置和避免端口冲突时使用kwserviceset-service-property<projects_root><server_name><property><value>如:kwserviceset-service-propertyd:\klocwork\projects_rootlmhostserver1----修改license服务器主机设置与Tornado环境的license端口号(27000)可能会冲突,可使用kwserviceset-service-propertyd:\klocwork\projects_rootlmport28000----修改license服务器端口号改进性能的参数<klocwork_install>/config/java_wrappers.confkmc…-Xmx512Mkwadmin…-Xmx512M设置缺省配置文件在KMC中,从展开Systemconfigurationfiles,右键点击problems_default.pconf.xml,选择Editinadvancededitor,打开KlocworkConfigurationEditor,选择要分析的缺陷和安全漏洞类型;在<projects_root>\projects\workspace\rules目录下,编辑修改metrics_default.mconf、usagerules_default.uconf、java_default.jpconf.xml文件建议的缺陷类型设置在缺省设置的基础上,进行如下更改:Defects->CodingStyle->AssignmentinConditionDefects->CodingStyle->Unreachablecode->UnreachablecodeDefects->MemoryManagementProblems->FreeingUnallocatedMemory->FUM.BIN.MIGHTDefects->MemoryManagementProblems->FreeingUnallocatedMemory->FUM.BIN.MUSTDefects->MemoryManagementProblems->FreeingUnallocatedMemory->FUM.ZERO.MUSTDefects->MemoryManagementProblems->FreeingUnallocatedMemory->FUM.ZERO.MIGHTDefects->NullPointerDereference->NPD.FUNC.CALL.MIGHTDefects->NullPointerDereference->NPD.FUNC.CALL.MUSTDefects->NullPointerDereference->NPD.CONST.CALLDefects->UseofUninitializedData->UNINIT.HEAP.MIGHTDefects->UseofUninitializedData->UNINIT.HEAP.MUST如果不关心安全漏洞的话,建议取消如下缺陷类型:SecurityVulnerabilities->InjectionFlawsSecurityVulnerabilities->UnvalidatedUserInput

内容简介KlocworkK7.7环境KlocworkK7.7安装KlocworkK7.7安装后设置用Klocwork分析C/C++项目分析VisualStudio项目分析Tornado项目常见问题处理/编译器设置/知识库及其他用Klocwork分析Java项目用Klocwork分析C/C++项目五种方法1桌面kwinforce和kwinforce

plugin分析2用SourceRootDirectories分析3用BuildSpecificationFiles分析4用VisualStudioProject,SolutionorWorkspace分析5用Tables分析1桌面kwinforce和kwinforce

plugin分析个人桌面环境,分析一个或几个文件用IDE插件kwinforce–hostcyber209–port1102–license-hostcyber209–port27000--errors-configd:\Klocwork75\config\problems_default.pconf.xml–metrics-configd:\Klocwork75\config\metrics_default.mconfcvs

main.c

test.c发现跨模块的缺陷,需要kmcproject的支持kwinforce–hostcyber209–port1102–license-hostcyber209–port27000–projectcvs

main.c

test.c占用license较多2用SourceRootDirectories分析从源代码根目录进行分析,分析根目录下所有的指定后缀的源文件2用SourceRootDirectories分析设置IncludesSystemIncludesMacroDefinitions2用SourceRootDirectories分析缺点需要知道程序的includes/systemincludes/macrodefinition,软件的这些设置多的时候,手工设置很累无法剔除无用的源文件不能确定头文件调用的正确次序因此,这种方法不推荐使用3用BuildSpecificationFiles分析首先从构建进程产生BuildSpec(构建配置)对VC6:kwDspParser<dsp/dswfile>-c<build_config>-o<spec_name>.out对VS2003、2005kwVcprojParser<vcproj/slnfile>-c<build_config>-o<spec_name>.out对其他make类或编译批处理脚步类kwinject-o<spec_name>.out<make/buildbatchcmmand>3用BuildSpecificationFiles分析用KMC从BuildSpec创建项目进行分析3用BuildSpecificationFiles分析是首选方法,尤其对文件数量很多的情况下最为方便、最为准确;真实体现了构建的过程和配置选项3用BuildSpecificationFiles分析生成buildspec的其他方法编译环境太复杂,kwinject无法直接生成buildspec;采用修改makefile、修改构建脚本、kwwrap配置文件、环境变量等方法来实现;4用VisualStudioProject,SolutionorWorkspace分析仅使用于VC6和VS2003、2005dsp/dsw/vcproj/sln文件作为输入进行分析分析结果与使用buildspec相同5用Tables分析从中间文件进行分析适用于仅仅改变了要分析的缺陷和安全漏洞类型的分析可以节省分析时间分析项目的其他设置-OptionsReportOptions分析项目的其他设置-OptionsGenerateClustersreport:是否产生Cluster报告,Cluster是源文件之间循环依赖的一组文件;Donotreportwarnings:报告只包括Error级别的缺陷,隐藏Warning级别的缺陷;Showfullfilepaths:报告中包括每个文件的全路径信息;Generateproblemfilter:创建一个过滤文件用于隐藏不希望看到的缺陷;Ignoreheaderfindings:不要报告关于头文件的缺陷;Showunmatchedrules:列出不适用的规则,例如某个规则规定了某个软件实体的接口关系,但在被分析软件中根本没有这个实体,那这个规则就是unmatchedrulePrintverbosemessagesduringexecution:输出分析过程中处理的文件和链接阶段信息分析项目的其他设置-OptionsDetailalloccurrencesofusagerulesviolations输出违反每个架构规则的所有关系(缺省只列出每个违反规则的一个关系)Groupsimilarerrors:将发生情况相同的同一类缺陷在Klocwork报告中归纳为一个。分析项目的其他设置LoadtheMetricsandTrendingdata确定是否将缺陷趋势分布数据存入MetricsandTrending数据库分析项目配置完成后,进行分析右键点击项目,从右键菜单点击build或buildsetup分析的时候要选择一个临时目录存放Klocwork中间系统文件,临时目录可以重用分析分析时提示选择一个临时目录存放分析的中间结果,这个目录必须是空目录,如果使用的不是空目录,需要选择ReuseTablesDirectory框,选择目录后,点击”Build”,进行分析检查构建是否正确在日志文件中查找«parseerror»,«syntaxerror»和«cannotinclude»信息成功的构建不应有任何以上信息如果有许多parseerrors-可能是一个《unclean》的构建集成,尽管某种特殊情况下解析时也会发现这种信息丢失includes/parseerrors可能的原因是:丢失了–I选项丢失了宏定义错误的环境变量丢失了缺省的编译器includes和定义不支持编译器的某种扩展kwcc(Klocwork编译器)的解析问题丢失了cygwin下的链接目录,DOS无法找到分析结果ProjectCentral查看分析结果http://server_name:8068分析结果点击工具条上的放大镜,可以按不同文件不同级别不同缺陷状态和不同缺陷类型进行条件组合查询分析结果可以进行详细程序代码分析分析方法的选择VisualStudio程序,优先选择buildfromVisualStudioprojectfiles的方式看程序是否具备用buildspec进行分析的条件;一般只要程序能够构建成功,就能够采用这种方法;如果无法生成buildspec,再考虑采用Sourceroot的方式kwinforce只适用于开发人员的桌面环境如果源代码没有修改,只是要分析不同的缺陷类型,可以从tables开始进行分析内容简介KlocworkK7.7环境KlocworkK7.7安装KlocworkK7.7安装后设置用Klocwork分析C/C++项目分析VisualStudio项目分析Tornado项目常见问题处理/编译器设置/知识库及其他用Klocwork分析Java项目分析VisualStudio项目以VisualStudio项目为例,演示分析项目的过程,其他类型的程序过程都是一样的分析的计算机必须安装相应的VisualStudio开发环境;分析VisualStudio项目新建项目File->NewProject…选择源文件后缀点击Next分析VisualStudio项目选择用VisualStudioProject,SolutionorWorkspace分析从KMC选择dsp、dsw、sln、vcproj文件这种方法最简单并且通常是有效的点击Next分析VisualStudio项目选择构建的设置点击Next分析VisualStudio项目选择报告选项建议按图中设置选择点击Next分析VisualStudio项目确定是否将本次分析结果导入MetricsandTrending数据库可以点击Finish,然后修改配置文件,再分析如果保持缺省配置文件,可以直接点击BuildNow分析VisualStudio项目点击Build之后,提示选择一个临时目录存放分析的中间结果,这个目录必须是空目录,如果使用的不是空目录,需要选择ReuseTablesDirectory框,选择目录后,点击”Build”,进行分析分析VisualStudio项目构建过程中,查看Status中的提示,如果有Error提示,需要停止分析或者分析完成之后查看分析日志build.log内容简介KlocworkK7.7环境KlocworkK7.7安装KlocworkK7.7安装后设置用Klocwork分析C/C++项目分析VisualStudio项目分析Tornado项目常见问题处理/编译器设置/知识库及其他用Klocwork分析Java项目分析Tornado项目-编译器设置Tornado项目是用makefile进行编译的典型采用Buildspecification(.out文件)的方法Tornado编译器一般不在Klocwork缺省设置中,请打开<Klocwork_install>\config\kwfilter.conf文件(以CCPPC和LDPPC为例):在filter gnu gcc,g++,cc,c++一行末尾添加编译器filter gnu gcc,g++,cc,c++,CCPPC在filter ar

ar一行末尾添加链接器filter ar

ar,LDPPC分析Tornado项目-自动获取编译配置的方法一首先找到Tornado项目目录下的Makefile文件然后,打开命令行窗口:运行Tornado环境设置批处理文件(linux平台路径可能不同):<Tornado_install>\host\x86-win32\bin\torvars.bat运行makeclean,清理已经进行过的构建,或者手工删除已生成的目标文件make-fMakefileclean运行Klocworkinject命令,提取构建配置kwinject-okwinject.outmake-fMakefile然后,在KMC中按照用buildspecificationfiles构建的方法进行分析分析Tornado项目-自动获取编译配置的方法二有时候,Tornado的项目无法用命令行进行make;这种情况下,可使用kwwrap方法;打开Tornado项目,在Target上点击右键,选择Properties,在打开的窗口中,选择compiler页面,在下面的编译器文本框里,原有编译器前面加上kwwrap–od:\a.trace;linker和Assembler同样操作;然后,在项目上点击右键,选择“dependencies…”在Tornado里面rebuild;注意:.trace文件是追加的,下一次重新生成的时候,把上次的.trace删除,否则,会有重复记录.trace文件要给出绝对路径,避免编译过程转换工作目录造成混乱执行:kwinject-tD:\was\was.trace-od:\was\was.out分析Tornado项目创建项目分析Tornado项目点击Next,选择BuildfromBuildSpecificationFiles,并选择kwinject生成的.out文件分析Tornado项目点击Next,设置报告选项:点击Next,设置是否将分析结果存入质量趋势分析数据库如果立即分析,点击BuildNow如果以后分析,点击Finish内容简介KlocworkK7.7环境KlocworkK7.7安装KlocworkK7.7安装后设置用Klocwork分析C/C++项目分析VisualStudio项目分析Tornado项目常见问题处理/编译器设置/知识库及其他用Klocwork分析Java项目分析项目的常见问题一dsw文件中的dsp项目有互相依赖关系,直接分析dsp/dsw可能会报告错误;解决:采用buildfromspecificationfiles方法;对VC6:kwDspParser<dsp/dswfile>-c<build_config>–o<spec_name>.out对VS2003、2005kwVcprojParser<vcproj/slnfile>-c<build_config>-o<spec_name>.out分析项目的常见问题二Status报告了分析的时候出现了错误:分析项目的常见问题二这种错误最可能的原因是找不到相关的头文件例如:系统头文件使用了第三方的库文件;使用的系统头文件,klocwork不能自动将系统设置提取出来;解决方法:首先从build.log查找缺少哪些头文件;用buildspecification方法,生成.out文件;修改.out文件中的config段的内容,加入所需的头文件;分析项目的常见问题二从build.log查看缺少哪些头文件,第一次点击ViewFullLog按钮会提示输入文本编辑器的名称(如:Notepad、UEdit32)分析项目的常见问题二用buildspecification方法,生成.out文件修改.out文件中的config段:如果是系统头文件:加入-J<sys_include_paths>如果是用户头文件:加入-I<user_include_paths>如果是预编译宏定义:加入-D<macro_definition>逐个加入,以分号(;)分隔,无空格分析项目的常见问题二然后用修改后的.out文件进行分析检查build.log,有问题再次修改.out文件直到没有error报告为止分析常用的知识库定制例:非标准内存管理函数(mymalloc与myfree)的知识库设置void*mymalloc(intsize)手工创建一个知识库文件如:manual.kb,加入如下行:mymalloc-DMEMmygroup,allocmymalloc-BPSbytesize($$)=$1myfree-FREEmygroup$1分析常用的知识库定制定制的知识库的使用在项目中导入.kb文件,然后进行build,即可分析常用的知识库定制class=NPD这种类型的记录用于声明一个函数在不进行NULL检查的情况下,会发生空指针引用。因此,如果NULL作为参数传递给函数,就会发生一个运行时错误。

myElemCopy-NPD1

myElemCopy-NPD2分析常用的知识库定制class=DMEM记录声明您自己的内存管理函数(函数如何分配或释放内存)。这类记录帮助Klocwork发现内存泄漏和不匹配的内存释放调用,格式如下:<group>,alloc,[<socket-expression>]alloc声明一个分配内存的函数。如果在”alloc”之后添加socket表达式,说明被分配的内存通过一个函数参数返回。注意:有三个内建组:stdc--malloc/realloc/calloc/freestdc++--new/deletestdc++[]--new[]/delete[],MRF,<argnum>如果inSpect和inForce不知道关于一个函数的任何情况,并且将内存传递给它,它们将假设内存指针可能被保存到某个存储位置。这种情况下,它停止跟踪内存泄漏。MRF用于指示内存既没有被释放也没有被保存在任何地方。例如,一个应用可能动态传递分配的内存到strcpy,strcpy不会释放或者在任何地方保存这个指针。分析常用的知识库定制class=DMEM例:f_alloc-DMEMmy_wrappers,allocf_act-DMEM,MRF,1分析常用的知识库定制class=FREE声明释放内存的函数语法:<function_name><function_key>FREE<alloc_group><expression>[post:<postcondition>]<alloc_group>是一个标识符,指定一组内存管理函数。如果使用来自不同组的函数来进行内存的分配和释放,就会报告一个FMM缺陷。<expression>表示哪个参数会被释放。<postcondition>是可选参数,表示如果内存被释放,则postcondition为true。例:realloc-FREEstdc$1post:$$NE(0)realloc是一个stdc函数,释放通过第一个参数传递的内存。当内存释放后,会返回一个非空指针。分析常用的知识库定制class=BPS缓冲区属性设置(BPS)信息描述一个函数如何修改缓冲区属性语法:<functionname><functionsignature>‘BPS’<propertytransferspecification>例:strdup-BPScharlength($$)=charlength($1)strdup-BPSbytesize($$)=charlength($1)+1strcpy-BPScharlength($1)=charlength($2)编译器配置Klocwork能够识别大多数主流编译器:从文件<klocwork_install>\config\kwfilter.conf文件中可以查看;如果所使用的编译器不在kwfilter.conf中,需要修改kwfilter.conf文件进行设置,否则kwinject生成的.out文件内容为空,只有一行版本行;例:Tornado项目的设置:如果Tornado项目使用的编译器是CCPPC(GNU类型),链接器是LDPPC,则修改kwfilter.conf如下:#DefaultGNUC/C++compilerfilter gnu gcc,g++,cc,c++,CCPPC#GNUarfilter ar

ar,LDPPC如果编译器类型在kwfilter.conf中不存在,需要添加新的编译器类型编译器配置正确的编译器配置是执行准确的KW构建所必要的构建配置文件中的«config;...»行–是构建快照的一部分,或者是kwcc_config.xml

文件的一部分–由Klocwork产生设定编译器–设置定义、头文件目录和语言扩展名许多编译器可被构建辅助工具自动配置.参见Klocwork的技术指导手册.例如,包括:GNU:gcc(2.x,3.x)Microsoft:cl(VC6,VC7,VC7.1)ARM:armcc(4.x)Windriver

Diab:dcc(5.x)…配置作为构建配置的一部分保存(kwinject.out)kwcc

选项有一些kwcc(Klocworkcompiler)选项您可能希望传递给kwbuildproject:-I<dir> -设置头文件路径

-D<macro[=value]> -定义宏

-U<macro> -取消定义宏

-imacros<file> -接受在文件<file>中定义的宏

-include<file> -其他文件之前包含文件

<file>的内容

-J<dir> -设置系统头文件路径

-isystem<dir> -设置系统头文件路径

-nostdinc -不用搜索系统头文件

-undef -不用使用预定义宏需要优化或添加丢失的配置信息时,这些选项很重要分析项目的配置文件在ConfigurationFiles子项下缺省从上层继承可以删除、导入新的配置文件和知识库文件分析项目的配置文件配置文件的继承关系分析度量度量文件.mconf文件,到projects_root\projects\<project_name>的rules目录下修改.mconf文件#Formatofeachrule:#Name;Entity-Type;Metric-Expression;Error-Threshold;Warning-Threshold

WARNING.SEVERITY=7ERROR.SEVERITY=3WARNING.CATEGORY="UserDefinedWarningCategory2"ERROR.CATEGORY="UserDefinedErrorCategory2“Cyclomaticcomplexity(VG);FUNCTION,CLASS-METHOD;CYCLOMATIC;30;20!aliasHALSTEAD=(NOOPRUSED+NOOPUSED)*log(NODISOPRUSED+NODISOPUSED)/log(2)Halstead'sProgramvolume(V);FUNCTION,CLASS-METHOD;HALSTEAD;1000;700Maintainability;FUNCTION,CLASS-METHOD;100-((NOINDPATHS+CYCLOMATIC)*0.23+log(HALSTEAD)*5.3);<0;<20分析架构约束架构规则文件.uconf文件,到projects_root\projects\<project_name>的rules目录下修改.uconf文件

#RuleName;FromObject;ToObject;RelationshipType;ErrorField;WarningField;ModifierWARNING.SEVERITY=7ERROR.SEVERITY=3WARNING.CATEGORY="UserDefinedWarningGroup1"ERROR.CATEGORY="UserDefinedErrorGroup1"donotuselibrarytclmorethanitisrightnow;*;tcl.h;*;5命令行方式还可以使用kwadmin和kwbuildproject命令在命令行下进行分析能够做KMC所作的所有事情kwadmin

命令行格式请参考Klocwork_AdministrationGuide.pdf

手册MetricsandTrending项目经理或开发人员在MetricsandTrending中查看不同产品的缺陷分析:不同模块各种级别的bug;不同版本的各种类型的bug;对每次构建后的程序进行度量和比对ArchitecturalAnalysis可在ArchitecturalAnalysis通过函数的依赖关系和流程图进行分析查找组件,按组件架构优化设计查找异常结构,消除异常结构(闭环依赖关系--Cluster)在Eclipse开发环境中发现分析解决问题打开Inforceforc/c++或Java程序内容简介KlocworkK7.7环境KlocworkK7.7安装KlocworkK7.7安装后设置用Klocwork分析C/C++项目分析VisualStudio项目分析Tornado项目常见问题处理/编译器设置/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论