List Built in Commands used by .m function

9 vues (au cours des 30 derniers jours)
Scott
Scott le 24 Fév 2015
Commenté : Scott le 24 Fév 2015
I'd like to analyse a set of .m functions that have been written to see which built-in commands have been used by the authors.
The results of this analysis will be to create a coding standard which specifies which built-in commands may be used and which are prohibited.
The "Dependency Report" shows me which functions I've used but not the built-in commands. Anyone know if this is possible?
Thanks.

Réponse acceptée

Guillaume
Guillaume le 24 Fév 2015
One possible way, use the undocumented mtree function to get the parse tree of the code, identify the function calls in that tree (the hard bit!), then use exist to identify the built in ones
For example (works on R2014b):
parsetree = mtree('array2table.m', '-file');
treeids = parsetree.mtfind('Kind', 'ID');
idstrings = unique(treeids.strings);
isbuiltin = cellfun(@(id) exist(id, 'builtin') == 5, idstrings);
nonbuiltinid = idstrings(~isbuiltin)
builtinid = idstrings(isbuiltin)
  3 commentaires
Guillaume
Guillaume le 24 Fév 2015
Most likely, but you'll have to work it out for yourself. Have a look at the output of
parsetree.kinds
Once you've got the parse tree from mtree. Possibly, some other function / property of the tree can also be used. As I said, it's not documented and I know very little about it.
Also note that mtree is an experimental feature, so this may not work in future version. Saying that, it's been part of matlab for a while.
Scott
Scott le 24 Fév 2015
Thanks for your help. I've got something that will meet my needs.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by