Main Content

padv.builtin.query.FindExternalCodeCache Class

Namespace: padv.builtin.query
Superclasses: padv.Query, padv.builtin.query.FindArtifacts

Query for finding external code cache files in project folder

Description

This class requires CI/CD Automation for Simulink Check.

The padv.builtin.query.FindExternalCodeCache class provides a query that can return the external code cache files (.slxc.bk) in your project folder. You can automatically include or exclude certain files by using the optional name-value arguments.

You can use this query in your process model to find artifacts for your tasks to use as inputs. For example, you can use this query to the find external code cache files that you generate using the built-in task padv.builtin.task.GenerateCode. The built-in task padv.builtin.task.GenerateCode generates an external code cache when you specify the task property GenerateExternalCodeCache as true. To unpack the code generation target from the cache files, you can use the utility function padv.util.unpackExternalCodeCache.

The padv.builtin.query.FindExternalCodeCache class is a handle class.

Creation

Description

query = padv.builtin.query.FindExternalCodeCache() creates a query for finding the external code cache files (.slxc.bk) in your project folder.

example

query = padv.builtin.query.FindExternalCodeCache(Name = queryName) specifies a new name, queryName, for the query object. Each query in the process model must have a unique name.

The padv.builtin.query.FindExternalCodeCache class also has other properties, but you cannot set those properties during query creation.

Input Arguments

expand all

Unique identifier for query, specified as a string.

This argument specifies the value for the Name property.

Example: "FindMyExternalCodeCache"

Data Types: string

Properties

expand all

Type of artifact, specified as one or more of the values in this table. To specify multiple values, use a cell array.

CategoryArtifact TypeDescription

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)

"sl_req"

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: "slxc_bak_file"

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: {"Classification","Design"}

Data Types: cell

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: {"Classification","Design"}

Data Types: cell

Find artifacts where the path matches a regular expression pattern, specified as a character vector or string. IncludePathRegex expects UNIX®-style path separators.

If you want to use a literal path, use IncludePath instead. You can specify either IncludePath or IncludePathRegex but not both.

Example: "modelNamePrefix_.*\.slxc.bk"

Data Types: char | string

Exclude artifacts where the path matches a regular expression pattern, specified as a string or a character vector. ExcludePathRegex expects UNIX-style path separators.

If you want to use a literal path, use ExcludePath instead. You can specify either ExcludePath or ExcludePathRegex but not both.

Example: "modelNamePrefix_.*\.slxc.bk"

Data Types: char | string

Filter out sub-file artifacts from query results, specified as a numeric or logical 1 (true) or 0 (false).

A sub-file is a part of a larger file. For example, a subsystem is a sub-file of a model file.

Example: false

Data Types: logical

Include only artifacts that have been added to the project, specified as a numeric or logical 1 (true) or 0 (false).

For more information about how to add or remove files from a project, see Manage Project Files.

Example: true

Data Types: logical

Query title, specified as a string or a character vector.

Example: "Find my external code cache files"

Data Types: string

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.

CategoryArtifact TypeDescription

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)

"sl_req"

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: "slxc_bak_file"

You cannot use FindExternalCodeCache as an iteration query, so the build system does not use the parent query.

Unique identifier for query, specified as a string.

Example: "FindMyExternalCodeCache"

Data Types: string

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

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

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

expand all

Examples

collapse all

You can use the FindExternalCodeCache query in your task definition to find and unpack external code cache files. For example, suppose your team generates code in parallel by generating an external code cache, downstream tasks that depend on the generated code need to unpack the generated code target before performing the main task action. If you have a custom task that depends on that generated code, you can find the external code cache files by using the built-in query FindExternalCodeCache and unpack the code generation target by using the utility function padv.util.unpackExternalCodeCache.

Inside your task definition, you can find external code cache files by creating and running a FindExternalCodeCache query object. For example:

% Before main task action, access the generated code
% by finding and unpacking the external code cache
q = padv.builtin.query.FindExternalCodeCache;
artifactsArray = run(q);
    if ~isempty(artifactsArray)
        padv.util.unpackExternalCodeCache(artifactsArray)
    end

% <definition for main task action that uses the generated code>

For more information about parallel code generation and external code caches, see the GenerateExternalCodeCache property for the built-in task padv.builtin.task.GenerateCode. The external code cache allows your team to generate code in parallel while maintaining up-to-date task results.

Although you typically use a query inside your process model, you can run an instance of the FindExternalCodeCache query outside of your process model to confirm which artifacts the query returns.

Open the parallel code generation example.

processAdvisorParallelExampleStart

Generate code by running a code generation task iteration. For example, run the code generation task on the reference model OuterLoop_Control.

runprocess(Tasks = "padv.builtin.task.GenerateCode", ...
    FilterArtifact = fullfile("02_Models","OuterLoop_Control", ...
    "specification","OuterLoop_Control.slx"));

Find the external code cache file by using the built-in query.

q = padv.builtin.query.FindExternalCodeCache;
artifactsArray = run(q);

Unpack the cache file.

padv.util.unpackExternalCodeCache(artifactsArray);

Capabilities and Limitations

This table identifies functionality that is supported by the query.

FunctionalitySupported?

Input query for task

Yes.

Iteration query for task

No.