codecharter analyze braucht einen funktionierenden MSBuild-Workspace, um
Ihre .sln, .slnx oder .csproj zu öffnen, bevor auch nur ein Typ
gelesen werden kann. Geht dieser Schritt schief, zeigt sich das auf zwei
Arten: als harter Fehler mit Exit-Code 3, oder leiser dadurch, dass der
Lauf "erfolgreich" durchläuft, aber weniger Code analysiert hat als er
sollte.
Exit-Code 3: der Lauf bricht ab
Analysis failed: <exception message>
Exit-Code 3 bedeutet, dass die Solution oder ein Projekt überhaupt nicht
geladen werden konnte: der Lauf erreicht die Regelauswertung gar nicht
erst. Der häufigste Auslöser ist ein Pfad, der nicht existiert: Wenn Sie
direkt auf eine bestimmte .sln/.csproj-Datei zeigen, die es nicht gibt,
wirft der Workspace beim Öffnen einen Fehler.
Das unterscheidet sich davon, ein Verzeichnis (oder nichts) anzugeben, das
gar kein Projekt enthält: codecharter analyze durchsucht das Verzeichnis
zunächst nach einer .sln, .slnx oder .csproj, und wenn es keine
findet, beendet es sich mit Code 2 ("No .sln, .slnx, or .csproj file was
found under ..."), noch bevor überhaupt versucht wird, etwas zu laden.
Exit-Code 3 betrifft speziell ein Ziel, das gefunden, aber nicht geöffnet
werden konnte.
Die vollständige Tabelle finden Sie unter Exit-Codes, die Zusammenfassung des Befehls unter codecharter analyze.
Der leisere Fehler: weniger Methoden als erwartet
Ein Projekt kann auch dann erfolgreich über den Design-Time-Build öffnen,
wenn sein eigenes Package-Restore fehlt oder veraltet ist. CodeCharter
behandelt das nicht als Ladefehler: Die Analyse läuft weiter, und der
Exit-Code richtet sich weiterhin nach den Findings. Aber jede aus diesem
Projekt extrahierte Tatsache kann falsch sein, weil dessen Compilation die
eigenen Referenzen nicht auflösen konnte. Insbesondere die Klassifizierung
von Interface-Implementierungen hängt davon ab, den Interface-Typ
aufzulösen: Eine Methode, die IEquatable<T> oder ein eigenes Interface
implementiert, kann übersehen werden, was wiederum jede darauf aufbauende
Regel betrifft.
Symptome, auf die Sie achten sollten:
codecharter analyze --verbosemeldet spürbar weniger Typen oder Methoden, als Sie für die Größe der Solution erwarten.- Findings, die von Interface-Implementierung abhängen (oder davon, dass ein Typ überhaupt ein bestimmtes Interface implementiert), sehen falsch aus oder fehlen ganz.
codecharter analyze --progressgibt eine Zeile aus, die das betroffene Projekt benennt und darauf hinweist, dass dessen NuGet-Restore fehlen oder veraltet sein könnte.
Da sich dabei am Exit-Code nichts ändert, zeigt sich dieser Fehlermodus nur
in der Ausgabe des Laufs selbst: Prüfen Sie --verbose (und --progress
für die Details je Projekt) immer dann, wenn die Anzahl der Findings
verdächtig niedrig wirkt.
Prüfschritte in der Reihenfolge
Den Pfad bestätigen. Geben Sie den Pfad zur
.sln,.slnxoder.csproj-Datei explizit an, statt sich auf die Verzeichnis-Erkennung zu verlassen:codecharter analyze path/to/YourSolution.slnRestore, dann die ganze Solution bauen. Ein unvollständiges oder veraltetes Restore ist die häufigste Ursache für den leiseren Fehler oben. Führen Sie vor der Analyse ein vollständiges Restore und einen Build durch, genau wie CI es bei einem sauberen Checkout tut:
dotnet restore dotnet build codecharter analyze path/to/YourSolution.slnAnalysieren Sie die
.sln, nicht eine einzelne.csproj, wenn die Solution mehrere Projekte hat: So durchlaufen alle Projekte denselben Restore- und Build-Durchgang, bevor die Analyse startet.Das .NET SDK bestätigen. CodeCharter öffnet den Workspace über das MSBuild-Tooling des .NET SDK. Ist kein SDK installiert, oder fehlt das SDK/Workload für das Ziel-Framework der Solution, kann der Workspace gar nicht erst erzeugt werden. Prüfen Sie, was installiert ist:
dotnet --info dotnet --list-sdksDie
--verbose- und--progress-Ausgabe lesen.--verbosemeldet das verwendete Rules-Verzeichnis und die Gesamtzahl der gefundenen Typen und Methoden; eine Zahl deutlich unter Ihrer Erwartung deutet auf den leiseren Fehler oben hin. Mit--progresssehen Sie zusätzlich eine Zeile je analysiertem Projekt, einschließlich eines Hinweises, wenn das Restore eines Projekts kaputt aussieht:codecharter analyze path/to/YourSolution.sln --verbose --progress 2> codecharter.log
Schlägt der Lauf nach diesen Prüfungen immer noch fehl, sammeln Sie das Log und schicken Sie es uns, siehe Logs sammeln.
Weiterführende Links
- Exit-Codes: die vollständige Exit-Code-Referenz.
- codecharter analyze: Befehlsreferenz, einschließlich der eigenen Exit-Code-Zusammenfassung.
- Unterschiedliche Findings lokal vs. in CI: wenn beide Umgebungen dieselbe Solution unterschiedlich laden.
- Logs sammeln: was Sie beim Schreiben an uns beilegen sollten.