Professional Documents
Culture Documents
List of VI Analyzer Toolkit Tests
List of VI Analyzer Toolkit Tests
Table of Contents
1. Block Diagram......................................................................................................................................4
1.1. Performance................................................................................................................................4
1.1.1. Arrays and Strings in Loops..................................................................................................4
1.1.2. Coercion Dots......................................................................................................................4
1.1.3. Enabled Debugging..............................................................................................................4
1.1.4. In Place Element Structure Usage........................................................................................5
1.1.5. Inlinable Vis..........................................................................................................................5
1.1.6. Parallelizable Loops..............................................................................................................5
1.1.7. Prepend Scalar With Build Array..........................................................................................5
1.1.8. Redundant Boolean Operations...........................................................................................5
1.1.9. Value Property Usage..........................................................................................................5
1.1.10. Wait in While Loop...............................................................................................................5
1.1.11. Wired Terminals in Subdiagrams.........................................................................................5
1.2. Style.............................................................................................................................................5
1.2.1. Backwards Wires..................................................................................................................5
1.2.2. Code Simplification..............................................................................................................5
1.2.3. Control Terminal Label Visible.............................................................................................5
1.2.4. Control Terminal Wiring.......................................................................................................6
1.2.5. Mixed Terminal Styles..........................................................................................................6
1.2.6. Node Density.......................................................................................................................6
1.2.7. Sequence Structure Usage...................................................................................................6
1.2.8. String Constant Style............................................................................................................6
1.2.9. Tunnel Position....................................................................................................................6
1.2.10. Unused Code........................................................................................................................6
1.2.11. Wire Bends...........................................................................................................................6
1.2.12. Wire Crossings.....................................................................................................................6
1.2.13. Wires Under Objects............................................................................................................6
1.3. Warnings......................................................................................................................................6
1.3.1. Adding Array Size Elements.................................................................................................6
1.3.2. Array Sum and Product Overflow........................................................................................7
1.3.3. Breakpoint Detection...........................................................................................................7
1.3.4. Bundling Duplicate Names...................................................................................................7
1.3.5. Error Cluster Wired..............................................................................................................7
1.3.6. For Loop Iteration Count......................................................................................................7
1.3.7. Globals and Locals................................................................................................................7
1.3.8. Hidden Objects in Structures...............................................................................................7
1.3.9. Hidden Tunnels....................................................................................................................7
1.3.10. Indexer Datatype.................................................................................................................7
1.3.11. Pattern Label........................................................................................................................7
1.3.12. Reentrant VI Issues..............................................................................................................8
1.3.13. Type Casting References......................................................................................................8
1.3.14. Typedef Cluster Constants...................................................................................................8
2. Complexity Metrics..............................................................................................................................8
2.1.1. Cyclomatic Complexity.........................................................................................................8
2.1.2. Depth of Nesting of Structures............................................................................................8
2.1.3. Fan In...................................................................................................................................8
2.1.4. Fan Out................................................................................................................................8
2.1.5. Modularity Index..................................................................................................................8
3. Documentation....................................................................................................................................9
3.1. Developer....................................................................................................................................9
3.1.1. Comment Usage..................................................................................................................9
3.1.2. Label Call Library Nodes.......................................................................................................9
3.1.3. Revision History...................................................................................................................9
3.2. User.............................................................................................................................................9
3.2.1. Spell Check...........................................................................................................................9
3.2.2. VI Documentation................................................................................................................9
4. Front Panel..........................................................................................................................................9
4.1. SubVI............................................................................................................................................9
4.1.1. Array Default Values............................................................................................................9
4.1.2. Cluster Sized to Fit...............................................................................................................9
4.1.3. Control Alignment..............................................................................................................10
4.2. User Interface............................................................................................................................10
4.2.1. Clipped Text.......................................................................................................................10
4.2.2. Dialog Controls...................................................................................................................10
4.2.3. Duplicate Control Labels....................................................................................................10
4.2.4. Empty List Items.................................................................................................................10
4.2.5. Font Usage.........................................................................................................................10
4.2.6. Overlapping Controls.........................................................................................................10
4.2.7. Panel Size and Position......................................................................................................10
4.2.8. Scalar Chart Updates..........................................................................................................10
4.2.9. Synchronous Display..........................................................................................................10
4.2.10. Transparent Labels.............................................................................................................11
5. General..............................................................................................................................................11
5.1. File Properties............................................................................................................................11
5.1.1. SubVI and TypeDef Locations.............................................................................................11
5.1.2. VI Extension.......................................................................................................................11
5.1.3. VI Name.............................................................................................................................11
5.1.4. VI Saved Version................................................................................................................11
5.1.5. VI Size.................................................................................................................................11
5.2. Icon and Connector Pane...........................................................................................................11
5.2.1. Connected Pane Terminals................................................................................................11
5.2.2. Connector Pane Alignment................................................................................................11
5.2.3. Connector Pane Pattern.....................................................................................................11
5.2.4. Default Icon........................................................................................................................11
5.2.5. Error Style..........................................................................................................................11
5.2.6. Full Connector Pane...........................................................................................................12
5.2.7. Icon Size and Border..........................................................................................................12
5.2.8. Polymorphic Terminals......................................................................................................12
5.2.9. Terminal Connection Type.................................................................................................12
5.2.10. Terminal Positions..............................................................................................................12
5.3. VI Properties..............................................................................................................................12
5.3.1. Broken VI...........................................................................................................................12
5.3.2. Built Application Compatibility..........................................................................................12
5.3.3. Driver Usage.......................................................................................................................12
5.3.4. Platform Portability............................................................................................................12
5.3.5. Removed Diagram..............................................................................................................12
5.3.6. Toolkit Usage.....................................................................................................................12
5.3.7. VI Lock State......................................................................................................................13
6. VI Metrics..........................................................................................................................................13
6.1.1. Connector Inputs and Outputs...........................................................................................13
6.1.2. Controls and Indicators......................................................................................................13
6.1.3. Diagram Count...................................................................................................................13
6.1.4. Diagram Size......................................................................................................................13
6.1.5. Node Count........................................................................................................................13
6.1.6. Property Reads and Writes................................................................................................13
6.1.7. Shared Library Calls............................................................................................................13
6.1.8. Structure Count.................................................................................................................13
6.1.9. Wire Sources......................................................................................................................13
1. Block Diagram
1.1.Performance
1.1.1. Arrays and Strings in Loops
Checks loops to see if they contain Build Array or Concatenate Strings functions. Avoid using these
functions in loops because each call to them requires a dynamic resizing of the array or string, which can
affect memory and processor time. This test does not check Timed Loops.
1.2.Style
1.2.1. Backwards Wires
This test checks if wires do not flow from left to right. It does not analyze wires on Simulation Diagrams,
or wires connected to Feedback Nodes.
1.3.Warnings
1.3.1. Adding Array Size Elements
This test ensures that an "Add Array Elements" function is not used on the output of the "Array Size"
function to determine the size of a multi-dimensional array. If you are checking to see if a multi-
dimensional array is truly empty, you should use the "Empty Array?" function on the "Array Size" output.
1.3.2. Array Sum and Product Overflow
Checks the Add Array Elements and Multiply Array Elements functions to see if the 'numeric array' input
is a signed or unsigned 8-bit or 16-bit integer data type. Since the 'sum' and 'product' output of these
functions matches the input data type, the add or multiply operation may result in an overflow.
Consider changing the input data type to these functions to a signed or unsigned 32-bit or 64-bit integer
to reduce the possibility of an overflow.
2.1.3. Fan In
This test checks if the number of VIs calling this VI is less than the user specified number.
3.2.User
3.2.1. Spell Check
Checks the spelling of words on a VI's front panel and block diagram. Certain VI properties, such as
description, are also checked.
3.2.2. VI Documentation
Checks for text in the VI description, control description, and/or tip strip fields on all controls.
4. Front Panel
4.1.SubVI
4.1.1. Array Default Values
Checks charts, graphs, and arrays on a front panel for empty default values. Saving non-empty default
values inside charts, graphs, or arrays uses memory unnecessarily. When the VI runs, it overwrites
values wired to indicators on the block diagram. If the VI is used as a subVI, the VI overwrites values
wired to controls connected to the connector pane. This test will not check graphs and charts that are
not array datatypes (this includes scalar Waveform Charts and Digital Waveform Graphs). It will also
ignore fixed-size arrays.
4.2.User Interface
4.2.1. Clipped Text
Checks that any visible text on the front panel is not cut off. This includes text in control labels, control
captions, free labels, and text controls such as strings and paths. The test cannot check the text inside
listboxes, tables, tree controls, and tab controls.
5.1.2. VI Extension
Checks the filename extension. The test fails for any VI that does not have a .vi or .vit extension, or for
any custom control that does not have a .ctl or .ctt extension. The test is case insensitive.
5.1.3. VI Name
Checks the name of a VI for potentially invalid characters.
5.1.5. VI Size
Compares the file size of a VI to the maximum allowable size the user specifies.
5.3.VI Properties
5.3.1. Broken VI
Checks for broken VIs.