checking a matlab function for nested functions
Ältere Kommentare anzeigen
how to find programatically if a matlab function m file contains nested function.
fileData = mlintmex('-calls',which(fileName));
fileData = regexp(fileData,'[NS](\d+) (\d+) \d+ (\w+)\n','tokens');
gives the list of function within fileName. My question is how to distinguish local functions from nested functions?
Best regards
7 Kommentare
Rik
am 5 Okt. 2019
I don't know how to best integrate this in your work flow, but the option you could resort to is to parse the function headers yourself, and checking where a new function starts before the previous function is closed with an end keyword.
Stephen23
am 6 Okt. 2019
"but the option you could resort to is to parse the function headers yourself, and checking where a new function starts..."
Probably not too difficult.
"...before the previous function is closed with an end keyword"
Considering comments, strings, operators, etc., that will not be trivial at all.
Perhaps mtree can help. Note that such meta-programming will be inherently slow and complex.
Alain Barraud
am 8 Okt. 2019
Steven Lord
am 8 Okt. 2019
I'm curious what you're planning to do with this information. Why do you need to perform this type of analysis?
Alain Barraud
am 8 Okt. 2019
Alain Barraud
am 10 Okt. 2019
Image Analyst
am 12 Okt. 2019
You could easily find all function definitions by opening the m-file as a text file, using fgetl() to get a line, then using contains() or startsWith() to see if the line contains a function definition
fid = fopen(mFileName, 'rt');
textLine = fgetl(fid);
while ischar(textLine)
if startsWith(strtrim(textLine), 'function ')
% It's a function definition...
end
textLine = fgetl(fid); % Read next line
end
fclose(fid);
Antworten (1)
Image Analyst
am 8 Okt. 2019
0 Stimmen
See the attached function to list all the dependent m-files.
1 Kommentar
Alain Barraud
am 9 Okt. 2019
Kategorien
Mehr zu Scripts finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!