Frage

Wenn ich meinen Code durch die Version 252 checker binär laufen, gibt es keine Analysefehler. Allerdings, wenn ich die neueste 253-Checker zu verwenden, ändern, gibt es eine ganze Reihe von Fehlern, von denen alle keinen Sinn machen. Zum Beispiel, hier ist ein Bild von einem Fehler, dass es in meinem Safari-Browser nach dem Scan-Build-Skript zeigt abgeschlossen ist:

Clang statische Analysefehler

Das ist ein ziemlich häufiger Fehler, dass zeigt im Fehler up auflistet. Wie Sie sehen können, hat die Methode Namen Kopie am Ende, aber es immer noch als falsch benannt berichtet.

Hier ist die Aufschlüsselung der Fehler, dass ich jetzt immer mit checker Version 253:

Bug Summary

Results in this analysis run are based on analyzer build checker-253.

Bug Type    Quantity
All Bugs    83  

Dead code   
Unreachable code    17  

Memory (Core Foundation/Objective-C)    
Bad release 19  
Leak of returned object 23  
Object sent -autorelease too many times 24

Die Autofreigabe Fehler scheinen die Tatsache zusammen, dass der Analysator nicht in der Lage ist zu sehen, dass die Copy Methoden tatsächlich korrekt benannt, und ich versuchte, ein Beispiel für nicht erreichbar Code zu suchen, aber ich konnte nicht wirklich irgendwelche Muster finden oder Erklärungen dieser Fehler, da die Fehler waren alle Codezeilen innerhalb einfachen if-Anweisungen. Hier ist ein Beispiel:

Noch ein weiterer Clang Analysefehler

Ich nehme an, dass dies könnte einige Fehler, die in der neuesten Version von checker eingeführt wurden, die diese als Fehler angezeigt verursacht. Gibt es etwas anderes (eine Art von Build-Einstellung oder ein Problem mit dem Scan-Build-Skript), dass ich hier fehlt könnte?

War es hilfreich?

Lösung

Als erstes Methodennamen sollten mit Kleinbuchstaben, nicht in Großbuchstaben (mit Ausnahme von Abkürzungen wie URL) beginnen. Es kann sein, dass der statische Analysator über die Groß wird Auslösung „Get“.

Als nächstes wird sogar mit einem Klein „get“, das Verfahren nicht Konvention folgen.

in der Dokumentation zitieren:

Mit „get“ nur für Methoden, die Rückkehr indirekt Objekte und Werte. Du sollte dieses Formular Methoden verwenden nur wenn mehrere Elemente sein müssen zurückgegeben.

Somit wird der Analysator ein Problem richtig identifiziert.

Ich würde vorschlagen, die Richtlinien einzuhalten und so etwas wie:

+ (NSArray *) modifiedOrNewPeople: (FMDatabase *) aDatabase;

, die eine Autoreleased Array freigeben würde. Wenn es aus irgendeinem Grund ist, können Sie nicht ein Autoreleased Objekt zurück, bitte Kommentar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top