设为首页 加入收藏

TOP

C++统计代码注释行数 & 有效代码行数 & 代码注释公共行 & 函数个数(二)
2015-07-20 17:53:51 来源: 作者: 【 】 浏览:6
Tags:统计 代码 注释 有效 公共 函数个数
' || line[i] == '\r' || line[i] == '\n')
?34 ? ? ? ? {
?35 ? ? ? ? ? ? ++i;
?36 ? ? ? ? }
?37 ? ? ? ? //“以下为空行统计区域:开始”
?38 ? ? ? ? if (!bXgx && line[i] == '\0') ?//空行
?39 ? ? ? ? {
?40 ? ? ? ? ? ? ++nKh;
?41 ? ? ? ? ? ? continue;
?42 ? ? ? ? }
?43 ? ? ? ? //“空行统计:结束”
?44 ? ? ? ? while (1)
?45 ? ? ? ? {
?46 ? ? ? ? ? ? //第一次遇到双引号 ? ? ? ? ? ? ?引号为非转义字符(\")
?47 ? ? ? ? ? ? if (!bSyh && line[i] == '\"' && ((i > 0 && line[i-1] != '\\') || (i == 0)))?
?48 ? ? ? ? ? ? {
?49 ? ? ? ? ? ? ? ? ++i;
?50 ? ? ? ? ? ? ? ? bSyh = 1;
?51 ? ? ? ? ? ? ? ? continue;
?52 ? ? ? ? ? ? }
?53 ? ? ? ? ? ? //“正在进行双引号屏蔽....”
?54 ? ? ? ? ? ? if (bSyh)
?55 ? ? ? ? ? ? {
?56 ? ? ? ? ? ? ? ? //“ \”结束”
?57 ? ? ? ? ? ? ? ? if (line[i] == '\"' && ((i > 0 && line[i-1] != '\\') || (i == 0)))
?58 ? ? ? ? ? ? ? ? {
?59 ? ? ? ? ? ? ? ? ? ? bSyh = 0;
?60 ? ? ? ? ? ? ? ? }
?61 ? ? ? ? ? ? ? ? else if (line[i] == '\0') ?//行末尾
?62 ? ? ? ? ? ? ? ? {
?63 ? ? ? ? ? ? ? ? ? ? if (bZs) ? ? ? ?
?64 ? ? ? ? ? ? ? ? ? ? ? ? ++nZs; ? ? ??
?65 ? ? ? ? ? ? ? ? ? ? if (bCode)
?66 ? ? ? ? ? ? ? ? ? ? ? ? ++nDm; ? ? ?
?67 ? ? ? ? ? ? ? ? ? ? if (bZs && bCode)
?68 ? ? ? ? ? ? ? ? ? ? ? ? ++nGg;
?69 ? ? ? ? ? ? ? ? ? ? break;
?70 ? ? ? ? ? ? ? ? }
?71 ? ? ? ? ? ? ? ? ++i;
?72 ? ? ? ? ? ? ? ? continue;
?73 ? ? ? ? ? ? }
?74 ? ? ? ? ? ? //遇到单引号(避免'{','}'),且非转义字符\',连续跳过3个(第二个'后位置)
?75 ? ? ? ? ? ? if (line[i] == '\'' && ((i > 0 && line[i-1] != '\\') || (i == 0)))
?76 ? ? ? ? ? ? {
?77 ? ? ? ? ? ? ? ? i += 3;
?78 ? ? ? ? ? ? ? ? continue;
?79 ? ? ? ? ? ? }
?80 ? ? ? ? ? ? //“//注释行”
?81 ? ? ? ? ? ? if (!bXgx && line[i] == '/' && line[i+1] == '/') ?
?82 ? ? ? ? ? ? {
?83 ? ? ? ? ? ? ? ? if (bCode) ? ? //“前有代码,混合注释行”
?84 ? ? ? ? ? ? ? ? {
?85 ? ? ? ? ? ? ? ? ? ? ++nZs; ? ? //注释
?86 ? ? ? ? ? ? ? ? ? ? ++nDm; ? ? //代码
?87 ? ? ? ? ? ? ? ? ? ? ++nGg; ? ? //公共
?88 ? ? ? ? ? ? ? ? }
?89 ? ? ? ? ? ? ? ? else ? ? ? ? ?//纯注释行
?90 ? ? ? ? ? ? ? ? {?
?91 ? ? ? ? ? ? ? ? ? ? ++nZs;
?92 ? ? ? ? ? ? ? ? }
?93 ? ? ? ? ? ? ? ? break; ?//跳出当前行(即,内while循环),“//”后代码不做判断
?94 ? ? ? ? ? ? }
?95 ? ? ? ? ? ? //“/*注释开始”
?96 ? ? ? ? ? ? if (!bXgx && line[i] == '/' && line[i+1] == '*')
?97 ? ? ? ? ? ? {
?98 ? ? ? ? ? ? ? ? i += 2; ? ? ? ?//跳过/*符号
?99 ? ? ? ? ? ? ? ? bXgx = 1; ? ? ?//标记“/*”开始
100 ? ? ? ? ? ? ? ? bZs = 1; ? ? ? //“发现注释”
101 ? ? ? ? ? ? ? ? continue;
102 ? ? ? ? ? ? }
103 ? ? ? ? ? ? //“正在进行多行注释....”
104 ? ? ? ? ? ? if (bXgx)
105 ? ? ? ? ? ? {
106 ? ? ? ? ? ? ? ? //“*/注释结束”
107 ? ? ? ? ? ? ? ? if (line[i] == '*' && line[i+1] == '/')
108 ? ? ? ? ? ? ? ? {
109 ? ? ? ? ? ? ? ? ? ? ++i; ? ? //“跳过*/”注意后有一个 ++i;
110 ? ? ? ? ? ? ? ? ? ? bXgx = 0;
111 ? ? ? ? ? ? ? ? }
112 ? ? ? ? ? ? ? ? else if (line[i] == '\0') ?//行末尾
113 ? ? ? ? ? ? ? ? {
114 ? ? ? ? ? ? ? ? ? ? if (bCode) ? ? ? //注释前有代码,即“混合行”
115 ? ? ? ? ? ? ? ? ? ? {
116 ? ? ? ? ? ? ? ? ? ? ? ? ++nDm;
117 ? ? ? ? ? ? ? ? ? ? ? ? ++nZs; ? ? ??
118 ? ? ? ? ? ? ? ? ? ? ? ? ++nGg;
119 ? ? ? ? ? ? ? ? ? ? }
120 ? ? ? ? ? ? ? ? ? ? else
121 ? ? ? ? ? ? ? ? ? ? {
122 ? ? ? ? ? ? ? ? ? ? ? ? ++nZs; ? ? ? //“纯注释”
123 ? ? ? ? ? ? ? ? ? ? }
124 ? ? ? ? ? ? ? ? ? ? break;
125 ? ? ? ? ? ? ? ? }
126 ? ? ? ? ? ? ? ? ++i;
127 ? ? ? ? ? ? ? ? continue;
128 ? ? ? ? ? ? }
129 ? ? ? ? ? ? if (line[i] == '\0')
130 ? ? ? ? ? ? {
131 ? ? ? ? ? ? ? ? if (bZs) ? ? ? ?
132 ? ? ? ? ? ? ? ? ? ? ++nZs; ? ? ??
133 ? ? ? ? ? ? ? ? if (bCode)
134 ? ? ? ? ? ? ? ? ? ? ++nDm; ? ? ?
135 ? ? ? ? ? ? ? ? if (bZs && bCode)
136 ? ? ? ? ? ? ? ? ? ? ++nGg;
137 ? ? ? ? ? ? ? ? break;
138 ? ? ? ? ? ? }
139 ? ? ? ? ? ? //“以下全是有效代码区域”
140 ? ? ? ? ? ? //“函数个数统计区域:开始”
141 ? ? ? ? ? ? if (line[i] == '{') ? ? ?//记录函数左括号
142 ? ? ? ? ? ? {
143 ? ? ? ? ? ? ? ? ++bHs;
144 ? ? ? ? ? ? }
145 ? ? ? ? ? ? else if (line[i] == '}') //遇到函数右括号
146 ? ? ? ? ? ? {
147 ? ? ? ? ? ? ? ? if (bHs == 0) ? ? ? ?//“发现一个函数”
148 ? ? ? ? ? ? ? ? ? ? ++nHs;
149 ? ? ? ? ? ? ? ? --bHs;
150 ? ? ? ? ? ? }
151 ? ? ? ? ? ? //“函数统计:结束”
152 ? ? ? ? ? ? ++i;
153 ? ? ? ? ? ? bCode = 1; ? ?//能执行到这里,说明该行存在代码
154 ? ? ? ? }
155 ? ? }
156 ? ??
157 ? ? cout<<"注释: "<
158 ? ? cout<<"代码: "<
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVA 10869 - Brownie Points II(.. 下一篇HDU4509-湫湫系列故事――减肥记I..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: