Description of the format of C-STAT’s internal database

Technical Note 210218

Arkitekturer:

All

Komponent:

general

Uppdaterad:

2021-03-08 07:54

Introduction

C-STAT stores its persistent data in a SQLite3 database. This database can, for example, be queried directly as an alternative to running icstat.exe or using the IAR Embedded Workbench to extract the messages of a previous analysis.

This Technical Note describes some of the database tables that are relevant if you want to access messages or suppression information from the database directly.

Disclaimer

  • The descriptions are for C-STAT version 2.1.0.
  • This format is subject to change in future versions of C-STAT

 

Discussion

Internally in C-STAT messages are called warnings and checks are called properties. Unless explicitly stated, all fields have type string.

TABLE warnings

The table representing the regular messages looks like this:

Column Description
warning_id (integer) Unique numbering that increments for each found message.
warning_hash Unique hash of each message.
property_id Internal id for the check(s).
property_alias Name of the check(s). Multiple identical checks are separated by commas.
file_name Absolute path of the file where the message was found.
src_name Absolute path of the source file that was analyzed when the message was found.
fn_hash Unique hash of the function (or global scope) where the message was found.
line_id Internal information mapping the message to a node in the Abstract Syntax Tree (AST).
implied_id Internal information mapping the message to a node in the AST.
line_num Line number of the message.
iar_seq Sequential line number of the message. Basically, the line number a message would have if all includes were added in a single file. Used for message suppression.
msg The informational output of a message.
encoded_trace Trace information (if any).
full_trace Not used.
severity Severity of the message - Low, Medium or High.
column_num Column number of the message.

TABLE link_warnings

The table representing the link warnings is stored in the link_warnings table and have the same columns as the warnings table.

Note that: The information in the link_warnings table is deleted and repopulated in between every link analysis run, which can make the ordering of the messages differ.

TABLE warnings_meta

The table warnings_meta holds the information on suppressed messages.

Column Description
warning_hash Hash of the message. Matches the hash in the warnings or link_warnings table.
meta_key Always status.
meta_value Always 1.

TABLE suppression_directives

This table holds the information on all locations where a suppression comment and/or pragma directive is specified in the project.

Column Description
suppress_id (integer) Unique id of the directive that increments for each found directive.
property_id Name of the check used in the directive.
iar_seq_start

Starting sequential line number of the directive. Correlates to the iar_seq number in the warnings and link_warnings tables.

iar_seq_end Final sequential line number of the directive. Correlates to the iar_seq number in the warnings and link_warnings tables.
col_start Not used. Always 0 (zero).
col_end Not used. Always 0 (zero).
line Line number of the file where the directive is located.
file File where the directive is located.
src Source file that was analyzed when the directive was found.

If a directive is placed in a header file it might occur multiple times in the table, with one entry for each source file that includes it.

Conclusion

C-STAT messages and suppression information can be retrieved directly from C-STAT’s internal database.

Det här innehållet finns tyvärr inte på svenska.

Vår webbplats finns främst på vårt koncernspråk engelska, förutom det innehåll för investerare som vi är lagstadgade att kommunicera på svenska. Vi rekommenderar att du besöker vår globala webbplats på engelska för att få en bättre upplevelse.

Vi stöder inte längre Internet Explorer. För att få bästa möjliga upplevelse av iar.com rekommenderar vi att du uppgraderar till en modern webbläsare som Chrome eller Edge.