Come posso generare un elenco di dipendenze di funzioni in MATLAB?
-
01-07-2019 - |
Domanda
Per distribuire una funzione che ho scritto che dipende da altre funzioni che ho scritto che hanno le proprie dipendenze e così via senza distribuire ogni m-file che abbia mai scritto, devo capire qual è l'elenco completo delle dipendenze per un dato m-file.Esiste un modo integrato/scaricabile gratuitamente per farlo?
Nello specifico, sono interessato alle soluzioni per MATLAB 7.4.0 (R2007a), ma se esiste un modo diverso per farlo nelle versioni precedenti, aggiungilo sicuramente qui.
Soluzione
Per le versioni più recenti di Matlab (ad esempio 2007 o 2008) è possibile utilizzare le funzioni integrate:
- mlint
- rapporto sulla dipendenza e
- rapporto di copertura
Un'altra opzione è utilizzare il profiler di Matlab.Il comando è profile, può essere utilizzato anche per tenere traccia delle dipendenze.Per utilizzare il profilo, potresti farlo
>> profile on % turn profiling on
>> foo; % entry point to your matlab function or script
>> profile off % turn profiling off
>> profview % view the report
Se il profiler non è disponibile, forse lo sono le due funzioni seguenti (per versioni precedenti a MATLAB 2015a):
- depfun
- dipdir
Per esempio,
>> deps = depfun('foo');
dà una struttura, deps, che contiene tutte le dipendenze di foo.m.
Dalle risposte 2, E 3, utilizzano le versioni più recenti di MATLAB (post 2015a). matlab.codetools.requiredFilesAndProducts
Invece.
Vedi le risposte
MODIFICARE:
Avvertenze grazie ai commenti di @Mike Katz
Ricorda che il profiler ti mostrerà solo file che sono stati effettivamente utilizzati in quelle corse, quindi se non si passa attraverso ogni ramo, potresti avere ulteriori dipendenze.Il rapporto di dipendenza è un buon strumento, ma risolve solo le dipendenze statiche dal percorso e solo per i file in un'unica directory.
Depfun è più affidabile ma ti dà ogni cosa possibile a cui può pensare e manca ancora di carichi e valutazioni.
Altri suggerimenti
Per MATLAB 2015a
e più tardi dovresti preferibilmente guardare matlab.codetools.requiredFilesAndProducts
O doc matlab.codetools.requiredFilesAndProducts
Perché depfun
è contrassegnato per essere rimosso in una versione futura.