The Toolset

Product History

Version 2.3 series

Version 2.3b 17/Apr/2007:

More MISRA C2 work done as understanding of the limitations of this new revision grows. No substantial changes to the interface.

Version 2.3a 07/Feb/2005:

Only interface changes took place in this release. The parsing engine was untouched. Colour icons have been added to front page and the interface cleaned up. An initial implementation of MISRA C2 was added. Directories called CORE were removed automatically. This is no longer done. The object information widget is now resizable.

Version 2.2 series

Version 2.2i 18/Feb/2004:

Directory widget enhancements to improve convenience. Reclassified several messages as Constraint violations. Describe relationship between integer and floating conversions more comprehensively. Modified the way the Auditor handles fatal errors when building a file collection. 1 defect fixed, (very long cycle unprotected NULL reference which fired for the first time recently).

Version 2.2h 15/Oct/2002:

Modified or enhanced treatment of MISRA v1 rules 90, 94, and 95. Detection of some additional subtle precedence failures. Sub-directories handled in the Auditor allowing complete trees to be handle conveniently. 1 defect related to undeclared arrays fixed.

Version 2.2g 07/May/2002:

More work on MISRA plus enhanced report options including various forms of line count. Recognition of some C99 extensions added.

Version 2.2d 21/Dec/2001:

More work on MISRA plus enhanced visualisation functions in the Inspector including data-flow visualisation for individual objects. Some important GNU C extensions now parsed correctly and tree calculations and display in the Auditor enhanced. Additional help added. New metric displays correlating system and component complexity.

Version 2.2c 31/Oct/2001:

More work on MISRA plus a new animation in the Primer; function digraph visualisation in the Inspector and our latest metrics research embodied in global metrics analysis in the Auditor.

Version 2.2b 10/Sep/2001:

More work on MISRA conformance on a number of CRs to accompany the recent extensive activity by the MISRA committee in defining a standard MISRA conformance suite. Oakwood Computing Associates are assisting in this venture.

Version 2.2a 02/Aug/2001:

Corrective patch for compiler personality problem (CR 1257) plus more work on MISRA.

Version 2.2 15/Jul/2001:

A lot of work inside the parsing engine with around 50 new messages plus the release of the Auditor role.

Interface

  • MISRA rule subsets page added to allow users of this widely-known safer subset to check deviation procedures.
  • A new tree widget in the Auditor allows analysis of used and unused code inside calling trees.
  • Enhancements to Auditor reporting.
  • Documentation of compiler personality setup in Help.

Parsing engine

  • Some re-structuring to do more sophisticated data-flow analysis and a lot of work associated with MISRA compliance associated with our role in helping to define a formal MISRA compliance test suite.

Version 2.1 serie

Version 2.1c 12/Feb/2001:

There are now four products each one enabled by an appropriate licence from the master product as described above. A simple upgrade path exists between them so the engineer can buy only what they need.

Interface

  • Include file coverage is shown graphically.
  • A sophisticated file differencing capability has been added to support legacy environments.

Parsing engine

  • The parsing engine can now enforce just about all of the required MISRA rules capable of being enforced.

Version 2.1 30/Nov/2000:

There are now three products each one enabled by an appropriate licence from the master product as described above.

Also note that an important change has been made to the licensing. Previous licences will not work with version 2.1 products. Registered users will be informed of their new password.

Interface

  • The interface has been upgrade to reflect the new product line.
  • There is now a shortcut list under the File menu for opening projects
  • The user-defined standard capability in SCT Inspector has been refined.
  • There is a new message alias option which allows the toolset to issue user-defined codes for its messages instead of its built-in codes. This allows the output of the toolset to be compared with other analysers for example when using diverse auditing techniques on critical systems. It also allows the programmer to use codes they are familiar with rather than learning a new set.
  • A number of other perfective modifications have been added.

Parsing engine

  • Most of the changes are perfective with more attention applied to MISRA conformance checking.

Version 1.3 series

Version 1.3 27/July/2000:

