📄 cstat.cpp
字号:
//cout<<buffer<<endl;
fclose(pf);
strBuf = buffer;
delete []buffer;
return 0;
}
protected:
friend class CNBNCInitState;
friend class CNBNCAnalyseState;
friend class CNBNCPPCommentState;
friend class CNBNCommentState;
friend class CNBNCBlankState;
friend class CNBNCCodeState;
friend class CNBNCEndState;
string m_strbuf;
string m_strFName;
int m_ipos;
DWORD m_dwCounts;
DWORD m_dwcodeCounts;
DWORD m_dwBlankCounts;
DWORD m_dwCommentCounts;
/*
m_pobjInitState = new CNBNCInitState();
m_pobjAnalyseState= new CNBNCAnalyseState ();
m_pobjCommentState= new CNBNCommentState ();
m_pobjBlankState= new CNBNCBlankState ();
m_pobjCodeState= new CNBNCCodeState ();
m_pobjEndState = new CNBNCEndState();
m_pobjCPPCommentState = new CNBNCPPCommentState();
*/
CNBNCInitState m_objInitState;
CNBNCAnalyseState m_objAnalyseState;
CNBNCPPCommentState m_objCPPCommentState;
CNBNCommentState m_objCommentState;
CNBNCBlankState m_objBlankState;
CNBNCCodeState m_objCodeState;
CNBNCEndState m_objEndState;
};
DWORD CNBNCAnalyseState::transfer(Capsule&capsuleData)
{
CNBNCCapsule &nbncdata = (CNBNCCapsule &)capsuleData;
int &i = nbncdata.m_ipos;
string& strbuf = nbncdata.m_strbuf;
if(i>=strbuf.length())
{
return NBNC_END;
}
if(strbuf[i]==' ' ||strbuf[i]=='\t' ||strbuf[i]=='\n' )
{
return NBNC_BLANK;
}
if(i<strbuf.length()-1)
{
if((strbuf[i] == '/')&&(strbuf[i+1] == '*'))
{
i += 2;
return NBNC_COMMENT;
}
}
if(i<strbuf.length()-1)
{
if((strbuf[i] == '/')&&(strbuf[i+1] == '/'))
{
i += 2;
return NBNC_CPPCOMMENT;
}
}
return NBNC_CODE;
}
DWORD CNBNCPPCommentState::transfer(Capsule&capsuleData)
{
CNBNCCapsule &nbncdata =(CNBNCCapsule&)capsuleData;
int &i = nbncdata.m_ipos;
string& strbuf = nbncdata.m_strbuf;
if(i>=strbuf.length()-1)
{
return NBNC_END;
}
while((i<strbuf.length()-1)&&(strbuf[i] != '\n'))
{
++i;
}
if(i>=strbuf.length()-1)
{
return NBNC_END;
}
++i;
++nbncdata.m_dwCommentCounts;
return NBNC_ANALYSE;
}
DWORD CNBNCommentState::transfer(Capsule&capsuleData)
{
CNBNCCapsule &nbncdata =(CNBNCCapsule&)capsuleData;
int &i = nbncdata.m_ipos;
string& strbuf = nbncdata.m_strbuf;
if(i>=strbuf.length())
{
return NBNC_END;
}
while((i<strbuf.length()-1))
{
if((strbuf[i] == '*')&&(strbuf[i+1] == '/'))
{
break;
}
if('\n' == strbuf[i])
{
++nbncdata.m_dwCommentCounts;
++i;
while((i<strbuf.length()-1)&&((strbuf[i] == ' ')||(strbuf[i] == '\t')||(strbuf[i] == '\n')))
{
if('\n' == strbuf[i])
{
++nbncdata.m_dwBlankCounts;
}
++i;
}
continue;
}
++i;
}
i +=2;
if(i>=strbuf.length()-1)
{
return NBNC_END;
}
while((i<strbuf.length()-1)&&((strbuf[i] == ' ')||(strbuf[i] == '\t')||(strbuf[i] == '\n')))
{
if('\n' == strbuf[i])
{
++nbncdata.m_dwCommentCounts;
++i;
break;
}
++i;
}
return NBNC_ANALYSE;
};
DWORD CNBNCBlankState::transfer(Capsule&capsuleData)
{
CNBNCCapsule &nbncdata =(CNBNCCapsule&)capsuleData;
int &i = nbncdata.m_ipos;
string& strbuf = nbncdata.m_strbuf;
if(i>=strbuf.length())
{
return NBNC_END;
}
while(i<strbuf.length()&&(strbuf[i]==' ' ||strbuf[i]=='\t' ||strbuf[i]=='\n'))
{
if(strbuf[i]=='\n' )
{
++nbncdata.m_dwBlankCounts;
}
++i;
}
if(i>=strbuf.length())
{
return NBNC_END;
}
return NBNC_ANALYSE;
}
DWORD CNBNCCodeState::transfer(Capsule&capsuleData)
{
CNBNCCapsule &nbncdata =(CNBNCCapsule&)capsuleData;
int &i = nbncdata.m_ipos;
string& strbuf = nbncdata.m_strbuf;
if(i>=strbuf.length())
{
return NBNC_END;
}
vector<DWORD>vt;
while((i<strbuf.length()-1))
//&&(strbuf[i]!='/' &&strbuf[i+1]!='*')
//)
{
if(strbuf[i]=='/' &&strbuf[i+1]=='*')
{
vt.push_back(1);
}
if(strbuf[i]=='*' &&strbuf[i+1]=='/')
{
if(!vt.empty())
vt.pop_back();
}
if(strbuf[i]=='\n' )
{
++nbncdata.m_dwcodeCounts;
++i;
if(vt.empty())
{
return NBNC_ANALYSE;
}
return NBNC_COMMENT;
}
++i;
}
if(i>=strbuf.length()-1)
{
return NBNC_END;
}
return NBNC_ANALYSE;
}
DWORD CNBNCInitState::transfer(Capsule&capsuleData)
{
CNBNCCapsule &nbncdata =(CNBNCCapsule&)capsuleData;
int &i = nbncdata.m_ipos;
string& strbuf = nbncdata.m_strbuf;
if(strbuf.empty())
{
return NBNC_END;
}
return NBNC_ANALYSE;
}
DWORD CNBNCEndState::transfer(Capsule&capsuleData)
{
/*
CNBNCCapsule &nbncdata =(CNBNCCapsule&)capsuleData;
string& strbuf = nbncdata.m_strbuf;
int i = strbuf.length()-1;
while(i>0 && (strbuf[i]==' ' ||strbuf[i]=='\t' ||strbuf[i]=='\n' ))
{
if(strbuf[i]=='\n' )
{
++nbncdata.m_dwBlankCounts;
--i;
break;
}
--i;
}
if(strbuf[i]=='/' && strbuf[i-1]=='*' )
{
++nbncdata.m_dwCommentCounts;
}
else
{
++nbncdata.m_dwcodeCounts;
}
*/
return NBNC_ENDED;
}
bool needStat(const string&str)
{
int len = str.length();
if(len<4)
{
return false;
}
//cout<<str<<")"<<endl;
string strTmp = str.substr(len-2,2);
//cout<<strTmp<<")"<<endl;
if(strTmp==".h" || strTmp==".c")
{
return true;
}
strTmp = str.substr(len-4,4);
//cout<<strTmp<<")"<<endl;
if(strTmp == ".cpp" || strTmp==".sig"||strTmp==".hpp")
{
return true;
}
return false;
}
bool needRRTStat(const string&str)
{
int len = str.length();
string rtclass = ".rtclass";
if(len<rtclass.length())
{
return false;
}
if((str.find("Test")!=string::npos)
||(str.find("test")!=string::npos))
{
return false;
}
//cout<<str<<")"<<endl;
string strTmp = str.substr(len-rtclass.length(),rtclass.length());
//cout<<strTmp<<")"<<endl;
if(strTmp==rtclass)
{
return true;
}
/*
strTmp = str.substr(len-4,4);
//cout<<strTmp<<")"<<endl;
if(strTmp == ".cpp" || strTmp==".sig"||strTmp==".hpp")
{
return true;
}
*/
return false;
}
void statCodeLines(const string &strdir,map<string,codeStatS>&m_count,codeStatS&sumup)
{
vector<string>v_dirs;
map<string,vector<string> >v_tree;
getDirs2(v_dirs,v_tree,strdir);
//string strCmd = "ls ";
/*
for(int i=0;i<v_dirs.size();++i)
{
cout<<v_dirs[i]<<endl;
}
*/
CNBNCCapsule obj ;
codeStatS objCodeStat = {0};
map<string,vector<string> >::iterator it = v_tree.begin();
for(;it != v_tree.end(); ++it)
{
for(int i=0;i<it->second.size();++i)
{
codeStatS objCodeTmp = {0};
obj.Init(it->second[i].c_str());
obj.Action();
obj.GetCount(objCodeStat.m_dwCounts,objCodeStat.m_dwcodeCounts, objCodeStat.m_dwBlankCounts,objCodeStat.m_dwCommentCounts);
obj.GetCount(objCodeTmp.m_dwCounts,objCodeTmp.m_dwcodeCounts, objCodeTmp.m_dwBlankCounts,objCodeTmp.m_dwCommentCounts);
m_count[it->second[i]] = objCodeTmp;
}
}
sumup = objCodeStat;
/*
cout<<"___________________________________________________________________________"<<endl;
cout<<"__Sum______NBNACode_______Comment_______Blank___________"<<endl;
cout<<" "<<objCodeStat.m_dwCounts<<" "<<objCodeStat.m_dwcodeCounts<<" "<<objCodeStat.m_dwCommentCounts<<" "<<objCodeStat.m_dwBlankCounts<<" "<<endl;
double db1 = objCodeStat.m_dwCommentCounts;
double db2 = objCodeStat.m_dwCounts;
double dbtmp = db1/db2;
cout<<"comments percent = "<<dbtmp*100<<"%"<<endl;
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -