937 Stimmen

Wie zählt man die Codezeilen in einer Visual Studio-Lösung?

Ist es möglich, die Anzahl der Codezeilen in einer gesamten Lösung zu ermitteln? Ich habe gehört, dass MZ-Tools aber gibt es ein Open-Source-Äquivalent?

975voto

Greg D Punkte 41958

を発見しました。 powershell nützlich für diese. Ich halte LoC ohnehin für eine ziemlich schwammige Metrik, daher glaube ich nicht, dass etwas Formaleres erforderlich sein sollte.

Aus dem Verzeichnis einer kleineren Lösung:

PS C:\Path> (gci -include *.cs,*.xaml -recurse | select-string .).Count
8396
PS C:\Path>

Dadurch werden die nicht leeren Zeilen in allen .cs und .xaml-Dateien der Lösung gezählt. Für ein größeres Projekt habe ich einfach eine andere Erweiterungsliste verwendet:

PS C:\Other> (gci -include *.cs,*.cpp,*.h,*.idl,*.asmx -recurse | select-string .).Count
909402
PS C:\Other>

Warum eine ganze Anwendung verwenden, wenn es auch mit einer einzigen Befehlszeile geht :)

741voto

Linora Punkte 9633

Visual Studio verfügt über integrierte Code-Metriken , einschließlich der Codezeilen:

Analysieren Berechnen von Code-Metriken

392voto

NicolasKittsteiner Punkte 4170

Utilicé Ctrl + Shift + F . Als nächstes setzen Sie eine \n in das Suchfeld ein und aktivieren Sie das Feld für reguläre Ausdrücke. In den Suchergebnissen werden dann am Ende des Bildschirms die Anzahl der durchsuchten Dateien und der gefundenen Codezeilen angezeigt.

Sie können verwenden [^\n\s]\r\n um leere Zeilen und solche, die nur aus Leerzeichen bestehen, zu überspringen (Dank an Zach in den Kommentaren).

221voto

Ali Parr Punkte 4677

Ein Open-Source-Zeilenzähler für VS2005, 2003 und 2002 ist hier verfügbar:

http://www.wndtabs.com/

Es gibt auch eine Diskussion über die Erstellung einer Zeile Zählen VS Addin, komplett mit Code auf Codeproject, hier

http://www.codeproject.com/KB/macros/LineCounterAddin.aspx

Auch Slick Edit Gadgets hat einen schönen Zeilenzähler, hier:

http://www.slickedit.com/products/slickedit

und Microsoft Visual Studio Team System 2008 enthält einen guten Zeilenzähler.

Aber denken Sie daran:

Die Messung des Fortschritts bei der Programmierung anhand von Codezeilen ist wie die Messung des Fortschritts beim Flugzeugbau anhand des Gewichts. Bill Gates

96voto

Howard Renollet Punkte 4445

Hier ist ein Update für Visual Studio 2012/2013/2015 für diejenigen, die die Option "Suchen" verwenden möchten (was ich für die einfachste halte): Diese RegEx findet alle nicht leeren Zeilen mit mehreren Ausnahmen, um möglichst genaue Ergebnisse zu erzielen.

Geben Sie das folgende RegEx in das Feld "Suchen" ein. Achten Sie darauf, dass Sie die Option "Reguläre Ausdrücke verwenden" auswählen. Ändern Sie die Suchoption je nach Bedarf entweder auf "Aktuelles Projekt" oder "Gesamte Lösung". Wählen Sie nun "Alle suchen". Am unteren Rand des Ergebnisse finden sehen Sie "Matching Lines", die Anzahl der Codezeilen.


^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$

Diese RegEx schließt die folgenden Punkte aus:


Kommentare

// This is a comment

Mehrzeilige Kommentare (vorausgesetzt, die Zeilen werden korrekt mit einem * vor jeder Zeile kommentiert)

/* I am a
* multi-line
* comment */

XML für Intellisense

/// <summary>
/// I'm a class description for Intellisense
/// </summary>

HTML-Kommentare:

<!-- I am a HTML Comment -->

Aussagen verwenden:

using System;
using System.Web;

Geschweifte Klammern öffnen:

{

Geschweifte Klammern schließen:

}

Hinweis: Alles, was zwischen den geschweiften Klammern steht, wird in die Suche einbezogen, aber in diesem Beispiel werden nur 4 Codezeilen gezählt, anstatt der 18 tatsächlichen nicht leeren Zeilen:

        public class Test
        {
            /// <summary>
            /// Do Stuff
            /// </summary>
            public Test()
            {
                TestMe();
            }
            public void TestMe()
            {
                //Do Stuff Here
                /* And
                 * Do
                 * Stuff
                 * Here */
            }
        }

Ich habe diese Methode entwickelt, um eine viel genauere LOC-Zählung zu erhalten als einige frühere Optionen, und dachte, ich würde sie mit anderen teilen. Die Chefs lieben die LOC-Zählung, also bleibe ich noch eine Weile dabei. Ich hoffe, dass jemand anderes dies hilfreich finden kann, lassen Sie mich wissen, wenn Sie Fragen haben oder Hilfe benötigen, damit es funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X