checking a matlab function for nested functions
古いコメントを表示
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 件のコメント
Rik
2019 年 10 月 5 日
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
2019 年 10 月 6 日
"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
2019 年 10 月 8 日
Steven Lord
2019 年 10 月 8 日
I'm curious what you're planning to do with this information. Why do you need to perform this type of analysis?
Alain Barraud
2019 年 10 月 8 日
Alain Barraud
2019 年 10 月 10 日
Image Analyst
2019 年 10 月 12 日
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);
回答 (1 件)
カテゴリ
ヘルプ センター および File Exchange で Scripts についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!