ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:310.02KB ,
资源ID:25052222      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25052222.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件总代码行数软件注释率分析.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件总代码行数软件注释率分析.docx

1、软件总代码行数软件注释率分析 文档名称: 软件总代码行数_软件注释 率分析 作 者: 日 期: 1. cncc1.1 工具简介度量工具名称cncc网址操作方式命令行实现语言C+适用的操作系统Windows可以度量的属性code-lines, empty-lines, comment-lines, total-lines备注1.2 工具优缺点总结 最新版本 cncc-1-3-1,在sourceforge中2004年已经停止更新。最大的优点是源代码全部存于一个cpp文件,便于集成。缺点:1.代码基本没有注释。2.下载的代码编译有9个错误。3.费了2个多小时也没搞定。1.3 使用例程无。2. Cod

2、eCount2.1 工具简介度量工具名称CodeCount网址操作方式GUI实现语言C+适用的操作系统Windows可以度量的属性total-lines, empty-lines, comment-lines, code-lines,备注2.2 工具优缺点总结优点:工具比较精简,统计源文件总行数、代码行数、空白行数、注释行数,代码有一定的注释。缺点:下载的源码是vc7工程,由于机器并没有vc7,利用工具进行工程类型转换,将vc7的工程转换为vc6的工作,编译出错。核心代码如下:BOOL bCommentSet = FALSE; /注释行统计标识 有/*时TRUE, */时FALSE BOOL

3、bQuatoSet = FALSE; /字符串统计标识 首次一行有奇数个时TRUE, 下一行有奇数个时FALSE int nLength = (int)file.GetLength(); CString bufRead; int nLineCommentBegin = 0; while(file.ReadString(bufRead)!=FALSE) BOOL bStatedComment = FALSE;/本行作为注释行是否已统计过 BOOL bStatedCode = FALSE; /本行作为代码行是否已统计过 nLines+; bufRead.TrimLeft(); /先将文件头的空格或

