padv.builtin.query.FindCodeForModel Class
Namespace: padv.builtin.query
Superclasses: padv.Query
Query for finding generated code files and buildInfo.mat
for
model
Description
This class requires CI/CD Automation for Simulink Check.
The padv.builtin.query.FindCodeForModel
class provides a query that can
return the generated code files and buildInfo.mat
for a model. You can
automatically include or exclude certain artifacts by using the optional name-value
arguments.
You can use this query in your process model to find artifacts for your tasks to iterate over or use as inputs.
The padv.builtin.query.FindCodeForModel
class is a handle
class.
Creation
Description
creates a query for finding the generated code files and query
= padv.builtin.query.FindCodeForModel()buildInfo.mat
for a model.
sets certain properties using one or more name-value arguments. For example,
query
= padv.builtin.query.FindCodeForModel(Name=Value
)padv.builtin.query.FindCodeForModel(Name = "MyCodeQuery")
creates a
query object with the name "MyCodeQuery"
.
The padv.builtin.query.FindCodeForModel
class also has other properties, but you cannot set
those properties during query creation.
Input Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: query = padv.builtin.query.FindCodeForModel(Name =
"MyCodeQuery")
ExcludeLabel
— Exclude artifacts with specific project label
cell array
Exclude artifacts with specific project label, specified as a cell array where the first entry is the project label category and the second entry is the project label name.
Example: {"Category","Label"}
Data Types: cell
ExcludePath
— Exclude artifacts where path contains specific text
string | character vector
Exclude artifacts where the path contains specific text, specified as a string or a character vector.
Example: "Control"
Data Types: string
IncludeLabel
— Find artifacts with specific project label
cell array
Find artifacts with specific project label, specified as a cell array where the first entry is the project label category and the second entry is the project label name.
Example: {"Category","Label"}
Data Types: cell
IncludePath
— Find artifacts where path contains specific text
string
Find artifacts where the path contains specific text, specified as a string.
Example: "Control"
Data Types: string
Name
— Unique identifier for query
string
Unique identifier for query, specified as a string.
Example: "FindMyCode"
Data Types: string
Parent
— Initial query run before iteration query
"padv.builtin.query.FindModels"
(default) | padv.Query
object | Name
of padv.Query
object
Initial query run before iteration query, specified as either a
padv.Query
object or the Name
of a
padv.Query
object. When you specify a padv.Query
object as the iteration query for a task, the Parent
query is
the initial query that the build system runs before running the specified iteration
query.
The build system ignores the Parent
query when you specify
a query as an input query or dependency query for a task.
For information on how to improve Process Advisor load times by sharing query instances across your process model, see Best Practices for Process Model Authoring.
Example: padv.builtin.query.FindModels
Example: padv.builtin.query.FindModels(IncludePath =
"Control")
Properties
IncludeLabel
— Find artifacts with specific project label
cell array
Find artifacts with specific project label, specified as a cell array where the first entry is the project label category and the second entry is the project label name.
Example: {"Category","Label"}
Data Types: cell
ExcludeLabel
— Exclude artifacts with specific project label
cell array
Exclude artifacts with specific project label, specified as a cell array where the first entry is the project label category and the second entry is the project label name.
Example: {"Category","Label"}
Data Types: cell
IncludePath
— Find artifacts where path contains specific text
string
Find artifacts where the path contains specific text, specified as a string.
Example: "Control"
Data Types: string
ExcludePath
— Exclude artifacts where path contains specific text
string | character vector
Exclude artifacts where the path contains specific text, specified as a string or a character vector.
Example: "Control"
Data Types: string
Title
— Query title
"The generated code files for a given model"
(default) | string | character vector
Query title, specified as a string or a character vector.
Example: "Find my generated code and buildInfo"
Data Types: string
DefaultArtifactType
— Default artifact type returned by query
"coder_code_files"
(default) | ...
Default artifact type returned by the query, specified as one or more of the values in this table. To specify multiple values, use an array.
Category | Artifact Type | Description |
---|---|---|
MATLAB® | "m_class" | MATLAB class |
"m_file" | MATLAB file | |
"m_func" | MATLAB function | |
"m_method" | MATLAB class method | |
"m_property" | MATLAB class property | |
Model Advisor | "ma_config_file" | Model Advisor configuration file |
"ma_justification_file" | Model Advisor justification file | |
Process Advisor | "padv_dep_artifacts" | Related artifacts that current artifact depends on |
"padv_output_file" | Process Advisor output file | |
Project | "project" | Current project file |
Requirements | "mwreq_item" | Requirement (since R2024b) |
| Requirement (for R2024a and earlier) | |
"sl_req_file" | Requirement file | |
"sl_req_table" | Requirements Table | |
Stateflow® | "sf_chart" | Stateflow chart |
"sf_graphical_fcn" | Stateflow graphical function | |
"sf_group" | Stateflow group | |
"sf_state" | Stateflow state | |
"sf_state_transition_chart" | Stateflow state transition chart | |
"sf_truth_table" | Stateflow truth table | |
Simulink® | "sl_block_diagram" | Block diagram |
"sl_data_dictionary_file" | Data dictionary file | |
"sl_embedded_matlab_fcn" | MATLAB function | |
"sl_block_diagram" | Block diagram | |
"sl_library_file" | Library file | |
"sl_model_file" | Simulink model file | |
"sl_protected_model_file" | Protected Simulink model file | |
"sl_subsystem" | Subsystem | |
"sl_subsystem_file" | Subsystem file | |
System Composer™ | "zc_block_diagram" | System Composer architecture |
"zc_component" | System Composer architecture component | |
"zc_file" | System Composer architecture file | |
Tests | "harness_info_file" | Harness info file |
"sl_harness_block_diagram" | Harness block diagram | |
"sl_harness_file" | Test harness file | |
"sl_test_case" | Simulink Test™ case | |
"sl_test_case_result" | Simulink Test case result | |
"sl_test_file" | Simulink Test file | |
"sl_test_iteration" | Simulink Test iteration | |
"sl_test_iteration_result" | Simulink Test iteration result | |
"sl_test_report_file" | Simulink Test result report | |
"sl_test_result_file" | Simulink Test result file | |
"sl_test_resultset" | Simulink Test result set | |
"sl_test_seq" | Test Sequence | |
"sl_test_suite" | Simulink Test suite | |
"sl_test_suite_result" | Simulink Test suite result |
Example: "coder_code_files"
Example: ["coder_code_files" "other_file"]
Parent
— Initial query run before iteration query
"padv.builtin.query.FindModels"
(default) | padv.Query
object | Name
of padv.Query
object
Initial query run before iteration query, specified as either a
padv.Query
object or the Name
of a
padv.Query
object. When you specify a padv.Query
object as the iteration query for a task, the Parent
query is the
initial query that the build system runs before running the specified iteration
query.
The build system ignores the Parent
query when you specify a
query as an input query or dependency query for a task.
For information on how to improve Process Advisor load times by sharing query instances across your process model, see Best Practices for Process Model Authoring.
Example: padv.builtin.query.FindModels
Example: padv.builtin.query.FindModels(IncludePath =
"Control")
Name
— Unique identifier for query
string
Unique identifier for query, specified as a string.
Example: "FindMyCode"
Data Types: string
ShowFileExtension
— Show file extensions for returned artifacts
0
(false
) | 1
(true
)
Show file extensions in the Alias
property of returned
artifacts, specified as a numeric or logical 1
(true
) or 0
(false
). The
Alias
property controls the display name for the artifact in the
Tasks column in Process Advisor.
By default, queries strip file extensions from the Alias
property of each task iteration artifact. To show file extensions for
all artifacts in the
Tasks column, select the project setting Show file
extensions. To keep file extensions in the results for a specific query,
specify the query property ShowFileExtension
as
true
.
Example: true
Data Types: logical
SortArtifacts
— Setting for automatically sorting artifacts by address
true
or 1
(default) | false
or 0
Setting for automatically sorting artifacts by address, specified as a numeric or
logical 1
(true
) or 0
(false
). When a query returns artifacts, the artifacts should be in
a consistent order. By default, the build system sorts artifacts by the artifact
address.
Alternatively, you can sort artifacts in a different order by overriding the
internal sortArtifacts
method in a subclass that defines a custom sort
behavior. For an example, see Sort Artifacts in Specific Order.
The build system automatically calls the sortArtifacts
method when
using the process model. The sortArtifacts
method expects two input
arguments: a padv.Query
object and a list of
padv.Artifact
objects returned by the run
method.
The sortArtifacts
method should return a list of sorted
padv.Artifact
objects.
Example: SortArtifacts = false
Data Types: logical
FunctionHandle
— Handle to function that function-based query runs
function_handle
Handle to the function that a function-based query
runs, specified as
a function_handle
.
If you define your query functionality inside a function and you or the build system
call run
on the query, the query runs the function specified by the
function_handle
.
The built-in queries are defined inside classes and do not use the
FunctionHandle
.
Example: FunctionHandle = @FunctionForQuery
Data Types: function_handle
Methods
Specialized Public Methods
This class overrides the following inherited methods.
run | Run query to find the artifacts that meet the criteria specified by the query. The query returns a Note You do not need to manually invoke this method inside your process
model. The build system automatically invokes the
The function artifacts = run(obj,iterationArtifact) ... end |
Examples
Find and Analyze Generated Code for Models
You can use the FindCodeForModel
query in your process
model to find generated code and buildInfo.mat
files for your tasks to
iterate over (IterationQuery
) or use as inputs
(addInputQueries
). For example, you can use the
FindCodeForModel
query to find the code a code generation task, like
padv.builtin.task.GenerateCode
, generates and use those files as the
input to a code analysis task like
padv.builtin.task.RunCodeInspection
.
Open a project. For this example, you can open the Process Advisor example project.
processAdvisorExampleStart
To pass the generated code from your code generation subprocess to your code
analysis subprocess, you can update each of your code analysis tasks to find and use the
generated model code as a task input by specifying FindCodeForModel
as
the input query for your code analysis tasks. Since the code analysis subprocess depends
on the code that the code generation subprocess generates, you also need to specify a
dependency between those subprocesses. For example, you can have the following process
model:
function processmodel(pm) % Defines the project's processmodel arguments pm padv.ProcessModel end % Add "Code Generation" subprocess spCodeGen = pm.addSubprocess("Code Generation Tasks"); spCodeGen.addTask(padv.builtin.task.GenerateCode); % Add "Code Analysis" subprocess spCodeAnalysis = pm.addSubprocess("Code Analysis Tasks"); % Update task to find and use model code as an input to the task spCodeAnalysis.addTask(padv.builtin.task.RunCodeInspection(... InputQueries=padv.builtin.query.FindCodeForModel())); % Dependency between "Code Generation" and "Code Analysis" subprocesses spCodeAnalysis.dependsOn(spCodeGen); end
In Process Advisor, view the updated Tasks by clicking Refresh Tasks and switching to the Project view. When you run the code analysis task, the task automatically runs the code generation task and uses the generated code as an input for code analysis.
Note that in the previous example process model, the GenerateCode
and
RunCodeInspection
tasks both use the same FindModels
iteration query. To potentially improve process model loading times, you can share a
single query object, in this case findModels
, across the
tasks.
function processmodel(pm) % Defines the project's processmodel arguments pm padv.ProcessModel end findModels = padv.builtin.query.FindModels(Name="ModelsQuery"); % Add "Code Generation" subprocess spCodeGen = pm.addSubprocess("Code Generation Tasks"); codeGenTask = spCodeGen.addTask(padv.builtin.task.GenerateCode(... IterationQuery = findModels)); % Add "Code Analysis" subprocess spCodeAnalysis = pm.addSubprocess("Code Analysis Tasks"); % Update task to find and use model code as an input to the task spCodeAnalysis.addTask(padv.builtin.task.RunCodeInspection(... IterationQuery = findModels,... InputQueries=padv.builtin.query.FindCodeForModel(Parent = findModels))); % Dependency between "Code Generation" and "Code Analysis" subprocesses spCodeAnalysis.dependsOn(spCodeGen); end
Capabilities and Limitations
This table identifies functionality that is supported by the query.
Functionality | Supported? |
---|---|
Input query for task | Yes. |
Iteration query for task | Yes. |
Note
If you use this query as an input query and specify non-empty values for
IncludeLabel
, ExcludeLabel
,
IncludePath
, or ExcludePath
, your task results
can unexpectedly become outdated. If you see this behavior, consider using a different
query, like padv.builtin.query.FindArtifacts
, instead. For more information and a list of
queries that are not impacted by this limitation, see Other Limitations.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)