MATLAB Answers

what does the string #ok<NASGU> mean in the code editior

24 views (last 30 days)
Stephen Forczyk
Stephen Forczyk on 4 Oct 2019
Commented: Rik on 4 Oct 2019
I have a m file that is sprinkled with lines such as...
some code % #ok<NASGU> what does this mean?

  0 Comments

Sign in to comment.

Accepted Answer

Daniel M
Daniel M on 4 Oct 2019
Edited: Daniel M on 4 Oct 2019
Matlab's code analyzer, mlint, includes a wide range of warning messages about possible problems or inefficiencies in the analyzed m-file.
NASGU indicates the value assigned to variable name might be unused. Putting %#ok<NASGU> in a line of code tells mlint not to worry about this particular issue, on this line. You can see all the warnings as orange little tick marks near the scroll bar of the m-file. Red lines indicate syntax and other errors.
See this page for more information: Check for warnings and errors

  0 Comments

Sign in to comment.

More Answers (2)

Kelly Kearney
Kelly Kearney on 4 Oct 2019
That code disables the Code Analyzer from suggesting changes to the syntax. Specifically, <NASGU> refers the the ID associated with the "The value assigned here to 'x' appears to be unused. Consider replacing it by ~" suggestion.
My guess is that code was written with back-compatibility in mind, so the author intentionally chose not to use the ~ syntax on a bunch of lines, and wanted to silence all the warnings related to that choice so they didn't distract from any actually useful syntax warnings.
For example, if you create the following function in a recent version of Matlab:
function x = testmlint(x)
[a,b] = max(x);
x = b*2;
you'll see the little orange bar off to the side of the [a,b] = line. This version:
function x = testmlint(x)
[a,b] = max(x); %#ok
x = b*2;
is orange-bar free.

  1 Comment

Rik
Rik on 4 Oct 2019
When writing code yourself I would discourage the use of %#ok without the warning specifier. If you change your code that may cause a different warning. If you aren't using the specifier you are denying yourself the help of mlint.

Sign in to comment.


Steven Lord
Steven Lord on 4 Oct 2019
The %#ok pragma indicates that a particular Code Analyzer message has been suppressed on that line of code. See the "Adjust Code Analyzer Message Indicators and Messages" section on the documentation page to which I linked in my first sentence for more information.
You can search in the Code Analyzer preferences to identify which message has identifier NASGU and understand the potential issue Code Analyzer has detected on that line.

  0 Comments

Sign in to comment.

Sign in to answer this question.

Products


Release

R2016b