Skip to content

Releases: bmw-software-engineering/lobster

Release 0.13.2

24 Jul 15:56
Compare
Choose a tag to compare
  • lobster-html-report

    • The timestamp for git SHA now appends UTC to make it clear about the timeszone.
  • lobster-codebeamer

    • The retry logic uses exponential backoff feature instead of retrying successively
      without any time gap. The exponential backoff factor is set to 1 so the
      interval of calls will be 1s, 2s, 4s, 8s and so on.
  • lobster-cpp:

    • Supporting comma-separated lists of tags in one line.
      The code snippet below shows that there are two tags, namespace.requirement_id1 and
      namespace.requirement_id2 in the same line.

    • If clang-tidy reports an error which is not part of the exclusion list given through
      --skip-clang-errors, then lobster-cpp repeats this error and prints it to standard out.

    • Include more characters like < and > as valid C++ function name characters,
      which are needed e.g. for C++ templating and operator overloading.
      That is, now an operator overload can be traced against a requirement.
      Here is an example:

      std::ostream& operator<<(std::ostream& os, const Fruit<double>& fruit) {
        // lobster-trace: namespace.requirement_id1, namespace.requirement_id2
        os << "Hi there!";
        return os;
      }

      With an earlier version this would result in a message like this:

      could not parse line
      file.cpp:10:15: warning: function operator<< traces to namespace.requirement_id [lobster-tracing]
      

Release 0.13.1

29 Jul 12:49
Compare
Choose a tag to compare
  • Introduced API functions:

    • apply_github_urls:
      Instead of running the tool lobster-online-report-nogit users
      can write their own Python scripts and import the function
      to achieve the same result as when running the tool.
    • cb_query_to_lobster_file:
      This function downloads items from codebeamer and serializes them in the
      LOBSTER interchange format to a file.
      This is similar to running the tool lobster-codebeamer.
  • lobster-report:

    • Removed the features to use the with kind and with prefix filter expressions
      and the with valid_status validation condition in the tracing policy.
      It is no longer possible to use those.
      The LOBSTER development team has made the design decision that filtering or
      validating the input items is not the duty of LOBSTER.
      The LOBSTER tools shall follow the philosophy to "do one thing only".
      If a user wants to filter out certain items, or make sure that the input is in a
      certain quality state, then the user has to take care to prepare the input data
      to LOBSTER accordingly.
      The reason behind this decision is to focus more on tool stability and tool
      qualification in the sense of ISO 26262.
      A tool with less features and less lines of code is easier to qualify.
      If really necessary, it takes only little effort to write a script and use the
      LOBSTER api to read *.lobster files (generated by e.g. lobster-trlc), filter it,
      and save it back.
  • lobster-cpptest

    • Improve the requirement detection regex. The sub-comment-blocks starting
      with @requirement and ending with @ would be considered.
  • lobster-cpp:

    • Fixed handling of --skip-clang-errors where a closing bracket ]
      needed to be appended to the error names.
      Previously the command line option had to be specified like this:
      --skip-clang-errors=clang-diagnostic-error]
      
      With this fix the bracket is not needed, as one would expect:
      --skip-clang-errors=clang-diagnostic-error
      
      See also issue 276.
  • lobster-codebeamer:

    • Improved error message in case the specified path to the configuration file
      is a directory and not a path.
    • Added error message if neither import_query nor import_tagged is specified
      in the configuration file.
    • Add warning message if the file given through the configuration parameter
      import_tagged contains references which cannot be converted to integer
      in base 10. Codebeamer IDs are always integer values, so such a reference
      cannot represent a Codebamer item.
  • lobster-online-report:

    • Fixed escaping of characters in paths.
      If a path contained whitespace or other characters that are not
      allowed in a URL, these are now properly converted.
      For example, whitespace becomes %20, or ß becomes %C3%9F.
    • Fixed issue on MacOS: The computation of the relative path between a file
      and the repository root failed unless all paths were given in a normalized
      form.
      Now paths are resolved before computing the relative path.
  • lobster-online-report-nogit:

    • Fixed escaping of characters in paths.
      If a path contained whitespace or other characters that are not
      allowed in a URL, these are now properly converted.
      For example, whitespace becomes %20, or ß becomes %C3%9F.
    • Improved the error message in case a file is not found.
      The tool exits with return code 1 instead of crashing with an exception.
  • lobster-html-report:

    • Fixed rendering of HTML in case the input data contained HTML code.
      If a LOBSTER item in the input file contained for example the text <s>
      in its name, then that was injected into the generated HTML.
      This caused an HTML injection issue.

