自动检测代码的一个小工具...
是这样的,上个礼拜在一个项目的同行评审中,在代码规范这一块当中,有个很小的问题、但也是比较严重的一个问题。新近的员工,我自己也是,以前没有编码经验,写代码时总是不能很好地达到代码规范所要求的那样,比如在每个运算符(如+,-,=,...)的左右两边都要留个空格...经常自己写好后都很自责,但自责过后呢,就赶紧一个个地改过去,心里不好受不说,那个累啊,简直比写文档还烦...最重要的是,给项目经理造成了不好的印象ing,所以,我写了一个小程序,用来自动检测**以上所说的不好习惯,并且自动修改...算是自己毕业以来第二大的一个小作为吧(之前还有一个大一点点的作为嘞,下篇文章说吧)...至于程序和代码嘛,我会与大家一起来完善的...没有用到什么匹配,几乎是c语言的翻版,语法分析嘛,也说不上...呵呵hoho ..对了,还可以整个文件夹检测...以下是部分代码...
高手们就不要拍我砖啦...给新人我一个鼓励啊~:)
for(int i = 0; i < arrLine.Length; i ++ )//追行遍历
{
if(arrLine[i].Trim().StartsWith("///") || arrLine[i].Trim().StartsWith("//") || arrLine[i].Trim().StartsWith("/*")) // 忽略以"///" , "//" , "/*"开头的行
{
continue;
}
else
{
for(int j = 0; j < arrLine[i].Length; j ++ )
{
if(iFlags == 0 //在引号外面
&& arrLine[i][j] == '/' && arrLine[i][j + 1] == '/')//同时当前指向/,下一个也是/的情况,就是到注释了...
{
break;//跳出该行,开始新一行的检测
}
if(arrLine[i][j] == ';' && (arrLine[i][j + 1] == '/' || arrLine[i][j + 1] == '\r'))//遇到“;”,且后面一个是//或者是\r(其实为\r\n,到换行位置)
{
break;//跳出该行,开始新一行的检测
}
if(arrLine[i][j] == '"' && arrLine[i][j - 1] != '\\')//遇到一个引号,同时它的前面一个不是"\"
{
iFlags++;//每遇到一个引号,iFlags就加一
}
if(arrLine[i][j] == '\'' && arrLine[i][j - 1] != '\\')//遇到一个单引号,同时它的前面一个不是"\"
{
iFlag++;//每遇到一个单引号,iFlag就加一
}
switch(iFlags)
{
case 0 ://引号外面
{
switch(iFlag)//有单引号的时候...
{
case 0 :
if(IsSignCode(arrLine[i][j])//belongs to ArrSign
&& j < arrLine[i].Length - 1)//and don't reach the last one
{
// arrContent[i] = "●" + arrContent[i];
arrLine[i] = HaveBlankAndChange(arrLine[i], ref j, i + 1);
}
break;
case 1://iFlag是1,在单引号内
continue;
case 2 ://第二个单引号
iFlag = 0;//将iFlag置0
break;
}
break;
}
case 1 ://iFlags是1,在引号内
continue;
case 2 ://第二个引号
iFlags = 0;//将iFlags置0
break;
}//switch
}//for
}//else
}//for
lErrCount.Text = iErrorCount + " 个";//显示错误个数
for(int l = 1; l<=listError.Count;l++)
{
lbError.Items.Add("[" + l + "]" + listError[l - 1]);
}
本文引用通告地址: http://blog.csdn.net/lynn0821/services/trackbacks/469672.aspx
[点击此处收藏本文]