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
122 downloads per month
Used in 6 crates
(4 directly)
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