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?

4voto

anakic Punkte 2459

Natürlich sind Tools einfacher, aber ich fühle mich gut, wenn ich das in Powershell mache:)

Dieses Skript findet alle .csproj-Verweise in der .sln-Datei und sucht dann in jeder csproj-Datei die Dateien, die für die Kompilierung enthalten sind. Für jede Datei, die für die Kompilierung eingeschlossen ist, wird ein Objekt mit Eigenschaften erstellt: Projektmappe, Projekt, Datei, Zeilen. Es speichert alle diese Objekte in einer Liste und gruppiert und projiziert die Daten dann nach Bedarf.

#path to the solution file e.g. "D:\Code\Test.sln"
$slnFile = "D:\Code\Test.sln"

#results
$results = @()

#iterate through .csproj references in solution file
foreach($projLines in get-item $slnFile | Get-Content | Select-String '".*csproj')
{
    $projFile = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($slnFile), [regex]::Match($projLines,'[^"]*csproj').Value)
    $projFolder = [System.IO.Path]::GetDirectoryName($projFile)

    #from csproj file: get lines for files to compile <Compile Include="..."/>
    $includeLines = get-item $projFile | Get-Content | Select-String '<Compile Include'

    #count of all files lines in project
    $linesInProject = 0;
    foreach($fileLine in $includeLines)
    {
        $includedFilePath = [System.IO.Path]::Combine($projFolder, [Regex]::Match($fileLine, '"(?<file>.*)"').Groups["file"].Value)
        $lineCountInFile = (Get-Content $includedFilePath).Count      
        $results+=New-Object PSObject -Property @{ Solution=$slnFile ;Project=$projFile; File=$includedFilePath; Lines=$lineCountInFile }
    }
}

#filter out any files we dont need
$results = $results | ?{!($_.File -match "Designer")}

#print out:

"---------------lines per solution--------------"
$results | group Solution | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum}
"---------------lines per peoject--------------"
$results | group Project | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum}

4voto

LiborBes Punkte 71

Anderes einfaches Tool für VS2008 (Open Source): http://www.accendo.sk/Download/SourceStat.zip

3voto

sunil Punkte 39

Verwenden Sie die Option Menü-> Analyse - > Code-Metriken berechnen in Visual Studio 2010 Ultimate.

3voto

Travis Punkte 1025

Sie können die Visual Studio Code Metrics PowerTool 10.0 . Dabei handelt es sich um ein Befehlszeilendienstprogramm, das für Sie einige Metriken für verwalteten Code berechnet (einschließlich Codezeilen). Sie können ein VS 2010-Plugin erhalten, das bringt das Tool in Visual Studio und macht es so schnell wie die Auswahl des Menüpunkts und das Klicken auf "Lösung analysieren".

2voto

fastyond Punkte 21

Stimme mit Ali Parr überein. Das Addin WndTab Line Counter ist ein solches Werkzeug. http://www.codeproject.com/KB/macros/linecount.aspx

Es ist auch eine gute Idee, auf einer Download-Site nach einem entsprechenden Tool zu suchen. http://www.cnet.com/1770-5_1-0.html?query=code+zähler&tag=srch

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