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 );
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.
I did check http://undocumentedmatlab.com/
No products are associated with this question.
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.
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
try; checkcodetest; catch ME; end
Now to test: