VI Analyzer Enthusiasts Discussions

Showing results for 
Search instead for 
Did you mean: 

New VI Analyzer Features in LabVIEW 2018

We were able to implement quite a few new features for VI Analyzer in LabVIEW 2018. Here is a summary of those features:


  1. Human-readable configuration file - In LabVIEW 2017 and previous, the .cfg file used to store a VI Analyzer configuration is a datalog file. This has posed problems to users who want to be able to read the file, and (more importantly) diff changes in SCC. For LabVIEW 2018, the configuration file is now a ".viancfg" file, which is an XML format that is easily readable and diffable. Note that loading old .cfg files is still supported, but you can only save configurations as .viancfg files going forward. Also note that since the new format is human-readable, the ability to password-protect a .viancfg file, and the ability to store VI passwords for analysis, have been removed.
  2. New Tests - We have added the following new tests to the VI Analyzer Toolkit:
    1. Auto Error Handling Enabled - Returns a failure for any VI with automatic error handling enabled.
    2. For Loop Error Handling - Returns a failure for any For Loop that is not handling errors properly in the event that it executes for zero iterations.
    3. Control VI Type - Returns a failure for any .ctl that does not match a user-specified type (useful for identifying a 'Custom Control' that should be a 'Type Def.').
  3. Improved Tests - We have improved the following existing tests in the VI Analyzer Toolkit:
    1. Wire Bends - Now takes number of sinks into account when determining test failure.
    2. Wire Crossings - Now takes number of sinks into account when determining test failure.
    3. SubVI and Typedef Locations - Now includes an option for including vi.lib/instr.lib/user.lib by default
  4. Removed Tests - We have removed the following tests from the VI Analyzer Toolkit:
    1. Node Density - Results were deemed too noisy and not useful for improving coding style.
    2. Typedef Cluster Constants - This test was useful a long time ago for detecting a potential LabVIEW bug with typedef updates to clusters. The bug is no longer present, and the Review and Update Type Def. feature obviates the need for this test.
    3. Connected Pane Terminals - Having unwired control terminals on the diagram is common with plugin frameworks (especially with LabVIEW classes), so this test was often returning more false failures than it was returning useful information.
  5. Improved Result Formatting - You can use <b></b> tags in your result messages of your tests to make them easier to read in the Results Window (and any results exported to HTML):
  6. Improved Results Tree Display - The "Occurrence [n]" text in the Results Window has been replaced with the actual failure message text (with tip strips for longer messages). This makes it easier to browse test results without having to select each individual item:
  7. Abort Programmatic Analysis - The Get Analysis Status VI in the VI Analyzer API has a new "Abort Analysis" input that allows you to abort a programmatic analysis:
  8. UID-based tests - This feature pertains primarily to developers who write their own VI Analyzer tests. We have removed the "RD VI" component of VI Analyzer tests, and now you return the UID of failure objects in your test results instead of a traversal index. Not only will this make tests easier to write, but it also improves the performance of the Results Window since traversals no longer need to be performed as part of populating the results UI. Note that legacy RD-based tests are still supported, but the Create New Test tool will create UID-based tests going forward.
  9. Ignore Individual Results - I saved the best for last! This has been the #1 requested feature for the VI Analyzer for the past decade. You can now ignore individual test failures so they are not returned as failures in a future analysis. To ignore a failure, you can create a free label with the "#via_ignore" bookmark. If you attach this label to an object, that object will not be returned as a failure for any VI Analyzer Test whose name appears in the free label. If you do not attach the label to any object, then any VI Analyzer Test whose name appears in the free label will not be returned as a failure for this VI. So for the following VI:
    The Wire Bends test will not return a failure for the wire attached to the free label, and the Broken VI and Enabled Debugging tests will never return a failure for this VI. 

    A few caveats about this feature:
    1. Ignoring test failures for front panel objects is not currently supported.
    2. Ignoring test failures in VIs that do not have diagrams (Control VIs, Global VIs, etc.) is not currently supported.
    3. In order for your test to support this functionality, it must be a UID-based test (see #8 above). Note that all VI Analyzer Toolkit 2018 tests have been updated to be UID-based.

There is a Quick Drop plugin available to help with creating these #via_ignore bookmarks that integrates with the Results Window while you're browsing test failures. You can download the plugin here. If you prefer to use a right-click plugin for this functionality, you can download that here.

Message 1 of 5

Glad I was part of this 🙂

Piotr Kruczkowski
Certified TestStand Architect
Certified LabVIEW Architect
Message 2 of 5

Thrilled to see these improvements, especially #9 - Ignore Individual Results! Well done.


Thanks for making this tool even more convenient.



0 Kudos
Message 3 of 5

Thank you Darren!

Sam Taggart
CLA, CPI, CTD, LabVIEW Champion
DQMH Trusted Advisor
Read about my thoughts on Software Development at
0 Kudos
Message 4 of 5

Very nice features.

Funny side effect of #9: Using enough "#via_ignore" bookmarks will trick "Comment Usage" test. Maybe this could be considered in future versions by checking first characters of counted comments.

0 Kudos
Message 5 of 5