¿Cómo puedo generar una lista de dependencias de funciones en MATLAB?
-
01-07-2019 - |
Pregunta
Para distribuir una función que escribí y que depende de otras funciones que escribí que tienen sus propias dependencias, etc., sin distribuir cada archivo m que escribí, necesito averiguar cuál es la lista completa de dependencias. para un archivo m determinado.¿Existe alguna forma integrada o descargable gratuitamente de hacer esto?
Específicamente estoy interesado en soluciones para MATLAB 7.4.0 (R2007a), pero si hay una forma diferente de hacerlo en versiones anteriores, agréguelas aquí.
Solución
Para versiones más recientes de Matlab (por ejemplo, 2007 o 2008), puede utilizar las funciones integradas:
- mlint
- informe de dependencia y
- informe de cobertura
Otra opción es utilizar el generador de perfiles de Matlab.El comando es perfil, también se puede utilizar para rastrear dependencias.Para usar el perfil, puedes hacer
>> profile on % turn profiling on
>> foo; % entry point to your matlab function or script
>> profile off % turn profiling off
>> profview % view the report
Si el generador de perfiles no está disponible, entonces quizás las dos funciones siguientes lo estén (para versiones anteriores a MATLAB 2015a):
- depfun
- depdir
Por ejemplo,
>> deps = depfun('foo');
proporciona una estructura, deps, que contiene todas las dependencias de foo.m.
De respuestas 2, y 3, se utilizan versiones más recientes de MATLAB (posteriores a 2015a) matlab.codetools.requiredFilesAndProducts
en cambio.
Ver respuestas
EDITAR:
Advertencias gracias a los comentarios de @Mike Katz
Recuerde que el Profiler solo le mostrará archivos que realmente se usaron en esas ejecuciones, por lo que si no pasa por todas las ramas, puede tener dependencias adicionales.El informe de dependencia es una buena herramienta, pero solo resuelve dependencias estáticas en la ruta y solo para los archivos en un solo directorio.
Depfun es más confiable, pero le da todas las cosas posibles que se le ocurra, y aún se pierde las cargas y las evaluaciones.
Otros consejos
Para MATLAB 2015a
y después deberías mirar preferentemente matlab.codetools.requiredFilesAndProducts
o doc matlab.codetools.requiredFilesAndProducts
porque depfun
está marcado para ser eliminado en una versión futura.