Skip to content

Commit f622779

Browse files
committed
Adapt tool categories
Makes the categories more open and clear for new tools
1 parent af23090 commit f622779

3 files changed

Lines changed: 52 additions & 33 deletions

File tree

.github/ISSUE_TEMPLATE/submit_tool.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,17 @@ body:
7272
id: tool_type
7373
attributes:
7474
label: Tool category
75-
description: Specific use and type of this tool
75+
description: Specific use and type of this tool. For more details about the categories, please visit the https://arewesafetycriticalyet.org/tooling/tools-list website.
7676
options:
7777
- "code-coverage"
7878
- "requirements-traceability"
7979
- "compiler"
80-
- "test-runner"
80+
- "testing"
8181
- "formal-verification"
8282
- "static-analysis"
83-
- "tests-generation"
8483
- "package-manager"
85-
- "profiler"
86-
- "debugger"
84+
- "profiling"
85+
- "debugging"
86+
- "other"
8787
validations:
8888
required: false

arewesafetycriticalyet.org/src/components/ToolsList/available-tools.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
},
7171
{
7272
"name": "cargo-nextest",
73-
"type": "test-runner",
73+
"type": "testing",
7474
"url": "https://nexte.st",
7575
"description": "Next-generation test runner for Rust",
7676
"license": "Apache 2.0 & MIT"
@@ -98,7 +98,7 @@
9898
},
9999
{
100100
"name": "defmt-test",
101-
"type": "test-runner",
101+
"type": "testing",
102102
"url": "https://github.com/knurling-rs/defmt",
103103
"vendor": "Ferrous Systems GmbH",
104104
"description": "Embedded testing framework",
@@ -132,7 +132,7 @@
132132
},
133133
{
134134
"name": "flamegraph",
135-
"type": "profiler",
135+
"type": "profiling",
136136
"url": "https://github.com/flamegraph-rs/flamegraph",
137137
"description": "Flame graph profiler for Rust",
138138
"license": "Apache 2.0 & MIT"
@@ -170,7 +170,7 @@
170170
},
171171
{
172172
"name": "Lauterbach Trace32 Debugger",
173-
"type": "debugger",
173+
"type": "debugging",
174174
"url": "https://www.lauterbach.com/",
175175
"vendor": "Lauterbach",
176176
"description": "Lauterbach‘s TRACE32® tools are a suite of leading-edge hardware and software components that enables you to analyze, optimize and certify all kinds of embedded systems.",
@@ -193,7 +193,7 @@
193193
},
194194
{
195195
"name": "PLS UDE",
196-
"type": "debugger",
196+
"type": "debugging",
197197
"url": "https://www.pls-mc.com/products/universal-debug-engine/",
198198
"vendor": "PLS Programmierbare Logik & Systeme GmbH",
199199
"description": "UDE® Universal Debug Engine is the powerful development tool for debugging, tracing, and testing embedded software for a wide range of multicore SoCs and microcontrollers.",
@@ -218,7 +218,7 @@
218218
},
219219
{
220220
"name": "TESSY",
221-
"type": "test-runner",
221+
"type": "testing",
222222
"url": "https://www.razorcat.com/en/product-tessy.html",
223223
"vendor": "Razorcat",
224224
"description": "Qualified unit testing tool",
@@ -236,7 +236,7 @@
236236
},
237237
{
238238
"name": "VectorCast",
239-
"type": "test-runner",
239+
"type": "testing",
240240
"url": "https://www.vector.com/us/en/products/products-a-z/software/vectorcast/",
241241
"vendor": "Vector Software",
242242
"description": "Qualified test runner and generator for safety-critical applications",

arewesafetycriticalyet.org/src/components/ToolsList/toolsList.tsx

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,25 @@ import remarkGfm from "remark-gfm";
44
import Link from "@docusaurus/Link";
55
import styles from "./styles.module.css";
66
import raw_tools_list from "./available-tools.json";
7+
/*
8+
* `testing` ... for tools that are primarily used while testing. Merging `test-runner` and `test-generation`. `mutest-rs` would imo also fall into this category, because it helps to improve your testsuite, and improving your testsuite is a testing activity. Without tests, `mutest-rs` would have nothing to check against.
9+
* `formal-verification` ... It may be for testing, but can also be part of implementation. e.g. specifying contracts in your source code
10+
* `static-analysis` ... `formal-verification` is part of this, so we could combine those two, but since we already have \~3 tools dedicated to `formal-verification` and I expect this to grow, having them separate is ok
11+
* `profiling` ... rename of `profiler`, because it better fits the *activity* intent
12+
* `debugging` ... same as `profiling`
13+
* `code-coverage` ... although mostly used while testing, you could measure coverage while executing your regular application or benchmarks. The name is not that fitting for an activity, but I cannot think of a better name right now
14+
* `requirements-traceability` ... is it's own activity, because you may trace requirements to source code, tests, or other artifacts
15+
* `package-manager` ... not an activity, but e.g. `supply chain management` also doesn't feel right. `cargo` is also special, because it manages dependencies, builds, tests, publishes your Crates... for `cargo`, the tags approach would be good
16+
* `compiler` ... `building` might be a better category name, but imo people looking for safety critical tools will expect a `compiler` category to be there, since a compiler is that important
17+
*/
718

819
type ToolType =
920
| "package-manager"
1021
| "compiler"
11-
| "test-runner"
22+
| "testing"
1223
| "formal-verification"
13-
| "profiler"
14-
| "debugger"
24+
| "profiling"
25+
| "debugging"
1526
| "requirements-traceability"
1627
| "static-analysis"
1728
| "code-coverage"
@@ -50,28 +61,33 @@ type ToolsList = {
5061
tools: ToolEntry[];
5162
};
5263

53-
const TOOL_TYPE_LABEL: Record<ToolType, string> = {
54-
"package-manager": "Package Managers",
55-
compiler: "Compilers",
56-
"test-runner": "Test Runners",
57-
"formal-verification": "Formal Verification",
58-
profiler: "Profilers",
59-
debugger: "Debuggers",
60-
"requirements-traceability": "Requirements Traceability",
61-
"static-analysis": "Static Analysis",
62-
"code-coverage": "Code Coverage",
63-
other: "Other",
64+
type ToolCategory = {
65+
title: string,
66+
description: string,
67+
}
68+
69+
const TOOL_TYPE_LABEL: Record<ToolType, ToolCategory> = {
70+
"package-manager": { title: "Package Managers", description: "Tools for automating the management of a project's dependencies, its compilation and linking." },
71+
compiler: { title: "Compilers", description: "Tools for transforming source code into either executable binaries or dynamic libraries." },
72+
testing: { title: "Testing", description: "Tools for evaluating the correctness of a program under a finite set of scenarios through its execution." },
73+
"formal-verification": { title: "Formal Verification", description: "Tools for obtaining mathematical assurance of the behavior of the program. Such as, for example, its required level of functional safety." },
74+
profiling: { title: "Profiling", description: "Tools for measurement of program performance along different types of resources." },
75+
debugging: { title: "Debugging", description: "Tools for interactively inspecting the dynamic behavior of a program." },
76+
"requirements-traceability": { title: "Requirements Traceability", description: "Tools to manage traces between requirements and related source and/or object code." },
77+
"static-analysis": { title: "Static Analysis", description: "Tools for analyzing source code without executing it." },
78+
"code-coverage": { title: "Code Coverage", description: "Tools for calculating the quality of a test suite, under the metric of code coverage." },
79+
other: { title: "Other", description: "Tools that fall under none of the other categories." },
6480
};
6581

6682
const TOOL_TYPE_ORDER: ToolType[] = [
6783
"package-manager",
6884
"compiler",
6985
"static-analysis",
7086
"formal-verification",
71-
"test-runner",
87+
"testing",
7288
"code-coverage",
73-
"debugger",
74-
"profiler",
89+
"debugging",
90+
"profiling",
7591
"requirements-traceability",
7692
"other",
7793
];
@@ -172,9 +188,9 @@ export default function ToolsList(): React.ReactElement {
172188
{TOOL_TYPE_ORDER.filter(
173189
(type) => (grouped_tools.get(type) ?? []).length > 0,
174190
).map((type) => {
175-
const anchor = "#" + TOOL_TYPE_LABEL[type]
191+
const anchor = "#" + TOOL_TYPE_LABEL[type].title
176192
return (
177-
<li><a href={anchor} >{TOOL_TYPE_LABEL[type]}</a></li>
193+
<li><a href={anchor} >{TOOL_TYPE_LABEL[type].title}</a></li>
178194
)
179195
})}
180196
</ul>
@@ -212,8 +228,11 @@ export default function ToolsList(): React.ReactElement {
212228
const toolsOfType = grouped_tools.get(type) ?? [];
213229

214230
return (
215-
<section id={TOOL_TYPE_LABEL[type]} key={type}>
216-
<h2 className={styles.typeHeading}>{TOOL_TYPE_LABEL[type]}</h2>
231+
<section id={TOOL_TYPE_LABEL[type].title} key={type}>
232+
<h2 className={styles.typeHeading}>{TOOL_TYPE_LABEL[type].title}</h2>
233+
234+
<p>{TOOL_TYPE_LABEL[type].description}</p>
235+
217236
<div className={styles.gridContainer}>
218237
<div className={styles.gridHeaderRow}>
219238
<div className={styles.gridHeader}>Tool</div>

0 commit comments

Comments
 (0)