Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Creación y edición de proyectos mediante programación

En este ejemplo se muestra cómo usar Project API para crear un nuevo proyecto y automatizar las tareas de proyecto para los archivos de manipfulating. Describe cómo crear un proyecto desde la línea de comandos, agregar archivos y carpetas, configurar la ruta del proyecto, definir accesos directos del proyecto y crear una referencia al nuevo proyecto en otro proyecto. También se muestra cómo trabajar mediante programación con archivos modificados, dependencias, accesos directos y etiquetas.

Set up the Example Files

Cree una copia de trabajo de los archivos de proyecto de ejemplo de la aplicación Times Table y abra el proyecto. MATLAB® copia los archivos en una carpeta de ejemplos para que pueda editarlos. El proyecto coloca los archivos en Git™ control de código fuente. Se usa para crear un objeto de proyecto a partir del proyecto cargado actualmente.currentProject

matlab.project.example.timesTable  mainProject = currentProject;

Examine archivos de proyecto

Examine los archivos del proyecto.

files = mainProject.Files
files =    1×14 ProjectFile array with properties:      Path     Labels     Revision     SourceControlStatus  

Utilice la indexación para acceder a los archivos de esta lista. Por ejemplo, obtenga el archivo número 10. Cada archivo tiene propiedades que describen su ruta de acceso y etiquetas adjuntas.

mainProject.Files(10)
ans =    ProjectFile with properties:                     Path: "C:\MATLAB\Projects\examples\TimesTableApp1\tests\tNewTimesTable.m"                  Labels: [1×1 matlab.project.Label]                Revision: ""     SourceControlStatus: Unmodified  

Examine las etiquetas del décimo archivo.

mainProject.Files(10).Labels
ans =    Label with properties:              File: "C:\MATLAB\Projects\examples\TimesTableApp1\tests\tNewTimesTable.m"         DataType: 'none'             Data: []             Name: "Test"     CategoryName: "Classification"  

Obtenga un archivo en particular por nombre.

myfile = findFile(mainProject,"source/timestable.mlapp")
myfile =    ProjectFile with properties:                     Path: "C:\MATLAB\Projects\examples\TimesTableApp1\source\timestable.mlapp"                  Labels: [1×1 matlab.project.Label]                Revision: ""     SourceControlStatus: Unmodified  

Create New Project

Crea el proyecto de juego de mesa de Times. Este proyecto almacenará la lógica del juego detrás de la App de Times Table. El proyecto del juego de tabla de horas será utilizado por el proyecto de la aplicación de tabla de tiempos a través de una referencia de proyecto.

Cree el proyecto y establezca el nombre del proyecto.

timesTableGameFolder = fullfile(mainProject.RootFolder,"refs","TimesTableGame"); timesTableGame = matlab.project.createProject(timesTableGameFolder); timesTableGame.Name = "Times Table Game"; 

Mueva la lógica del juego de la aplicación Times Table desde la carpeta principal del proyecto a la nueva carpeta del proyecto y agréguelo al proyecto de juego de tablas de Times. A continuación, quite el archivo del proyecto de la aplicación de tabla de horas.

movefile("..\..\source\timesTableGame.m"); addFile(timesTableGame,"timesTableGame.m");  reload(mainProject); removeFile(mainProject,"source\timesTableGame.m");

Agregue la carpeta raíz del proyecto del juego de tabla de tiempos a la ruta del proyecto de Times Table Game. Esto hace que el archivo esté disponible cuando se cargue el proyecto de la aplicación de tabla de horas o cualquier proyecto que haga referencia al proyecto de la aplicación de tabla de horas.timesTableGame.m

reload(timesTableGame); addPath(timesTableGame,timesTableGame.RootFolder);

Add a Project Reference

Agregue el nuevo proyecto de juego de tabla de tiempos al proyecto de la aplicación de tabla de horas como referencia de proyecto. Esto permite que el proyecto de aplicación de tabla de tiempo para ver, editar y ejecutar archivos en el proyecto de juego de tiempo.

reload(mainProject); addReference(mainProject,timesTableGame);

Obtener archivos modificados

Obtenga todos los archivos modificados en el proyecto de la aplicación de tabla de horas. Compare esta lista con la vista del proyecto.Files > Modified Puede ver los archivos para el nuevo proyecto de juego de tabla de tiempos, así como los archivos eliminados y modificados en el proyecto de la aplicación de tabla de horas.

