2016-07-20 4 views
1

Ich verwende ein Skript, das ziemlich groß ist. Im Ausgabebild bekomme ich ans = 10.Suchen Sie eine nicht unterdrückte Zeile in einem großen Skript

Das Problem ist, dass der Code sehr groß ist und ich nicht point kann, wo diese Ausgabe herkommt.

Gibt es irgendwelche Tipps, um den Ursprung dieser Ausgabe in der MATLAB-Umgebung zu finden, da ich es vorziehe, keine zufällige Ausgabe auf dem Bildschirm zu haben?

+5

Der Editor diese Zeile markieren wird und sagen Sie „Terminate-Anweisung mit Semikolon Ausgabe zu unterdrücken (in einem Skript)“ –

+1

['Prüfcode'] (http://www.mathworks.com/help/matlab/ref/checkcode.html) – excaza

Antwort

6

Im Falle einer einzigen Skript-Datei können Sie programmatisch mlint rufen alle Warnungen in Form eines struct zurückzukehren:

L = mlint('my_filename'); % No need for .m at the end 

Inspizieren die Struktur könnten Sie folgendes sehen:

Variable editor

Diese Struktur hat ein Feld mit dem Namen 'message', das verschiedene Probleme enthält, unter denen ist, was wir wollen - . Zu diesem Zeitpunkt können Sie

find(strcmp({L.message},... % output is not suppressed on purpose 
    'Terminate statement with semicolon to suppress output (in functions).')) 

Dann überprüfen Sie die Zeilennummern, die gedruckt werden.

Alternativ, wenn Sie den Variable Editor überspringen wollen, oder wollen einen ganzen Ordner von .m Dateien überprüfen, können Sie mlintrpt laufen (im Fall eines Ordners) oder mlintrpt('plotWithoutOutliers') (im Fall einer einzelnen Datei) und erhalten einen Bericht in der folgenden Form:

mlintrpt output

4

enter image description here

Als Luis sagte: suchen Sie nach dem mlint Fehler. Im Code wird dies als orange schattiert dargestellt = und orange wackeln darunter; In der Bildlaufleiste auf der rechten Seite wird eine orangefarbene Linie angezeigt, über die Sie den Mauszeiger halten können, um zu sehen, was die Warnung ist. Klicken Sie auf, um zur Warnung zu gelangen.

Zusätzlich habe ich die roten Fehler zur Vervollständigung eingefügt. Dies führt dazu, dass Ihr Code nicht ausgeführt werden kann. Gleiches hier, rote Wackel + rote Linie rechts.

Zuletzt wird das Quadrat oben rechts, durch den Pfeil, entweder grün (keine Probleme), orange (Warnungen, aber der Code wird normalerweise laufen können) oder rot (Code wird nicht in der Lage sein Lauf).

0

Gebrauchte Dev-ils Antwort eine einfache Funktion zu erstellen, die Sie die Codezeilen erzählen, die nicht unterdrückt werden. Auf diese Weise können nicht die zurückgegebenen Zeilen in der Struktur L. Beispiel untersuchen müssen: lines = UnsuppressedLines('isEven.m')

function [lines] = UnsuppressedLines(matlabScript) 

    l = mlint(matlabScript); 
    unsuppressedInstances = find(strcmp({l.message},'Terminate statement with semicolon to suppress output (in functions).')) 
    if isempty(unsuppressedInstances) 
     fprintf('No unsuppressed lines in script') 
     lines = []; 
    else 
     lines = {l.line}; 
     lines = lines(unsuppressedInstances); 
    end 
end 
Verwandte Themen