Sorry for the wait. A great deal of enhancement has been done on the toolset including the new dynamic analyser option, available shortly as an add on.

Also note that an important change has been made to the licensing. Version 1.2 licences will not work with version 1.3 products. Registered users should be informed of their new password.

Interface

  • The licence can now be upgraded with a reset licence button on the licence page.
  • On initial load, the toolset will ask for an optional compiler personality file. This is part of an exercise to hide compiler non-standard foibles from the user as well as we can. We will upload new files from time to time to our site for users to download for specific architectures. The compiler personality now appears under the Behaviour menu.
  • Built in KANJI converter for Japanese market which operates with EUC, New JIS, NEC JIS, Old JIS and shift JIS. We owe a debt of thanks to Ken Lunde at Adobe for making his technology available to us. These appear under the Behaviour menu.
  • Added keyboard accelerators for message up and down, quit and clear.
  • Option to add current directory at top of list.
  • Added a new SIGNPOST category to inspections. These highlight code features which if wrong could crash a critical system. In essence the toolset lays signposts for human inspectors to follow.

Parsing engine

  • 50 new messages in the parsing engine associated with ISO C limits, some new fault modes, more detailed analysis in the pre-processor and the new SIGNPOST facility.
  • Implementation or clarification of MISRA messages rules 18 , 43, 49, 52, 60, 95. MISRA required rule compliance is now at around 95%.
  • Implemented C99 ll and LL types, long long and a number of other features.
  • Implemented %lc and %ls format from the Normative Addendum.

With grateful thanks to many people around the world who gave us such useful feedback. We would name them if we could.

Version 1.2 series

Version 1.2 24/Jan/2000:

An important change has been made to the licensing. The licensing is now personal. It should only be used by the licensee but can be used by the licensee on any machine available to him or her. We think this is a fairer system, (as did a number of our users). Another reason was that we had any number of problems with interesting foibles of the filing systems we were working with, (alright, Windows). This scheme is much simpler and hopefully completely transparent. Because of this, we have changed the minor version number so it can be installed alongside the SCT 1.1 series.

This version mostly concentrated on improving MISRA compliance in the underlying parsing engine in line with our policy for this important standard, with one or two suggestions from users incorporated into the look and feel of the interface to make things more obvious. We also included the MISRA compliance suite to improve the educational side of the program

Interface

  • Bundled the Oakwood Computing MISRA C compliance suite along with commentary to enhance the educational aspects of the toolset. In essence, the widget walks you through the MISRA suite explaining things with code examples and making various comments on the MISRA rules themselves including their enforceability.
  • Windows balloon help moved to just below the originating widget like its Linux stablemate. Thie turned outto be an interesting foible of Windows.
  • The registration screen now appears at the front, (yes, another interesting foible of Windows).
  • Start up sequence is now a little slicker.
  • Modified the browser searching message to be a little more explicit.
  • Adjusted balloon help so that it does not disappear off the side, (both the Linux and Windows window managers allow this to happen for some inexplicable reason).
  • Changed the default suffix for projects FROM .prj TO .cpj because lots of other Windows programs use .prj and it gets very confusing.
  • Re-implemented type sizes as options not sliders giving a much cleaner interface.
  • Added balloon help to the product registration banner to explain the licence usage and requirements for each button more clearly. This had caused a few users some puzzling moments for which we apologise.
  • Improved diagnostics. If the toolset gets itself into a twist internally, it will invite the user to e-mail a log file to us. This should allow us to pin problems down very quickly without bothering the user too much.

Parsing engine

  • 20 new messages in the parsing engine, mostly associated with further MISRA compliance. MISRA required rule compliance is now at 94%.
  • Fixed subtle defect concerned with the interpretation of integral constant expressions. The algorithm was correct but a potential divide by zero was not protected.
  • Modified grammar to pick up a common syntax mistake and provide a more enlightening error message than the customary 'syntax error' emitted by C compilers and many tools in this context.
  • Increased yacc grammar stack space so that the parser does not overflow on pathologically large switch structures.
  • Re-wrote constant expression handling as part of C99 ongoing development.
  • Improved detection of dangerous scope changes for local objects.

