Does checkcode return the status of the "Message indicator box", i.e. red/orange/green ?

I search for an automatic way to find out if a file has a syntax error. That is, to find the same piece of information that the Code Analyzer indicates with red in the "Message indicator box" of the editor.
I took for granted that checkcode provides the information corresponding to the colors of the "Message indicator box".
Doc (R2012a) says:
[...] checkcode('filename') displays messages, sometimes referred to as
Code Analyzer messages, [...]
thus, I tried
info = checkcode( filespec );
and
info = checkcode( filespec, '-id' );
However, I cannot find the piece of information I need. isempty(info) equal to true indicates green, but, I cannot figure out how to find an indicator for red. (Not empty indicates red or orange.)
One way would be to have a list of the ID, which stands for errors.

5 Commenti

I am not sure if I understand what you are asking? Are you asking it to analyze a file that definitely has syntax errors, but are finding that it returns emptyness ?
I've tried to make the question clearer.
Sounds like he's trying to make his own mlint functionality. Not sure why since this functionality already exists in MATLAB.
It sounds like he'd like to be able to test whether a file has syntax errors before running it - sounds fair to me...
Yes, I want to check for syntax errors as the first step when running a test suite.

Accedi per commentare.

 Risposta accettata

I must admit that I have it on my articles TODO list for quite some time...
Here's something to get you started: http://www.mathworks.com/matlabcentral/newsreader/view_thread/255839#755939 (continue reading down the thread)
Related: http://www.mathworks.com/matlabcentral/newsreader/view_thread/145245 (oddly enough, you were part of that thread, Per...)
In summary, you could simply do:
errMsgs = mlint('-m2',srcFileNames); % m2 = errors only
m1Msgs = mlint('-m1',srcFileNames); % m1 = errors and severe warnings only
allMsgs = mlint('-m0',srcFileNames); % m0 = all errors and warnings
Note that mlint returns the data in struct format, while mlintmex returns a string that you must parse.
Yair Altman

Più risposte (1)

It looks like you could use try/catch and do an isempty check on the ME.stack:
%checkcodetest.m
X = [pi
for ii = 1:3
disp('hi')
end
And:
try;
checkcodetest;
catch ME;
end
Now to test:
isempty(ME.stack)

Categorie

Scopri di più su Background and Parallel Processing in Centro assistenza e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by