==============================
CodePeer 2.2 NEW FEATURES LIST
==============================

Copyright (C) 2026, AdaCore

This file contains a complete list of new features in version 2.2 of
CodePeer. A full description of all CodePeer features can be found in
the CodePeer documentation.

An ISO date (YYYY-MM-DD) appears in parentheses after the description line.
This date shows the implementation date of the feature. Any 2.2.0w wavefront
subsequent to this date will contain the indicated feature, as will any
subsequent 2.2 or later release.

NF-LB07-013 CSV output (2012-11-08)

  The codepeer_msg_reader tool has a new switch -csv to output
  messages in CSV format, suitable for use in spreadsheets, and
  containing extra information such as whether messages are new, or
  have been reviewed.

NF-LA17-030 Support for -jobs 0 (2012-10-17)

  The -jobs switch now accepts the special value 0 which means use
  the number of cores available on the machine.

NF-LA10-017 New switch: -output-msg (2012-10-15)

  CodePeer now takes a new -output-msg switch when using project
  files, and outputs compiler-like message directly by calling
  codepeer_msg_reader automatically.

NF-LA03-005 Improved handling of -output-only (2012-10-04)

  The -output-only switch is now taken into account by all tools
  (codepeer_msg_reader, GPS, ...) in addition to the HTML and Text
  output.

NF-LA02-017 -background enabled by default (2012-10-02)

  The -background codepeer switch is now the default, so it's no
  longer needed to specify it explicitly. The -no-background is
  available to get the previous default behavior.

NF-LA01-013 New switch: -level (2012-11-19)

  A new -level switch is introduced, which replaces -global and
  -quick switches, and introduces new levels of analysis, to allow
  purely local and fast analysis, up to fully global analysis,
  depending on the needs.

NF-L926-013 Ranking info for warning messages (2012-09-26)

  codepeer_msg_reader now prepends the ranking information
  (low/medium/high) in front of warning messages, to make it easier
  to find messages of a particular ranking.

NF-L914-009 Improved recognition of stub subprograms (2012-10-25)

  When CodePeer encounters a routine whose body consists of only a
  raise statement and for which No_Return has not been specified, it
  is assumed that this is a stub routine whose "real" implementation
  has not been provided. Calls to the subprogram are not treated as
  errors but instead as calls to a subprogram whose implementation
  is unknown.

NF-L912-020 Improved handling of non-terminating tasks (2012-09-18)

  CodePeer now has better support for tasks that run indefinitely,
  and does not issue a warning in that case.

NF-L830-010 Improved handling of Ctrl-C (2012-08-31)

  When interrupting a CodePeer run using Ctrl-C, a clean up is now
  done and in particular no lock file is left, which makes it easier
  to re-run CodePeer afterwards.

NF-L605-017 More precise treatment of floating-point values (2012-08-02)

  CodePeer now analyzes more precisely code involving floating-point
  values, by doing the same kind of path-sensitive analysis as the
  one that was already implemented for integers. Also, CodePeer
  avoids systematically generating medium level messages for
  possibly failing assertions involving floating-point values.

NF-L502-011 Suppress whole directory via MessagePatterns (2012-09-24)

  New attribute in the MessagePatterns file allows Codepeer to apply
  a rule to all the messages coming from files in a particular
  directory.

NF-L419-020 Wildcards in Thread_Entry_Point Annotate pragmas (2012-05-10)

  CodePeer now supports the same wildcard syntax in a
  Single_Thread_Entry_Point or Multiple_Thread_Entry_Point Annotate
  pragma as has long been supported for the -daemon and -reentrant
  command line options.

NF-L419-017 More precise analysis of standard arithmetic (2012-04-23)

  CodePeer now analyzes more precisely code involving standard
  arithmetic functions, such as Sin and Cos, by taking into account
  the postconditions of these functions giving bounds and results
  for special values.

NF-L326-002 CodePeer now takes pragma Unreferenced into account (2012-04-03)

  In the case of an assignment to a variable which is subject to an
  Unreferenced pragma (which indicates that the variable will never
  be read), CodePeer no longer generates a useless "unused
  assignment" warning.

NF-L306-031 Improved handling of pragma No_Return (2012-09-07)

  In addition to K915-016, CodePeer does not issue a message anymore
  that a subprogram will "fail for all possible inputs", if the
  subprogram has a pragma No_Return.

NF-L223-020 Support for project files (.gpr) (2012-08-01)

  CodePeer now supports GNAT project files on the command line, so
  that it is possible to do e.g: codepeer -Pproject. Previously,
  support for .gpr files was only available from the GPS IDE.
  Consequently, the use of .library files is now deprecated (but
  still supported) in favor of .gpr files.

NF-L222-021 Precise analysis of int to float conversions (2012-11-26)

  The treatment of integer to float conversion was imprecise,
  leading to false positive messages. For example, CodePeer did not
  realize that Float(0) = 0.0. A precise analysis of such
  conversions is now implemented.

NF-L206-026 CodePeer web server and message editing (2012-11-18)

  CodePeer now comes with an optional web server which can serve the
  HTML pages it produces, and allows users to edit messages manually
  from their web browser on a remote machine.

NF-L131-016 More flexibility in handling MessagePatterns files (2012-09-28)

  Codepeer and codepeer_msg_reader now allow specifying an alternate
  MessagePatterns.xml file on the command line. Both executables
  also support additional patterns in a secondary .xml file.

NF-L121-001 More precise analysis of concatenation bounds (2012-03-01)

  CodePeer now correctly issues no warning when the result of
  concatenating two arrays is passed as an actual parameter and the
  subtype of the corresponding formal parameter is unconstrained.
  CodePeer assumes that the low bound of such a formal parameter
  satisfies the constraints of the index subtype even if the bounds
  define a null range.

NF-KC08-015 Documentation converted to sphinx (2012-01-23)

  The documentation format was changed, so that we can produce nicer
  looking output. In particular, the new format provides an
  integrated search feature over all pages of the manual.

NF-KB28-027 Improved race condtion analysis for singleton tasks (2012-03-15)

  In some cases, CodePeer is able to perform more precise race
  condition analysis if it is known that exactly one object of some
  given task type is declared. Previously, this was known only in
  the case of an anonymous task type. CodePeer is now able to detect
  this situation in some common scenarios involving named task
  types.

NF-K915-016 Improved handling of pragma No_Return (2011-09-15)

  Codepeer now correctly handles calls to subprograms with pragma
  No_Return, and does not issue a warning that such a subprogram
  does not return.

NF-K210-031 More precise analysis of array bounds (2012-03-01)

  CodePeer now understands that the bounds of a subprogram parameter
  of an unconstrained subtype satisfy the constraints of the index
  subtype if the bounds define a non-null range. Previously CodePeer
  conservatively assumed that out-of-subtype array bounds were
  possible in more cases.
