Channels ▼


Detecting Endian Issues with Static Analysis Tools

Static Analysis Tools Features: Built-in Detection and Extendable Detection

Some endian issues can be found with a static analysis tools' built-in features. These may or may not be flagged as specific to endianness, but due to a side-effect of another issue: For example, in the MISRA standards there are numerous rules which pertain to issues using multi-byte storage across different datatypes. These are not specifically intended to enforce errors in endian processing but may indeed, as the general pattern they are detecting is common.

If the static analysis tool has extendable features there can be many more custom issues detected. Key requirements for developing extensions are:

  1. Define syntactical specifications identifying error case(s).
  2. Define syntactical specifications identifying passing case(s).
  3. For both 1 and 2, if possible, define any flow sensitive issues to consider.

For best practices on the above, the error case must always give some possible hint to the solution. And if the defect is identified with a path which can be traced with the static analysis tool, fewer false positives for the error case can be the result.

Developing custom static analysis tools to detect issues requires that two main questions be answered first:

  1. What is your strategy for coding:
    • "Endian-neutral?" "Endian-protocols?" or a blend?
  2. What coding issues are you to enforce:
    • "what are the violations?" "what are the correct cases?"

Once those questions are answered, in particular question 2), static analysis rules can be developed to detect issues and enforce correctness.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.