checking a matlab function for nested functions
Mostra commenti meno recenti
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 Commenti
Rik
il 5 Ott 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
il 6 Ott 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
il 8 Ott 2019
Steven Lord
il 8 Ott 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
il 8 Ott 2019
Alain Barraud
il 10 Ott 2019
Image Analyst
il 12 Ott 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);
Risposte (1)
Image Analyst
il 8 Ott 2019
0 voti
See the attached function to list all the dependent m-files.
1 Commento
Alain Barraud
il 9 Ott 2019
Categorie
Scopri di più su Scripts 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!