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?
Antworten
Zu viele Anzeigen?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}
Anderes einfaches Tool für VS2008 (Open Source): http://www.accendo.sk/Download/SourceStat.zip
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".
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