Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Use job run generate_query_data, and you’re ready to start.

Querying

Components

In order to query components, component relationships, files, or file relationships, you will need the names of components or files. The component Component names are user-defined, but can be found using system component list. That will return a list that resembles the following:

...

while file and entity names are collected by CodeMRI.

Components

List components Additional command info

The NAME column should be used for querying

Code Block
system component list

SYSTEM           NAME     EXPRESSIONS        FILE COUNT
linux/linux-1.0  boot     linux/boot/*                2
linux/linux-1.0  fs       linux/fs/*                 19
linux/linux-1.0  include  linux/include/*            31
linux/linux-1.0  init     linux/init/*                1
linux/linux-1.0  kernel   linux/kernel/*             18

The NAME column should be used for querying, as such:

Code Block
> system query components ...

Query components

Code Block
system query components --name kernel
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
name                   kernel
file_count             13
fan_in                 5
fan_out                5
files_in_cyclic_group  10

...

name

The name of the component.

file_count

The number of files inside the component.

fan_in

How many components directly depend on the component.

fan_out

How many components are directly depended on by the component.

files_in_cyclic_group

The number of files within the component that are members of a cyclic group. A cyclic group is a group of files that are, either directly or indirectly, circularly dependent upon each other.

Component Relationships

List component

...

relationships

...

Additional command info

Code Block
system component-relationship list

SYSTEM           FROM    TO

linux/linux-1.0  kernel  boot

Query component relationships

system query component-relationship uses requires --from-component and --to-component flags:

...

from_component

The component that uses the to_component.

to_component

The component used by the from_component.

relationship_type

The type of relationship between the components. See Component Relationship Types for more information.

relationship_state

The state of the relationship as determined by CodeMRI. See Relationship States for more information.

severity

A coarse indicator of the level of attention to pay to a given relationship. See query#Severities for more information.

file_relationships

The number of files involved in the given component relationship. Will be nan or null for declared dependencies.

entity_relationships

The number of entities involved in the given component relationship. Will have a value of nan or null for declared dependencies.

Files

...

Files

Querying may display files not present in the reports. CodeMRI removes files deemed “isolates” from reports. A file is an “isolate” if:

  • it does not depend on any other files.

  • no other files depend on it.

List files

...

Additional command info

Code Block
system file list

SYSTEM           COMPONENT    NAME                          LANGUAGE              LINES OF CODE
linux/linux-1.0  fs list

SYSTEM           COMPONENT  linux/fs/bitmap.c  NAME           C               LANGUAGE              LINES OF 158CODE
linux/linux-1.0  fs           linux/fs/block_devbitmap.c             C                               158
86
linux/linux-1.0  fs           linux/fs/buffer.c             C             block_dev.c          C        254                        9586
...

Query files

system query files drops the appended linux/ in the --name flag. For example:

...

--name

The relative path of the file. May include wildcard expressions.

--component

The component in which the file resides. May include wildcard expressions.

--property-<property name>

Restrict the search to files assigned to the given list of files tagged with the provided list of file property / value combinations. At time of writing, the only recognized value for file properties is true. All values other than true will be treated as false.

--language

The programming language of the file, as detected by static analysis. May include wildcard expressions.

--complexity-class

The McCabe complexity class of the file. Must be one of the following:

  • NA: Complexity is either not available or 0.

  • Low: Complexity is between the Low and Medium thresholds.

  • Medium: Complexity is between the Medium and High thresholds.

  • High: Complexity is between the High and Very High thresholds.

  • Very High: Complexity is above the Very High threshold, the file is considered too complex to reasonably test or maintain. This value must be quoted as it contains a space.

--connected-to-file

Restrict search to files indirectly dependent upon a given file or set of files matching the given expression.

Fields:

name

The relative path of the file.

component

The component the file resides in. nan if the file is not assigned to a component.

language

The programming language of this file detected by static analysis.

entity_count

The number of entities contained in this file.

fan_in

The number of files that directly depend on this file.

fan_out

The number of files this file directly depends on.

in_cyclic_group

True if the file is part of a group of circularly dependent files, else False.

cyclic_group_id

The ID of the cyclic group this file is part of. 0 if the file is not part of a cyclic group.

cyclic_group_size

The size, in files, of the cyclic group this file belongs to.

complexity_class

A simplified representation of the complexity of this file.

max_cyclomatic_modified

The cyclomatic complexity of this file.

count_line_code

The number of source lines within the file.

ratio_comment_to_code

The ratio of comment lines to source lines within this file.

property.*

Property values assigned to the given file.

File Relationships

...

  • contains a space.

--connected-to-file

Restrict search to files indirectly dependent upon a given file or set of files matching the given expression.

Fields:

name

The relative path of the file.

component

The component the file resides in. nan if the file is not assigned to a component.

language

The programming language of this file detected by static analysis.

entity_count

The number of entities contained in this file.

fan_in

The number of files that directly depend on this file.

fan_out

The number of files this file directly depends on.

in_cyclic_group

True if the file is part of a group of circularly dependent files, else False.

cyclic_group_id

The ID of the cyclic group this file is part of. 0 if the file is not part of a cyclic group.

cyclic_group_size

The size, in files, of the cyclic group this file belongs to.

complexity_class

A simplified representation of the complexity of this file.

max_cyclomatic_modified

The cyclomatic complexity of this file.

count_line_code

The number of source lines within the file.

ratio_comment_to_code

The ratio of comment lines to source lines within this file.

property.*

Property values assigned to the given file.

File Relationships

File relationships are _____________

List file relationships

Code Block
system file_relationship list

# 

Query file relationships

system query file_relationship uses --from-file and --to-file flags

Code Block
system query file_relationships --from-file ______ --to-file _______

#

Filters:

--from-file

The name of file that uses the to_file. May include wildcard expressions.

--to-file

The name of the file used by the from_file. May include wildcard expressions.

--from-component

The component containing the file that uses the to_file. May include wildcard expressions.

--to-component

The component containing the file used by the from_file. May include wildcard expressions.

-from-property-<property>

Files tagged with the file property matching the given property/value combination. At time of writing the only supported value is true, all other values will be treated as false.

-to-property-<property>

Files tagged with the file property matching the given property/value combination. At time of writing the only supported value is true, all other values will be treated as false.

--relationship-state

The state of the relationship between the files. Must be one or more of: ok, circular, constraint_violation.

--severity

A coarse indicator of the level of attention to pay to a given relationship. Must be one of: info, warning, error.

--connected-to-file

Restrict search to files indirectly dependent upon a given file or set of files matching the given expression.

--from-cyclic-group-id

The cyclic group ID of the file that uses the to_file.

--to-cyclic-group-id

The cyclic group ID of the file used by the from_file.

...

from_file

The file that uses the to_file.

to_file

The file used by the from_file.

from_component

The component that uses the to_component.

to_component

The component used by the from_component.

from_property.*

Property values assigned to the file on the from side of the relationship.

to_property.*

Property values assigned to the file on the to side of the relationship.

relationship_state

The state of the relationship. See Relationship States for more information.

severity

A coarse indicator of the level of attention to pay to a given relationship. See query#Severities for more information.

entity_relationships

The number of entities involved in the given file relationship.

Entities

Entities are __

List entities

Code Block
system entity list

#

Query entities

Code Block
system query entities --name 

#

Filters:

--name

The name of the entity. May include wildcard expressions.

--type

The type of the entity. May include wildcard expressions.

--file

The file the entity is contained in. May include wildcard expressions.

--component

The component the entity is contained in. May include wildcard expressions.

--language

The language of the file the entity is contained in. May include wildcard expressions.

--complexity-class

The McCabe complexity class of the file. Must be one of the following:

  • NA: Complexity is either not available or 0.

  • Low: Complexity is between the Low and Medium thresholds.

  • Medium: Complexity is between the Medium and High thresholds.

  • High: Complexity is between the High and Very High thresholds.

  • Very High: Complexity is above the Very High threshold, the file is considered too complex to reasonably test or maintain. This value must be quoted as it contains a space.

...

name

The name of the entity.

type

The type of the entity. Please note that these types are not standardized across static analysis engines.

file

The relative path of the file that owns the entity.

component

The component that owns the entity. If the entity is not part of any component, this field will be blank.

in_cyclic_group

Whether the entity is in a group of entities that are circularly dependent on each other.

cyclic_group_id

The ID of the cyclic group the entity belongs to. Will be 0 if in_cyclic_group is False.

cyclic_group_size

The number of files in the cyclic group the entity belongs to. Will be 0 if in_cyclic_group is False.

language

The programming language the owning file was written in, as detected by the static analysis engine.

max_cyclomatic_modified

The McCabe complexity of the entity, as determined by static analysis. May not be valid for all entity types, will be -1 if not available for a given entity.

complexity_class

The McCabe complexity class of the entity, as determined by CodeMRI. May not be valid for all entity types, will be nan if not available for a given entity.

count_line_code

The number of lines of code (LOC) in the entity. May not be valid for all entity types, will be nan if not available for a given entity.

ratio_comment_to_code

The ratio of comment lines to source lines in the entity. May not be valid for all entity types, will be nan if not available for a given entity.

Entity Relationships

...

Entity relationships are ________________

List entity relationships

Code Block
#

Query entity relationships

Code Block
#

Filters:

--from-entity

The name of the entity that uses to_entity. May include wildcard expressions.

--to-entity

The name of the entity used by the from_entity. May include wildcard expressions.

--from-file

The file that owns the from_entity. May include wildcard expressions.

--to-file

The file that owns the to_entity. May include wildcard expressions.

--from-component

The name of the component that owns the from_file. May include wildcard expressions.

--to-component

The name of the component that owns the to_file. May include wildcard expressions.

--relationship-state

The state of the relationship between the from_file and to_file. Must be one of ok, circular, illegal, missing, or undeclared.

--severity

The weight of the relationship state. Can be overridden by the user. Must be one of info, warning, or error.

...