Version 1.1 series

Version 1.1b, 25/Oct/1999:

We apologise for the delay in this. We decided to do some major internal restructuring of the interface which allowed us to do some nice new things. We hope its worth waiting for.

Interface

  • Added ISO C standard to public domain standards. Messages can now optionally appear with this standard's section numbering.
  • Added major new option to allow the user to use, create and edit their own standards for either internal compliance or for detective work, (e.g. forensic checking, looking for a single message emitted amongst numerous files).
  • Added option to show only those warnings associated with standards, (local or public). Previously they appeared interspersed with all the others.
  • Added example scenarios under the Help menu.
  • More sophisticated handling of window closing on NT to allow for its somewhat unusual behaviour.
  • Confirm option on toolset closedown.
  • "All files" selection now available in the project, output and C source file selection dialogs. C source file selection suffices extended with .H and .CC. Project and output file selection dialogs extended with .PRJ and .TXT.
  • Added function name to both testability and inspection priority windows.
  • Generalized expression complexity widget as a complexity trigger widget adding ability to set maxima for cyclomatic complexity, logarithmic path complexity and function stack size.
  • Added stack use analysis to the metrics window.
  • Added function prototype metric based on our extensive research on its relationship with static defect. This includes a comparison with the population at large.
  • Added choice of font size for help, text and animation fonts. These determine the size of the toolset window in the window management so effectively allow you to resize consistently with the font. The changes take effect at the next toolset invocation. We could have done general resizing but it is the font that determines things anyway so we let the font drive the resize.
  • Added preference to show embedded messages in either flat, sunken or raised topography, (Thanks Rick).
  • Main screen icon changed to be consistent with new products to be announced shortly. It is now a "Safer C" with a funny little squiggle next to it which is an abbreviation for a crack or fault.

Parsing engine

  • Refined function prototype warnings prior to introducing new metric.
  • Added triggers for violation of extreme metric limits.
  • Improved MISRA compliance coverage against MISRA compliance validation suite for rules 96 and 98.*
  • Implemented check for undefined behaviour number 36.*
  • Fixed low-level defect which caused parser to stop on certain illegal inputs.*
  • Fixed defect in dataflow analysis. For deeply nested structures, the slicing algorithm was wrong.

Version 1.1a, 31/July/1999:

Interface

  • Extended directory search widget to include all Windows local volumes.
  • Start up in DEMOS directory by default.
  • Added shortcut button to include the ISO C90 standard header files in the include file search list.
  • Added discussion of arithmetic formats under Help->Discussions
  • Changed start up temporary file directory to <MAINDISK>\Temp (for example C:\Temp) on Windows and /tmp on Linux.
  • Added down and up buttons to include directory search list to allow changes to the order in which include directories are searched to be made simply.
  • Added option under Behaviour->Configuration Options to show ONLY those messages which were suppressed using the //+message or //-message syntax.
  • Centralised pop-up help about subject window.
  • Added "Check File ..." and "Recheck File ..." options to File menu. They simply mimic the equivalent functionality under the first two icons but were requested by a number of users.

Parsing engine

  • Further support for MISRA-C.
  • Implemented C9X and C++ new-style comment recognition, (// ... to end of line).
  • Give more detailed messages for misuse of unsigned variable.
  • Fixed obscure defect in block searching. Never reported externally.
  • Changed method of reporting on potential confusion of '/' and '\' in multibyte character constants.
  • Rewrote evaluation order checking to detect some very subtle issues.
  • Improved initialisation checking when uncertain of state.
  • Fixed defect in declaration animation. Never reported externally.
  • Added option to allow messages to be individually switched off and on in the code by inserting new-style comments. For example, //-COMMAUSE suppresses COMMAUSE messages until a //+COMMAUSE is encountered. Redundant suppression or enabling has no effect.

Version 1.1, 07/Jul/1999:

A beta of the toolset has now been released as a pure Internet product.