/// <summary> /// Adds a file information item to the file list view. /// </summary> /// <param name="info">The file information data object.</param> private static void AddFileListItem(Vista_Api.ListView lvFileList, LineCountInfo info) { FileInfo fileInfo = new FileInfo(info.FileName); ListViewItem lvi = new ListViewItem(); lvi.Text = fileInfo.Name; lvi.SubItems.Add(info.LineCountInfoDetails.TotalLines.ToString(CultureInfo.InvariantCulture)); lvi.SubItems.Add(info.LineCountInfoDetails.CodeLines.ToString(CultureInfo.InvariantCulture)); lvi.SubItems.Add(info.LineCountInfoDetails.CommentLines.ToString(CultureInfo.InvariantCulture)); lvi.SubItems.Add(info.FileType); lvi.SubItems.Add(info.SumMode); lvi.Tag = info; lvi.ImageIndex = info.IconIndex; //lvi.StateImageIndex = iconIndex; // if (tsmiGroupByType.Checked) // { // Vista_Api.ListViewGroup group = lvFileList.Groups["groupType" + info.FileType.Substring(1)]; // if (group == null) // { // group = new Vista_Api.ListViewGroup("groupType" + info.FileType.Substring(1), info.FileType.Substring(1).ToUpperInvariant() + " Files"); // lvFileList.Groups.Add(group); // } // // lvi.Group = group; // } // else if (tsmiGroupByProj.Checked) // { // Vista_Api.ListViewGroup group = lvFileList.Groups["groupProj" + info.ProjectSummary.ProjectName]; // if (group == null) // { // group = new Vista_Api.ListViewGroup("groupProj" + info.ProjectSummary.ProjectName, info.ProjectSummary.ProjectName + " Files"); // lvFileList.Groups.Add(group); // } // // lvi.Group = group; // } lvFileList.Items.Add(lvi); }
internal static void CountLinesDelphiStyle(LineCountInfo info) { using(StreamReader reader = new StreamReader(info.FileName)) { string line; bool multiLineComment = false; bool hasCode = false; bool hasComments = false; char commentChar = char.MinValue; while ((line = reader.ReadLine()) != null) { ParseDelphiLine(line, ref commentChar, ref multiLineComment, ref hasCode, ref hasComments); if (hasComments) { info.LineCountInfoDetails.Add("normcmtlines", 1); } if (hasCode) { info.LineCountInfoDetails.Add("codelines", 1); } if (!hasCode && !hasComments) { info.LineCountInfoDetails.Add("blanklines", 1); } info.LineCountInfoDetails.Add("totallines", 1); } reader.Close(); } info.SumMode = "Delphi-Style"; }
/// <summary> /// Count each line in an xml source file, scanning /// for comments, code, and blank lines. /// </summary> /// <param name="info">The file information data to use.</param> /// <remarks>This algorithm is based on one created by Oz Solomon, /// for his PLC line counter add-in for Visual Studio 2002/2003.</remarks> internal static void CountLinesXMLStyle(LineCountInfo info) { try { StreamReader reader = new StreamReader(info.FileName); string line; bool multiLineComment = false; bool hasCode = false; bool hasComments = false; while ((line = reader.ReadLine()) != null) { ParseXMLLine(line, ref multiLineComment, ref hasCode, ref hasComments); if (hasComments) { info.LineCountInfoDetails.Add("normcmtlines", 1); } if (hasCode) { info.LineCountInfoDetails.Add("codelines", 1); } if (!hasCode && !hasComments) { info.LineCountInfoDetails.Add("blanklines", 1); } info.LineCountInfoDetails.Add("totallines", 1); } reader.Close(); info.SumMode = "XML"; } catch (Exception ex) { Lextm.Windows.Forms.MessageBoxFactory.Fatal(null, ex); throw; } }
/// <summary> /// Count each line in a text file, logging /// blank lines. /// </summary> /// <param name="info">The file information data to use.</param> internal static void CountLinesGeneric(LineCountInfo info) { StreamReader sr = new StreamReader(info.FileName); string line; while ((line = sr.ReadLine()) != null) { info.LineCountInfoDetails.Add("TotalLines", 1); if (string.IsNullOrEmpty(line.Trim())) { info.LineCountInfoDetails.Add("BlankLines", 1); } info.SumMode = "Generic"; } sr.Close(); }