Release 0.13.0

29 Jul 11:43
Compare
Choose a tag to compare
  • lobster-online-report-nogit

    This new tool is similar to lobster-online-report, but does not
    call the git tool to obtain information about the repository.
    Instead it relies solely on information provided by the user through
    command line arguments.

  • lobster-report

    • If there are zero items in one level of the tracing policy, then this level now
      shows a coverage of 0%.
      Previously its coverage was 100%.
      Note that the coverage ratio cannot be computed in a mathematical way if there
      are zero items, because the formula requires to divide by the total number of items.
      If this denominator is zero, obviously the division cannot be performed.
      So neither 100% nor 0% makes sense, but choosing 0% is the safe decision
      when the tool is used in a safety-critical context.
      Having zero input items is probably not what the user intended to do,
      and shall be notified about this empty input.
      The user has a greater chance to detect this empty input if the report shows 0% coverage
      compared to 100%, which indicates that everything is okay.
  • lobster-cpp

    • The file basename is used to construct the function UID.
      A counter is then appended to the basename to handle situations where files in
      different folders have the same basename.
      Now lobster-cpp and lobster-cpptest use the same logic to generate function UIDs.
    • The *.lobster output file uses the absolute path for location entries instead of a
      relative path.
      This simplifies the usage of the LOBSTER tools, for instance in a CI system, where
      different tools are called from different working directories.
  • lobster-codebeamer

    • Fix for handling references as a list of field names instead of a dictionary.
  • lobster-html-report

    • The SVG's in the HTML report were rendered on every use. Now the SVGs
      are rendered once and reused for at all the remaining occurences.
      This will reduce the overall HTML file size.
    • Displays custom data (if provided) in the top-right corner of the HTML report.
    • Added Markdown rendering support for the description field in the HTML report.
      Added a new command line flag --render-md to enable this feature.
  • Separate Coverage Reports

    • Separate coverage reports for unit tests (.coverage.unit) and system tests (.coverage.system).

lobster-0.12.2

19 May 15:17
Compare
Choose a tag to compare
  • lobster-online-report:
    Fix for git hash generation for submodules when the tool is executed from
    outside a git repository where the submodule is specified as a relative path.

  • lobster-cpptest:
    Add support for identical test case files in different folders:
    If test cases exist in different files with the same file names, same test case names
    and same line numbers, then previously these were treated as duplicate definitions
    by lobster-report.
    Now lobster-cpptest generates a unique ID by appending a counter to the file base
    name, which is used as tag in the final report.
    An alternative had been to use the absolute or relative path of the file instead of
    just the file base name, but that would have decreased the readability of the report.

  • lobster-html-report:

    • Fix bug where /cb appeared twice in codebeamer URLs, leading to an incorrect URL.
    • Fix bug where codebeamer URLs always pointed to the HEAD version of the codebeamer item,
      even if a specific version was given.
    • Add encoding tag to HTML header.
      This fixes rendering issues of symbols in the generated HTML file.

Release 0.12.1

24 Apr 09:04
Compare
Choose a tag to compare
  • Fix for timestamp generation of git hashes in lobster-html-report for git
    submodules.

  • Added configurable retry logic for HTTPS requests in lobster-codebeamer.
    Introduced support for two new YAML configuration parameters:

    • retry_error_codes: A list of HTTP status codes (e.g., [429, 503, 504]) that should trigger a retry.
    • num_request_retry: An integer specifying the maximum number of retry attempts if a request fails with a status code from retry_error_codes.
  • lobster-cpptest now writes orphan tests into all output files.

  • Fix for .netrc-based authentication handling in the lobster-codebeamer tool when
    fetching the machine name (domain name).

  • Fix for git hash generation when the lobster-online-report tool is executed from
    outside a git repository where the .git folder is not available.

  • lobster-cpp uses the relative file path of a c++ file to generate
    the unique identifier of a function in that file. This way files with identical
    names (but in different folders) are supported, and they can even have
    C++ functions with identical names without running into a
    "duplicate definition" problem.
    Previously only the file's base name was used.

  • Reformulate the summary message of lobster-online-report so that it becomes
    clear whether the input file has been modified, or whether a new output file has been
    created.

  • lobster-cpptest now displays a test-name instead of a fixture-name
    in the lobster-report and lobster-html-report.

  • Add command line argument --skip-clang-errors to lobster-cpp.
    This argument allows the user to specify a list of clang-tidy
    errors which shall be skipped.

Release 0.12.0