4、制表符去掉 if(bufRead.GetLength()=0) /为空白行 nBlankLines+; continue; if(bCommentSet & bufRead.Find(_T(*/)=-1) nCommentLines+; continue; if(bufRead.Find(_T(/)=-1 & bufRead.Find(_T(/*)=-1 & bufRead.Find(_T(*/)=-1) /如果本行根本就无注释符,则要不是注释符,要不是代码行 if(bCommentSet) nCommentLines+; continue; else if(bufRead.Find()=-1

5、) nCodeLines+; continue; if(bufRead.Find(_T(/)=0 & !bCommentSet & !bQuatoSet) nCommentLines+; continue; BOOL bDoubleSplashFound = FALSE; BOOL bSplashStarFound = FALSE; for(int i=0; ibufRead.GetLength()-1; i+) /char cTemp = bufReadi; wchar_t cTemp = bufReadi; if(bufReadi=/ & bufReadi+1=/ & !bCommentS

6、et & !bQuatoSet) if(!bStatedComment & (m_nStatMethod=1 | m_nStatMethod =2) bStatedComment = TRUE; nCommentLines+; bDoubleSplashFound = TRUE; /i+;/应该+1,但也没有什么用处 break; else if(bufReadi=/ & bufReadi+1=* & !bCommentSet & !bQuatoSet) if(!bStatedComment & (m_nStatMethod=1 | m_nStatMethod =2) bStatedComme

7、nt = TRUE; nCommentLines+; bCommentSet = TRUE; bSplashStarFound = TRUE; i+; /计算代码行必须在bCommentSet关闭之前 else if(bufReadi!= & bufReadi!=t & !bCommentSet) if(!bStatedCode) bStatedCode = TRUE; nCodeLines+; if(bufReadi=) /之后的字符要跳过 i+; continue; if(bufReadi=) if(bufReadi+1=) i+=2; else i+=1; continue; if(bu

8、fReadi=) /必须引起重视,感谢ltzhou bQuatoSet = !bQuatoSet; else if(bufReadi=* & bufReadi+1=/ & bCommentSet & !bQuatoSet) if(!bStatedComment & (m_nStatMethod=1 | m_nStatMethod =2) bStatedComment = TRUE; nCommentLines+; bCommentSet = FALSE; bSplashStarFound = TRUE; i+; if(bDoubleSplashFound) if(m_nStatMethod=2

9、 & bStatedCode) /如果统计方法为第三种,且同时有代码行与注释行,则只计注释行 nCodeLines-; if(m_nStatMethod=0 & !bStatedCode)/如果统计方法为第一种,且未作为代码行统计过,那么必为注释行 nCommentLines+; continue; if(bufReadbufRead.GetLength()-1=&!bCommentSet) /若某行最后一个是,则必定用来关闭bQuatoSet,记代码行一行,否则报错 bQuatoSet = !bQuatoSet; if(!bQuatoSet) if(!bStatedCode) bStated

10、Code = TRUE; nCodeLines+; else CStdioFile fileLog; if(fileLog.Open(m_strLogFile, CFile:modeCreate|CFile:modeWrite|CFile:modeNoTruncate)=TRUE) CString strMsg; if(fileLog.GetLength()=0) strMsg.Format(_T(文件t行t问题n), strFileName, nLines); fileLog.WriteString(strMsg); strMsg.Format(_T(%st%dt字符串换行未用n), str

11、FileName, nLines); fileLog.WriteString(strMsg); fileLog.Close(); continue; if(bufReadbufRead.GetLength()-1!= & bufReadbufRead.GetLength()-1!=t & !bCommentSet & bufReadbufRead.GetLength()-2!=* & bufReadbufRead.GetLength()-1!=/) /如果最后一个字符非空格或制表符,且前面无/*,最后两个字符不是*/,则为代码行 if(!bStatedCode) bStatedCode = T

12、RUE; nCodeLines+; if(bSplashStarFound) if(m_nStatMethod=2 & bStatedCode) /如果统计方法为第三种,且同时有代码行与注释行,则只计注释行 nCodeLines-; if(m_nStatMethod=0 & !bStatedCode & !bStatedComment) /若该行无代码如 /*abc*/ /222 /但是统计方法是第一种,则需要追加注释行计数一次 bStatedComment = TRUE; nCommentLines+; if(!bStatedComment & bCommentSet)/可能是前面有/*,在

13、第一种统计方法中,未作为代码行计算过,那么本行肯定是注释行 if(m_nStatMethod=0 & !bStatedCode) bStatedComment = TRUE; nCommentLines+; if(bQuatoSet & bufReadbufRead.GetLength()-1!=) CStdioFile fileLog; if(fileLog.Open(m_strLogFile, CFile:modeCreate|CFile:modeWrite|CFile:modeNoTruncate)=TRUE) CString strMsg; if(fileLog.GetLength()

14、=0) strMsg.Format(_T(文件t行t问题n), strFileName, nLines); fileLog.WriteString(strMsg); strMsg.Format(_T(%st%dt字符串换行未用n), strFileName, nLines); fileLog.WriteString(strMsg); fileLog.Close(); file.Close();2.3 使用例程 通过分析其源代码,抽取解析源文件部分的功能代码,构建独立的工程,经测试可以完成代码行等数据的统计工作,但仍需要进一步测试。 下一步工作: 将本工程与实现功能单元最大行数的工程合并,最终实

15、现关于代码行数的度量工具。 3. codeAnalysis3.1 工具简介度量工具名称codeAnalysis网址操作方式GUI实现语言C+适用的操作系统Windows可以度量的属性code-lines, empty-lines, comment-lines,备注3.2 工具优缺点总结 缺点:1.实现过于简单,没有利用价值。 2.可以执行,但结果不正确,界面截图如下: 3. 经过代码分析,其核心统计代码考虑情况不完善。核心代码如下: for( int i=0; iiCount; i+) strItem = m_listSourceFile.GetItemText( i, 0); if( !oS

16、rcFile.Open( strItem, CFile:modeRead) CString strMsg = cannot open file : ; strMsg += strItem; MessageBox( strMsg); return; for( ;) if( !oSrcFile.ReadString( strLine) break; strLine.TrimLeft(); strLine.TrimRight(); if( 0 = strLine.GetLength() iBlankCount+; else if( / = strLine.Left(2) iCommentCount+

17、; else iSourceCount+; oSrcFile.Close(); 总结:没有使用价值。3.3 使用例程无。4. codeAnalyer4.1 工具简介度量工具名称codeAnalyer网址操作方式GUI实现语言java适用的操作系统Windows Linux可以度量的属性total-lines, empty-lines, comment-lines, code-lines备注支持C, C+, java语言的源码4.2 工具优缺点总结 并没有实际运行起来,因此着重分析其对应处理代码行统计的代码。 优点: 1. 该工具可以显示项目的文件树 2. 核心代码在CodeAnalysis目录

18、下的几个类,封装非常好,例如专门处理comment的类,度量对象的类Stats。 4.3 使用例程”CodeAnalyzer-0.7.0.jar”图标右键单击后,在“打开方式”里选择”Java(TM) Platform SE binary”。1. 新建Code Set选择”File”菜单里的”New Code Set”菜单项,如图4.3.1所示。图4.3.1新建Code Set2. 给Code Set重命名选中新建的Code Set ”New”,单击鼠标右键,如图4.3.2所示。 图4.3.2给Code Set重命名在弹出菜单中选择”Rename”选项,在弹出的对话框中输入新的code set

19、名称,如图2.3所示。图4.3.3给Code Set重命名3. 为这个Code Set选择Extension Set选择”Tools”菜单里的”Extension Sets”菜单项,再选择”Select”子菜单项,如图2.4所示。图4.3.4选择Extension Set再选择该子菜单项下的的”Standard C(*.c *.h)”选项,如图4.3.5所示。图4.3.5选择Extension Set4. 构建Code Set视图选中重命名后的Code Set ”Code Analyzer For C”,单击鼠标右键,如图4.3.6所示。图4.3.6构建code set视图在弹出菜单中选择”A

20、dd Branch”选项,选择要检测的实例代码的路径,如图2.7所示。图4.3.7选择实例路径构建好的Code Set视图如图4.3.8所示。图4.3.8构建好的code set视图5. 执行选择”Run”菜单里的”Run”菜单项,如图4.3.9所示。图4.3.9执行实例分析的结果如图4.3.10所示。图4.3.10执行结果5. 生成报告选择”Reports”菜单里的”Full HTML Report”菜单项,如图4.3.11所示。图4.3.11选择报告类型选择生成的报告的保存路径,如图4.3.12所示。图4.3.12选择保存路径选择分析只包含文件夹还是文件夹文件都包括,如图2.13所示。图4

21、.3.13选择包含类型生成的html报告如图4.3.14所示。 图4.3.14html报告5. SourceMeter5.1 工具简介度量工具名称SourceMeter 网址操作方式命令行实现语言Java适用的操作系统Windows/Unix可以度量的属性FC Number of processed filesLOT Lines of textLOTNE Non-empty lines of textJFLD Number of Java field definitions备注开源。代码已找到。官方文档非常详细SourceMeter is a tool for calculating metr

22、ics on source code bases in any language. It provides a number of built-in metrics, but has also been designed to make the implementation of new metrics as simple as possible.5.2 工具优缺点总结 优点:1.实现方案完善 2.帮助文档齐全3.代码有研究价值5.3 使用例程1. 必须有Java 2 (J2SE)环境。2.解压下载的压缩文件。 3.修改SourceMeter.cmd (for Windows)文件,指定SourceMeter的路径。4. 也可以将SourceMeter的bin目录设置到环境变量中,这样可以任意目录都可以执行SourceMeter。 5. 运行SourceMeter,会有使用提示 6 总结 采用CodeCount和另一开源代码(定位函数定义行)结合,进行源代码分析,可以实现软件总代码行数、软件注释率和功能单元最大有效代码行数的度量。 若进行源码研究的话,推荐CodeCount、SourceMeter、codeAnalyer。 集成这3个度量的工具采用GUI界面,开发语言采用C+,工具VC6。

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

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