modifiedfiles = listModifiedFiles(mainProject)
modifiedfiles =    1×19 ProjectFile array with properties:      Path     Labels     Revision     SourceControlStatus  

Obtenga el segundo archivo modificado en la lista. Observe que la propiedad es.SourceControlStatusAdded La función devuelve todos los archivos que se agregan, modifican, conflicted, eliminan, y así sucesivamente.listModifiedFiles

modifiedfiles(2)
ans =    ProjectFile with properties:                     Path: "C:\MATLAB\Projects\examples\TimesTableApp1\refs\TimesTableGame\resources\project\Project.xml"                Revision: ""     SourceControlStatus: Added  

Actualice el estado del control de código fuente antes de consultar archivos individuales. Usted no necesita hacer esto antes de llamar.listModifiedFiles

refreshSourceControl(mainProject)

Obtener todos los archivos de proyecto que son.Unmodified Utilice la función para obtener una matriz de logicals que indica qué archivos en el proyecto de la aplicación de tabla de horas no están modificados.ismember Utilice la matriz para obtener la lista de archivos sin modificar.

unmodifiedStatus = ismember([mainProject.Files.SourceControlStatus],matlab.sourcecontrol.Status.Unmodified); mainProject.Files(unmodifiedStatus)
ans =    1×9 ProjectFile array with properties:      Path     Labels     Revision     SourceControlStatus  

Obtener dependencias de archivo

Ejecute un análisis de dependencia para actualizar las dependencias conocidas entre los archivos de proyecto.

updateDependencies(mainProject)

Obtenga la lista de dependencias en el proyecto de la aplicación de tabla de horas. La propiedad contiene el gráfico de dependencias entre archivos de proyecto, almacenados como un objeto de MATLAB.Dependenciesdigraph

g = mainProject.Dependencies
g =    digraph with properties:      Edges: [6×1 table]     Nodes: [10×1 table]  

Obtenga los archivos requeridos por el archivo.timestable.mlapp

requiredFiles = bfsearch(g, which('source/timestable.mlapp'))
requiredFiles = 2×1 cell array
    {'C:\MATLAB\Projects\examples\TimesTableApp1\source\timestable.mlapp'             }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\refs\TimesTableGame\timesTableGame.m'}

Obtenga los archivos de nivel superior de todos los tipos en el gráfico. La función encuentra todos los archivos que no dependen de ningún otro archivo.indegree

top = g.Nodes.Name(indegree(g)==0)
top = 7×1 cell array
    {'C:\MATLAB\Projects\examples\TimesTableApp1\requirements\TimesTableRequirements.mlx'}
    {'C:\MATLAB\Projects\examples\TimesTableApp1\tests\tAnswerIsCorrect.m'               }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\tests\tCurrentQuestion.m'               }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\tests\tNewTimesTable.m'                 }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\utilities\openRequirementsDocument.m'   }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\utilities\runTheseTests.m'              }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\utilities\runTimesTable.m'              }

Obtenga los archivos de nivel superior que tienen dependencias. La función busca todos los archivos que no dependen de ningún otro archivo y la función encuentra todos los archivos que tienen dependencias.indegreeoutdegree

top = g.Nodes.Name(indegree(g)==0 & outdegree(g)>0)
top = 5×1 cell array
    {'C:\MATLAB\Projects\examples\TimesTableApp1\requirements\TimesTableRequirements.mlx'}
    {'C:\MATLAB\Projects\examples\TimesTableApp1\tests\tAnswerIsCorrect.m'               }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\tests\tCurrentQuestion.m'               }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\tests\tNewTimesTable.m'                 }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\utilities\openRequirementsDocument.m'   }

Encontrar archivos impactados (o "upstream") mediante la creación de un gráfico transpuesto. Utilice la función para invertir la dirección de los bordes en el gráfico.flipedge

transposed = flipedge(g)
transposed =    digraph with properties:      Edges: [6×1 table]     Nodes: [10×1 table]  
impacted = bfsearch(transposed,which('source/timestable.mlapp'))
impacted = 2×1 cell array
    {'C:\MATLAB\Projects\examples\TimesTableApp1\source\timestable.mlapp'                }
    {'C:\MATLAB\Projects\examples\TimesTableApp1\requirements\TimesTableRequirements.mlx'}

Obtenga información sobre los archivos de proyecto, como el número de dependencias y huérfanos.