31 Mar 09:56
Compare
Choose a tag to compare
  • Update installation instructions with pip3 and pipx.

  • lobster-trlc and lobster-json: All command-line arguments except --config and --out are
    moved to Yaml based config file. --config and --out command-line arguments are still supported.

  • Add a note to lobster-python
    that it can be used for Bazel files, too.

  • When running lobster-python --activity the tool assumes that Python methods
    with the following name pattern are tests:

    • name starting with _test or test
    • or name ending with test

    Previously only test was considered.

Release 0.11.0

04 Mar 10:13
Compare
Choose a tag to compare
  • Change the behavior of lobster-codebeamer such that an output file is always created,
    even if the codebeamer server has returned zero items.

  • Include dependency to PyYAML in requirements.txt.

  • lobster-trlc now requires at least version 2.0.1 of TRLC,
    as TRLC 2.0.1 contains the important bug fix
    Detecting duplicated components,
    including an essential improvement in the
    Language Reference Manual.
    Without the TRLC bug fix lobster-trlc will not detect all traces if TRLC authors exploit the bug.
    Imagine the following TRLC snippet:

    Requirement Windscreen_Wiper {
      derived_from = [Safety_Critical_Requirement]
      derived_from = [Boring_Requirement]
    }
    

    Here the trace from Windscreen_Wiper to Safety_Critical_Requirement will not
    be detected by lobster-trlc if the version of trlc is less than 2.0.1.

  • The --commit command line argument from lobster-online-report tool is now
    removed and no longer available. It was redundant and is already replaced by the
    automated git hash feature that doesn't require user intervention and is handled
    by the code. See changelog 0.10.0 for more information.

  • Removed limitation from lobster-cpptest which skipped output files that had
    less than two LOBSTER items.

  • Minor fix of handling multithreading in lobster-json.

  • Introduced YAML-based configuration for lobster-json, replacing individual command-line arguments.

    • Added a --config argument to specify a YAML configuration file.
    • Eliminated the command-line arguments --single, --inputs, and --inputs-from-file,
      unifying user interaction across all lobster tools. Values can now be specified
      using the YAML configuration file.
    • The argument --out is still supported as command line argument, and takes
      precedence over any value given in the YAML configuration file.
  • The title and placeholder for search box is renamed to Filter in
    lobster-html-report tool.

  • If the constraint valid_status is omitted in the configuration file of lobster-report,
    then no status check is performed.

  • lobster-html-report gives consistent error message if the input file does not exist,
    even if the user specified no value. In that case the tool tries to open the file
    called lobster.report in the current working directory as input, and it gives the
    same error message if that file does not exist.

  • lobster-codebeamer used to append /cb to the root parameter in config file
    and now the user explicitly needs to add it while specifying the root.

Release 0.10.0

11 Feb 11:59
Compare
Choose a tag to compare
  • lobster-html-report adds actual git commit hashes to the source in the HTML report.
  • lobster-online-report - now contains the actual git commit hashes when the user executes the tool.
  • The configuration management for the following tools has been migrated from command-line arguments to YAML configuration files.
    • lobster-cpptest
    • lobster-codebeamer

Release 0.9.21

17 Dec 09:08
Compare
Choose a tag to compare
  • lobster-codebeamer now supports query string along with query ID, query string (cbQL) can be passed
    as a command line argument to --import-query for the tool lobster-codebeamer.

  • lobster-html-report has the following updates.

    • Filter items by status (Ok, Missing, Partial, Warning, Justified)
    • Hide/Unhide Issues.
    • Search in issues and detailed report.
  • Add support to view version for lobster tools for following tools:

    • lobster-ci-report
    • lobster-codebeamer
    • lobster-cpp
    • lobster-cpptest
    • lobster-gtest
    • lobster-html-report
    • lobster-json
    • lobster-online-report
    • lobster-python
    • lobster-report
    • lobster-trlc

Release 0.9.20

05 Dec 08:13
Compare
Choose a tag to compare
  • Add --compile-commands flag to lobster-cpp. This allows to specify a path to the
    compile command database and is effectively a wrapper around the -p argument of
    clang tidy. See the official documentation of clang tidy for more details on this
    parameter.

  • lobster-cpptest writes absolute paths into its *.lobster output files instead of
    paths relative to the current working directory.

  • If a *.lobster file contains a tag more than once, then an error message
    ("duplicated definition") is printed for each consecutive entry with the same tag,
    instead of printing it just for the first entry.
    The following tools are affected:

    • lobster-codebeamer
    • lobster-report
  • lobster-gtest accepts XML nodes other than testcase, but ignores them.