依然是源码注释行统计.请进来看看,感谢之至!
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int m_comment=0;
int mm=0;
int CountCommentLine( char* filename,int set) //注释行数
{
int mm=0;
ifstream inn(filename,ios::in);
if(!inn)
{
cout << "can't" <<endl;
return 1;//返回输入
}
string line;
bool flag = false;
while(getline(inn,line))
{
//找出第一个非空白字符
size_t begin = line.find_first_not_of(" \a\b\f\n\r\t\v");
//找出最后一个非空白字符
size_t end = line.find_last_not_of(" \a\b\f\n\r\t\v");
if (end - begin >0 )
{
//不是C注释块
if(!flag)
{
//C++注释行
if (line[begin] == '/' && line[begin+1] == '/')
m_comment++;
/*C注释开始行*/
else if (line[begin] == '/' && line[begin+1] == '*')
{
m_comment++;
/*有C风格注释块*/
if (!(line[end] == '/' && line[end -1] == '*'))
flag = true;
}
}
else
{
m_comment++;
/* C风格注释块结束*/
if (line[end] == '/' && line[end -1] == '*')
flag = false;
}
}
/*该行只有一个字符,且在C风格注释块里面*/
else if (flag)
{
m_comment++;
}
}
ifstream _inn(filename,ios::in); //这是为了统计代码后有注释的行数
string line2;
bool flag2 = false;
while(getline(_inn,line2))
{
//找第一个非空白字符
size_t begin = line2.find_first_not_of(" \a\b\f\n\r\t\v");
//找最后一个非空白字符
size_t end = line2.find_last_not_of(" \a\b\f\n\r\t\v");
if (end - begin >0 )
{
if(!flag)
{
for(int i=begin; i<end; ++i)
{
if(line2[begin]!='/'&&line2[begin+1]!='*'&&line2[begin+1]!='/')
{
if(line2[i]=='/'&&line2[i+1]=='/')
{
mm++;
}
if(line2[i]=='/'&&line2[i+1]=='*'&&line2[end-1]=='*'&&line2[end]=='/')
{
mm++;
}
}
}
}
}
}
if(1==set)//代码后有注释 注释+
{
m_comment = m_comment+mm;
}
if(0==set)//代码后有注释 注释不+
{
;
}
if(2==set)
{
//等待函数完成此三项//一个传值函数?输出调用这个函数?
}
return m_comment;
}
int main(void)
{
char filename[256];
int set;
cin >>filename;
cout <<"0: 只作为代码行处理" << endl
<<"1: 只作注释行处理" << endl
<<"2: 代码行和注释行各增加一行" <<endl; //单独写一个函数完成加减工作
cin >>set;
int comment=CountCommentLine(filename,set);
cout << "注释行数:" << comment <<endl;
return 0;
}
有缺陷啊 像这样的会重复统计怎么办??
/*aaaaaa
aaaaa// 这个重复
aaaaa// 这个重复
aaa//aa 这个重复
*/
/*
a= "//sssss\* "; 重复计一次
*/
void /*/*/ 算成了2行注释=.=
我目前统计方式是 只考虑“作为注释行处理”就是代码后有注释的按注释计!
请大家看看 怎么会是呢
相关推荐
minix3 完整源码 28864行 带英语注释 部分中文注释 个人添加
minix3 完整源码 整理到了一个cpp中 便于分析 28864行 带英语注释 部分中文注释 个人添加
用状态机实现C++代码统计工具:注释与代码行精准识别
代码行数是软件项目评估中最直观的量化指标之一,但准确统计注释行、空白行与代码行并非易事。文本解析中,状态机是一种记录扫描位置与上下文的经典模型,它能有效区分字符串、字符常量与注释边界,从而解决正则表达式难以处理的复杂匹配问题。基于状态机设计的C++统计工具,可递归遍历工程目录,精准识别//行注释与/*块注释,并自动过滤空白行,为代码质量复盘与工作量评估提供可靠数据支撑。本文从统计口径定义出发,逐步实现一个可用的C++代码统计工具,并分享边界测试与工程踩坑经验,帮助开发者快速掌握状态机思想与文件处理实战技能。
高效代码行数统计工具使用指南与实战
这才是重头戏!假设你们公司用了 Swagger 自动生成 API 接口类,你想把这些“机器写的代码”排除在外,怎么办?创建一个// file 对象包含: path, size, mtime, content (前1KB), lang// 单独标记测试代码然后命令行加载:瞧,你现在不仅能过滤文件,还能给它们打标签,后续分析时就可以分别统计“主代码”、“测试代码”、“生成代码”……这种能力简直是为企业级审计量身定做的 👔。
代码行统计工具(可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。)
软件功能: 可用于对VC++、C++ Builder、Delphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序中代码行、注释行和空白行的行数。程序会自动根据你选择的文件类型选择相应的统计方式,并将所有文件的分析结果进行汇总,便于方便直观的对软件项目的代码量进行全面的评估。本软件是绿色软件,不需要安装,展开到任意目录,直接运行即可。 1、 支持VC++、VC.Net项目文件的统计方式。 2、 支持C++ Builder项目文件的统计方式。 3、 支持C/C++文件 .cpp 和 .h 的文件统计。 4、 支持同时多个文件的统计方式。 5、 支持同时多种文件类型的统计方式。 6、 支持VB项目文件和 .frm 和 .bas 文件的统计。 7、 支持汇编文件 .asm 和 .inc 的统计。 8、 支持Delphi项目文件 .dpr 和 .pas、.dfm 文件的统计。 9、 支持C#项目文件 .csproj 的直接统计及 .cs 文件的统计。 10、支持Java文件 .java 的统计。 11、支持SQL文件 .sql 的统计。 12、支持 *.* 文件类型的自动分析统计。 13、支持自定义一次选择多个目录的统计方式。 14、支持用户自定义文件统计类型及统计方法。 15、支持htm,excel,csv,txt等多种存盘文件类型。 16、支持统计结果的直接打印输出。 17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及目录快捷统计方式。 19、支持GUI和命令行方式下使用自定义配置文件进行统计的方式。
bat文件源码统计工具
bat 源码统计工具 注意了,是统计bat源码 可以改改统计其他语言的代码


