#plain-text #requirements #trace #ast #collect #framework #link

mantra-lang-tracing

Contains functionality needed to collect requirement traces from code or plain text files for the mantra framework

6 releases (breaking)

0.6.1 Jul 4, 2024
0.6.0 Jul 1, 2024
0.5.0 Jun 14, 2024
0.4.0 Jun 13, 2024
0.1.0 Apr 29, 2024

#541 in Text processing

Download history 38/week @ 2024-07-23 19/week @ 2024-07-30 1/week @ 2024-08-06 7/week @ 2024-08-13 5/week @ 2024-08-20 18/week @ 2024-08-27 2/week @ 2024-09-03 23/week @ 2024-09-10 14/week @ 2024-09-17 35/week @ 2024-09-24 14/week @ 2024-10-01 24/week @ 2024-10-08 93/week @ 2024-10-15 5/week @ 2024-10-22 2/week @ 2024-10-29 5/week @ 2024-11-05

122 downloads per month
Used in 6 crates (4 directly)

MIT license

22KB
442 lines

mantra-lang-tracing

This crate contains functionality needed to collect requirement traces from code or plain text files. Traces are a link between requirement definitions and where they are implemented in code.

Usage

Plain text collector

The PlainCollector may be used to collect traces from plain text files. Traces with the form [req(<requirement id(s)>)] are collected line by line.

Example:

This line has a valid trace. [req(valid_trace)]

Traces cannot span multiple lines. [req(
invalid_trace)]

AST collector

The AstCollector may be used to collect traces from the abstract syntax tree of a code file. It uses tree-sitter to create the AST, and allows to define a collector function that tries to collect traces from AST nodes.

This collector may be used as a base to create trace collectors for programming languages.

Specifying requirement IDs

The extract_req_ids*() functions offer a consistent way to extract requirement IDs from traces. They should be used in custom collector implementations, to keep the same syntax for specifying IDs.

Syntax:

ids = id , {(",", id)} ;
id = {(id_part, "." )}, id_part ;
id_part = escaped_id_part | unescaped_id_part ;
escaped_id_part = '"', ?any char except '"', '`', or '.'?, '"' ;
unescaped_id_part = ( digit | rust_identifier ) , { digit | rust_identifier } ;

Examples:

"escaped-id".sub_id

1234."digit-only-main-id"

first_id, second_id

Dependencies

~1.4–4.5MB
~109K SLoC