averageNumDependencies = mean(outdegree(g)); numberOfOrphans = sum(indegree(g)+outdegree(g)==0);

Cambie el criterio de ordenación del gráfico de dependencias para mostrar los cambios de proyecto de abajo hacia arriba.

ordered = g.Nodes.Name(flip(toposort(g)));

Puede ver el mismo gráfico de análisis de dependencia en el proyecto.Impact View Para trazar el gráfico, guarde la vista de impacto en un archivo de imagen.

Accesos directos de consulta

Puede usar accesos directos para guardar tareas frecuentes y archivos a los que se accede con frecuencia, o para automatizar las tareas de inicio y apagado.

Obtenga los accesos directos del proyecto App de Times Table.

shortcuts = mainProject.Shortcuts
shortcuts =    1×4 Shortcut array with properties:      Name     Group     File  

Examine un acceso directo en la lista.

shortcuts(2)
ans =    Shortcut with properties:       Name: "Requirements"     Group: "Documentation"      File: "C:\MATLAB\Projects\examples\TimesTableApp1\utilities\openRequirementsDocument.m"  

Obtenga la ruta del archivo de un acceso directo.

shortcuts(3).File
ans =  "C:\MATLAB\Projects\examples\TimesTableApp1\utilities\runTheseTests.m" 

Examine todos los archivos de la lista de accesos directos.

{shortcuts.File}'
ans = 4×1 cell array
    {["C:\MATLAB\Projects\examples\TimesTableApp1\source\timestable.mlapp"             ]}
    {["C:\MATLAB\Projects\examples\TimesTableApp1\utilities\openRequirementsDocument.m"]}
    {["C:\MATLAB\Projects\examples\TimesTableApp1\utilities\runTheseTests.m"           ]}
    {["C:\MATLAB\Projects\examples\TimesTableApp1\utilities\runTimesTable.m"           ]}

Los archivos de etiqueta

Cree una nueva categoría de etiquetas de tipo.char En el proyecto de la aplicación de tabla de horas, la nueva categoría aparece en el panel.EngineersEtiquetas

createCategory(mainProject,'Engineers','char')
ans =    Category with properties:                  Name: "Engineers"         SingleValued: 0             DataType: "char"     LabelDefinitions: [1×0 matlab.project.LabelDefinition]  

Defina una nueva etiqueta en la nueva categoría.

category = findCategory(mainProject,'Engineers'); createLabel(category,'Bob');

Obtenga el objeto de definición de etiqueta para la nueva etiqueta.

ld = findLabel(category,'Bob')
ld =    LabelDefinition with properties:              Name: "Bob"     CategoryName: "Engineers"  

Adjunte una etiqueta a un archivo de proyecto. Si selecciona el archivo en el proyecto aplicación de tabla de horas, puede ver esta etiqueta en el panel.Label Editor

myfile = findFile(mainProject,"source/timestable.mlapp"); addLabel(myfile,'Engineers','Bob');

Obtener una etiqueta en particular y adjuntar datos de texto a la misma.

label = findLabel(myfile,'Engineers','Bob'); label.Data = 'Email: Bob.Smith@company.com'
label =    Label with properties:              File: "C:\MATLAB\Projects\examples\TimesTableApp1\source\timestable.mlapp"         DataType: 'char'             Data: 'Email: Bob.Smith@company.com'             Name: "Bob"     CategoryName: "Engineers"  

Recupere los datos de la etiqueta y guárdela en una variable.

mydata = label.Data
mydata =  'Email: Bob.Smith@company.com' 

Cree una nueva categoría de etiqueta con el tipo de datos, el tipo MATLAB utiliza habitualmente para los datos numéricos.double

createCategory(mainProject,'Assessors','double'); category = findCategory(mainProject,'Assessors'); createLabel(category,'Sam');

Asocie la nueva etiqueta a un archivo especificado y asigne el valor de datos 2 a la etiqueta.

myfile = mainProject.Files(10); addLabel(myfile, 'Assessors', 'Sam', 2)
ans =    Label with properties:              File: "C:\MATLAB\Projects\examples\TimesTableApp1\utilities"         DataType: 'double'             Data: 2             Name: "Sam"     CategoryName: "Assessors"  

Cierre el proyecto

Cierre el proyecto para ejecutar scripts de apagado y compruebe si hay archivos no guardados.

close(mainProject)

Consulte también

Temas relacionados