Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces CSAF validation 6.3.16 (Grammar Checking) with a mocked grammar checker and refactors the existing text_check utilities into clearer spell vs grammar submodules, along with updated unit/integration tests.
Changes:
- Added validation
test_6_3_16plus expected-results fixtures and a unit test. - Refactored
text_checkintospell/,grammar/, and sharedutils/+test_utils/, and migrated tests accordingly. - Added
rstest_reuseto reduce duplication in checker-parameterized tests.
Reviewed changes
Copilot reviewed 19 out of 20 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| csaf-rs/src/validations/utils/text_check/utils.rs | Moves shared helpers/types (e.g., TemporaryTextCheckQuality, tokenization) into a shared utils module. |
| csaf-rs/src/validations/utils/text_check/mod.rs | Refactors module structure; adds grammar support and moves checker filtering into text_check root. |
| csaf-rs/src/validations/utils/text_check/test_utils.rs | Refactors shared test helpers (e.g., NoSuggestionChecker, ExpectedResultExt) used by integration tests. |
| csaf-rs/src/validations/utils/text_check/spell/mod.rs | Introduces spell submodule and enumerates spell checker implementations. |
| csaf-rs/src/validations/utils/text_check/spell/mock_spell.rs | Updates mock spell checker wiring to new module layout. |
| csaf-rs/src/validations/utils/text_check/spell/symspell_spell.rs | Updates SymSpell checker wiring to new module layout; adds marker-trait impl. |
| csaf-rs/src/validations/utils/text_check/spell/unit_tests.rs | Migrates spell unit tests; uses rstest_reuse templates for shared test cases. |
| csaf-rs/src/validations/utils/text_check/spell/integration_tests.rs | Migrates spell integration tests to new module layout with validator wrapper. |
| csaf-rs/src/validations/utils/text_check/grammar/mod.rs | Adds grammar submodule and enumerates grammar checker implementations. |
| csaf-rs/src/validations/utils/text_check/grammar/mock_grammar.rs | Adds mocked grammar checker implementation (known bad two-word sequences). |
| csaf-rs/src/validations/utils/text_check/grammar/unit_tests.rs | Adds grammar unit tests for the mocked checker. |
| csaf-rs/src/validations/utils/text_check/grammar/integration_tests.rs | Adds grammar integration test harness for 6.3.16. |
| csaf-rs/src/validations/utils/text_check/checkers/mod.rs | Removes old combined “checkers” module (split into spell/ + grammar/). |
| csaf-rs/src/validations/utils/text_check/tests/unit_tests.rs | Removes old shared tests module (migrated into spell/unit_tests.rs). |
| csaf-rs/src/validations/utils/text_check/tests/integration_tests.rs | Removes old integration tests module (migrated into spell/integration_tests.rs). |
| csaf-rs/src/validations/utils/text_check/tests/mod.rs | Removes old tests module root (tests now live under spell/ and grammar/). |
| csaf-rs/src/validations/test_6_3_16.rs | Adds the new 6.3.16 validation implementation and expected-results fixture. |
| csaf-rs/src/validations/mod.rs | Exports the new test_6_3_16 module. |
| csaf-rs/Cargo.toml | Adds rstest_reuse dev dependency. |
| Cargo.lock | Locks transitive deps introduced by rstest_reuse. |
Suppressed comments (9)
csaf-rs/src/validations/utils/text_check/spell/symspell_spell.rs:5
TextCheckeris not defined in the parentspellmodule, souse super::{SpellTextChecker, TextChecker};won’t compile. ImportTextCheckerfromtext_checkdirectly (and keepSpellTextCheckerfromsuper).
csaf-rs/src/validations/utils/text_check/spell/mock_spell.rs:6TextCheckeris not defined in the parentspellmodule, souse super::{SpellTextChecker, TextChecker};won’t compile. ImportTextCheckerfromtext_checkdirectly.
csaf-rs/src/validations/utils/text_check/grammar/unit_tests.rs:36TextCheckFinding.start/endare character indices; slicing&text[start..end]treats them as byte offsets. Use thechar_slicehelper for character-index spans.
assert_eq!(
&text[finding_1.start..finding_1.end],
"must followed",
"expected a grammar finding 'must followed'"
);
csaf-rs/src/validations/utils/text_check/grammar/unit_tests.rs:42
TextCheckFinding.start/endare character indices; slicing&text[start..end]treats them as byte offsets. Use thechar_slicehelper for character-index spans.
assert_eq!(
&text[finding_2.start..finding_2.end],
"for ensure",
"expected a grammar finding 'for ensure'"
);
csaf-rs/src/validations/utils/text_check/grammar/unit_tests.rs:48
TextCheckFinding.start/endare character indices; slicing&text[start..end]treats them as byte offsets. Use thechar_slicehelper for character-index spans.
assert_eq!(
&text[finding_3.start..finding_3.end],
"a products",
"expected a grammar finding for 'a products'"
);
csaf-rs/src/validations/utils/text_check/grammar/mock_grammar.rs:17
- The module-level docs don’t match the current implementation: punctuation is only stripped at the token boundaries, and the finding’s fragment is the two-word sequence (not just the first word). Keeping docs aligned avoids confusion for future checker implementations.
/// - Text is tokenized by whitespace, punctuation is stripped.
/// - Consecutive word pairs are matched against a built-in list of known incorrect sequences.
/// - When a bad sequence is detected, the first word of the pair is reported as the problematic fragment.
csaf-rs/src/validations/utils/text_check/grammar/mock_grammar.rs:52
- Using
unwrap_or(0)here would silently produce incorrect offsets iffindever failed. This should behave liketokenize_wordsand fail loudly with anexpect, since incorrect indices can cascade into invalid spans.
let offset = text[search_from..].find(token).unwrap_or(0);
csaf-rs/src/validations/utils/text_check/grammar/mock_grammar.rs:89
- This file already has unit tests in
grammar/unit_tests.rs, so this TODO is now stale and may mislead readers.
// TODO unit tests
csaf-rs/src/validations/utils/text_check/test_utils.rs:42
- Typo/grammar in doc comment: “a
Err” should be “anErr”.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
CSAF Validation Benchmark
Details
| Benchmark suite | Current: 9e1b317 | Previous: 2c93e4a | Ratio |
|---|---|---|---|
csaf_2_0_tests/6.1.1 |
100998 ns/iter (± 1526) |
131344 ns/iter (± 364) |
0.77 |
csaf_2_0_tests/6.1.2 |
41075 ns/iter (± 301) |
52957 ns/iter (± 148) |
0.78 |
csaf_2_0_tests/6.1.3 |
10711 ns/iter (± 106) |
13240 ns/iter (± 180) |
0.81 |
csaf_2_0_tests/6.1.4 |
21976 ns/iter (± 30) |
28135 ns/iter (± 227) |
0.78 |
csaf_2_0_tests/6.1.5 |
11386 ns/iter (± 10) |
13954 ns/iter (± 7) |
0.82 |
csaf_2_0_tests/6.1.6 |
31866 ns/iter (± 87) |
37953 ns/iter (± 49) |
0.84 |
csaf_2_0_tests/6.1.7 |
27546 ns/iter (± 120) |
33181 ns/iter (± 45) |
0.83 |
csaf_2_0_tests/6.1.8 |
68841 ns/iter (± 606) |
87611 ns/iter (± 200) |
0.79 |
csaf_2_0_tests/6.1.9 |
52266 ns/iter (± 179) |
68424 ns/iter (± 317) |
0.76 |
csaf_2_0_tests/6.1.10 |
125983 ns/iter (± 441) |
156555 ns/iter (± 288) |
0.80 |
csaf_2_0_tests/6.1.11 |
11895 ns/iter (± 22) |
14271 ns/iter (± 36) |
0.83 |
csaf_2_0_tests/6.1.12 |
25714 ns/iter (± 67) |
29162 ns/iter (± 49) |
0.88 |
csaf_2_0_tests/6.1.13 |
25697 ns/iter (± 20) |
32993 ns/iter (± 81) |
0.78 |
csaf_2_0_tests/6.1.14 |
53871 ns/iter (± 60) |
65965 ns/iter (± 110) |
0.82 |
csaf_2_0_tests/6.1.15 |
10672 ns/iter (± 23) |
12698 ns/iter (± 13) |
0.84 |
csaf_2_0_tests/6.1.16 |
38567 ns/iter (± 85) |
49546 ns/iter (± 69) |
0.78 |
csaf_2_0_tests/6.1.17 |
11631 ns/iter (± 3) |
13876 ns/iter (± 20) |
0.84 |
csaf_2_0_tests/6.1.18 |
12973 ns/iter (± 43) |
16382 ns/iter (± 109) |
0.79 |
csaf_2_0_tests/6.1.19 |
12666 ns/iter (± 34) |
15860 ns/iter (± 740) |
0.80 |
csaf_2_0_tests/6.1.20 |
11439 ns/iter (± 51) |
13732 ns/iter (± 24) |
0.83 |
csaf_2_0_tests/6.1.21 |
42224 ns/iter (± 1878) |
52570 ns/iter (± 259) |
0.80 |
csaf_2_0_tests/6.1.22 |
49512 ns/iter (± 164) |
59485 ns/iter (± 136) |
0.83 |
csaf_2_0_tests/6.1.23 |
13323 ns/iter (± 15) |
17292 ns/iter (± 205) |
0.77 |
csaf_2_0_tests/6.1.24 |
13093 ns/iter (± 14) |
16065 ns/iter (± 29) |
0.82 |
csaf_2_0_tests/6.1.25 |
29244 ns/iter (± 64) |
36418 ns/iter (± 50) |
0.80 |
csaf_2_0_tests/6.1.26 |
16285 ns/iter (± 50) |
20468 ns/iter (± 24) |
0.80 |
csaf_2_0_tests/6.1.27.1 |
11213 ns/iter (± 7) |
13624 ns/iter (± 27) |
0.82 |
csaf_2_0_tests/6.1.27.2 |
11161 ns/iter (± 10) |
13598 ns/iter (± 39) |
0.82 |
csaf_2_0_tests/6.1.27.3 |
11122 ns/iter (± 37) |
13131 ns/iter (± 17) |
0.85 |
csaf_2_0_tests/6.1.27.4 |
11407 ns/iter (± 7) |
13861 ns/iter (± 18) |
0.82 |
csaf_2_0_tests/6.1.27.5 |
11011 ns/iter (± 15) |
14460 ns/iter (± 179) |
0.76 |
csaf_2_0_tests/6.1.27.6 |
11063 ns/iter (± 10) |
13734 ns/iter (± 12) |
0.81 |
csaf_2_0_tests/6.1.27.7 |
10442 ns/iter (± 47) |
12695 ns/iter (± 74) |
0.82 |
csaf_2_0_tests/6.1.27.8 |
10677 ns/iter (± 78) |
12928 ns/iter (± 14) |
0.83 |
csaf_2_0_tests/6.1.27.9 |
21368 ns/iter (± 65) |
26207 ns/iter (± 76) |
0.82 |
csaf_2_0_tests/6.1.27.10 |
11906 ns/iter (± 43) |
14031 ns/iter (± 17) |
0.85 |
csaf_2_0_tests/6.1.27.11 |
10963 ns/iter (± 20) |
13181 ns/iter (± 13) |
0.83 |
csaf_2_0_tests/6.1.28 |
20358 ns/iter (± 12) |
23735 ns/iter (± 42) |
0.86 |
csaf_2_0_tests/6.1.29 |
10411 ns/iter (± 14) |
12876 ns/iter (± 15) |
0.81 |
csaf_2_0_tests/6.1.30 |
35085 ns/iter (± 50) |
43178 ns/iter (± 92) |
0.81 |
csaf_2_0_tests/6.1.31 |
27834 ns/iter (± 60) |
36678 ns/iter (± 233) |
0.76 |
csaf_2_0_tests/6.1.32 |
10512 ns/iter (± 8) |
13073 ns/iter (± 38) |
0.80 |
csaf_2_0_tests/6.1.33 |
16036 ns/iter (± 24) |
20026 ns/iter (± 36) |
0.80 |
csaf_2_0_tests/6.2.1 |
116474 ns/iter (± 448) |
156118 ns/iter (± 460) |
0.75 |
csaf_2_0_tests/6.2.2 |
14703 ns/iter (± 23) |
18424 ns/iter (± 23) |
0.80 |
csaf_2_0_tests/6.2.3 |
13817 ns/iter (± 17) |
17442 ns/iter (± 30) |
0.79 |
csaf_2_0_tests/6.2.4 |
12851 ns/iter (± 83) |
16050 ns/iter (± 20) |
0.80 |
csaf_2_0_tests/6.2.5 |
43563 ns/iter (± 168) |
54746 ns/iter (± 167) |
0.80 |
csaf_2_0_tests/6.2.6 |
44101 ns/iter (± 95) |
55349 ns/iter (± 161) |
0.80 |
csaf_2_0_tests/6.2.7 |
10744 ns/iter (± 64) |
13145 ns/iter (± 24) |
0.82 |
csaf_2_0_tests/6.2.8 |
26933 ns/iter (± 416) |
34751 ns/iter (± 105) |
0.78 |
csaf_2_0_tests/6.2.9 |
26747 ns/iter (± 96) |
34685 ns/iter (± 85) |
0.77 |
csaf_2_0_tests/6.2.10 |
30901 ns/iter (± 124) |
39709 ns/iter (± 164) |
0.78 |
csaf_2_0_tests/6.2.11 |
133432 ns/iter (± 188) |
168676 ns/iter (± 857) |
0.79 |
csaf_2_0_tests/6.2.12 |
35600 ns/iter (± 19) |
44955 ns/iter (± 171) |
0.79 |
csaf_2_0_tests/6.2.13 |
658417 ns/iter (± 5820) |
846719 ns/iter (± 1789) |
0.78 |
csaf_2_0_tests/6.2.14 |
35492 ns/iter (± 23) |
41229 ns/iter (± 68) |
0.86 |
csaf_2_0_tests/6.2.15 |
26703 ns/iter (± 47) |
31928 ns/iter (± 48) |
0.84 |
csaf_2_0_tests/6.2.16 |
40389 ns/iter (± 51) |
52684 ns/iter (± 73) |
0.77 |
csaf_2_0_tests/6.2.17 |
10862 ns/iter (± 15) |
17537 ns/iter (± 59) |
0.62 |
csaf_2_0_tests/6.2.18 |
19553 ns/iter (± 28) |
28908 ns/iter (± 59) |
0.68 |
csaf_2_0_tests/6.2.19 |
10081 ns/iter (± 18) |
16478 ns/iter (± 31) |
0.61 |
csaf_2_0_tests/6.2.20 |
1291935 ns/iter (± 3230) |
1614522 ns/iter (± 6983) |
0.80 |
csaf_2_0_tests/6.3.1 |
28438 ns/iter (± 22) |
34925 ns/iter (± 23) |
0.81 |
csaf_2_0_tests/6.3.2 |
15901 ns/iter (± 45) |
20921 ns/iter (± 63) |
0.76 |
csaf_2_0_tests/6.3.3 |
19486 ns/iter (± 14) |
25454 ns/iter (± 55) |
0.77 |
csaf_2_0_tests/6.3.4 |
25679 ns/iter (± 201) |
34024 ns/iter (± 30) |
0.75 |
csaf_2_0_tests/6.3.5 |
28564 ns/iter (± 88) |
36112 ns/iter (± 45) |
0.79 |
csaf_2_0_tests/6.3.6 |
9725 ns/iter (± 43) |
12009 ns/iter (± 12) |
0.81 |
csaf_2_0_tests/6.3.7 |
9601 ns/iter (± 38) |
11988 ns/iter (± 109) |
0.80 |
csaf_2_0_tests/6.3.8 |
9601 ns/iter (± 31) |
12001 ns/iter (± 13) |
0.80 |
csaf_2_0_tests/6.3.9 |
22724 ns/iter (± 19) |
28860 ns/iter (± 983) |
0.79 |
csaf_2_0_tests/6.3.10 |
19180 ns/iter (± 64) |
29390 ns/iter (± 25) |
0.65 |
csaf_2_0_tests/6.3.11 |
20089 ns/iter (± 43) |
29785 ns/iter (± 43) |
0.67 |
csaf_2_1_tests/6.1.1 |
527323 ns/iter (± 1293) |
681456 ns/iter (± 1952) |
0.77 |
csaf_2_1_tests/6.1.2 |
197203 ns/iter (± 468) |
263024 ns/iter (± 444) |
0.75 |
csaf_2_1_tests/6.1.3 |
59362 ns/iter (± 45) |
74148 ns/iter (± 167) |
0.80 |
csaf_2_1_tests/6.1.4 |
106200 ns/iter (± 402) |
132236 ns/iter (± 723) |
0.80 |
csaf_2_1_tests/6.1.5 |
41740 ns/iter (± 34) |
51264 ns/iter (± 49) |
0.81 |
csaf_2_1_tests/6.1.6 |
99666 ns/iter (± 210) |
121962 ns/iter (± 195) |
0.82 |
csaf_2_1_tests/6.1.7 |
128500 ns/iter (± 457) |
172736 ns/iter (± 376) |
0.74 |
csaf_2_1_tests/6.1.8 |
35120 ns/iter (± 16) |
43023 ns/iter (± 59) |
0.82 |
csaf_2_1_tests/6.1.9 |
388848 ns/iter (± 437) |
501989 ns/iter (± 1353) |
0.77 |
csaf_2_1_tests/6.1.10 |
639023 ns/iter (± 1193) |
810066 ns/iter (± 2527) |
0.79 |
csaf_2_1_tests/6.1.11 |
52979 ns/iter (± 123) |
67972 ns/iter (± 683) |
0.78 |
csaf_2_1_tests/6.1.12 |
73265 ns/iter (± 196) |
84097 ns/iter (± 91) |
0.87 |
csaf_2_1_tests/6.1.13 |
156900 ns/iter (± 527) |
206804 ns/iter (± 2258) |
0.76 |
csaf_2_1_tests/6.1.14 |
170959 ns/iter (± 417) |
224368 ns/iter (± 866) |
0.76 |
csaf_2_1_tests/6.1.15 |
37264 ns/iter (± 25) |
46368 ns/iter (± 58) |
0.80 |
csaf_2_1_tests/6.1.16 |
121897 ns/iter (± 398) |
169990 ns/iter (± 213) |
0.72 |
csaf_2_1_tests/6.1.17 |
42010 ns/iter (± 156) |
50943 ns/iter (± 86) |
0.82 |
csaf_2_1_tests/6.1.18 |
46704 ns/iter (± 525) |
61420 ns/iter (± 124) |
0.76 |
csaf_2_1_tests/6.1.19 |
46629 ns/iter (± 75) |
59569 ns/iter (± 1119) |
0.78 |
csaf_2_1_tests/6.1.20 |
41884 ns/iter (± 28) |
51341 ns/iter (± 210) |
0.82 |
csaf_2_1_tests/6.1.21 |
135164 ns/iter (± 176) |
181050 ns/iter (± 496) |
0.75 |
csaf_2_1_tests/6.1.22 |
153406 ns/iter (± 466) |
190261 ns/iter (± 934) |
0.81 |
csaf_2_1_tests/6.1.23 |
45721 ns/iter (± 229) |
56701 ns/iter (± 753) |
0.81 |
csaf_2_1_tests/6.1.24 |
43078 ns/iter (± 53) |
53878 ns/iter (± 73) |
0.80 |
csaf_2_1_tests/6.1.25 |
141488 ns/iter (± 488) |
182499 ns/iter (± 300) |
0.78 |
csaf_2_1_tests/6.1.26 |
61141 ns/iter (± 263) |
77404 ns/iter (± 240) |
0.79 |
csaf_2_1_tests/6.1.27.1 |
41819 ns/iter (± 47) |
50384 ns/iter (± 78) |
0.83 |
csaf_2_1_tests/6.1.27.2 |
42214 ns/iter (± 25) |
50918 ns/iter (± 264) |
0.83 |
csaf_2_1_tests/6.1.27.3 |
43310 ns/iter (± 116) |
51492 ns/iter (± 51) |
0.84 |
csaf_2_1_tests/6.1.27.4 |
43176 ns/iter (± 65) |
51688 ns/iter (± 163) |
0.84 |
csaf_2_1_tests/6.1.27.5 |
40912 ns/iter (± 37) |
52361 ns/iter (± 448) |
0.78 |
csaf_2_1_tests/6.1.27.6 |
40561 ns/iter (± 48) |
51444 ns/iter (± 73) |
0.79 |
csaf_2_1_tests/6.1.27.7 |
40494 ns/iter (± 44) |
48516 ns/iter (± 140) |
0.83 |
csaf_2_1_tests/6.1.27.8 |
40351 ns/iter (± 158) |
48428 ns/iter (± 48) |
0.83 |
csaf_2_1_tests/6.1.27.9 |
57703 ns/iter (± 379) |
69292 ns/iter (± 225) |
0.83 |
csaf_2_1_tests/6.1.27.10 |
41870 ns/iter (± 250) |
49376 ns/iter (± 32) |
0.85 |
csaf_2_1_tests/6.1.27.11 |
43578 ns/iter (± 49) |
51050 ns/iter (± 45) |
0.85 |
csaf_2_1_tests/6.1.27.12 |
43181 ns/iter (± 251) |
51231 ns/iter (± 98) |
0.84 |
csaf_2_1_tests/6.1.27.13 |
34126 ns/iter (± 28) |
41591 ns/iter (± 60) |
0.82 |
csaf_2_1_tests/6.1.27.14 |
43436 ns/iter (± 352) |
51419 ns/iter (± 67) |
0.84 |
csaf_2_1_tests/6.1.27.15 |
43293 ns/iter (± 269) |
51037 ns/iter (± 70) |
0.85 |
csaf_2_1_tests/6.1.27.16 |
43262 ns/iter (± 54) |
51383 ns/iter (± 171) |
0.84 |
csaf_2_1_tests/6.1.27.17 |
46910 ns/iter (± 75) |
55857 ns/iter (± 273) |
0.84 |
csaf_2_1_tests/6.1.27.18 |
49171 ns/iter (± 32) |
58729 ns/iter (± 199) |
0.84 |
csaf_2_1_tests/6.1.27.19 |
47433 ns/iter (± 54) |
55673 ns/iter (± 69) |
0.85 |
csaf_2_1_tests/6.1.28 |
62489 ns/iter (± 45) |
72103 ns/iter (± 91) |
0.87 |
csaf_2_1_tests/6.1.29 |
39091 ns/iter (± 37) |
49267 ns/iter (± 2973) |
0.79 |
csaf_2_1_tests/6.1.30 |
118236 ns/iter (± 255) |
165373 ns/iter (± 1605) |
0.71 |
csaf_2_1_tests/6.1.31 |
137759 ns/iter (± 1134) |
177894 ns/iter (± 389) |
0.77 |
csaf_2_1_tests/6.1.32 |
40297 ns/iter (± 62) |
52807 ns/iter (± 96) |
0.76 |
csaf_2_1_tests/6.1.33 |
36283 ns/iter (± 42) |
45334 ns/iter (± 107) |
0.80 |
csaf_2_1_tests/6.1.34 |
48291 ns/iter (± 380) |
60522 ns/iter (± 97) |
0.80 |
csaf_2_1_tests/6.1.35 |
64205 ns/iter (± 125) |
80283 ns/iter (± 174) |
0.80 |
csaf_2_1_tests/6.1.36 |
36518 ns/iter (± 46) |
46678 ns/iter (± 277) |
0.78 |
csaf_2_1_tests/6.1.37 |
36259 ns/iter (± 26) |
46943 ns/iter (± 51) |
0.77 |
csaf_2_1_tests/6.1.38 |
39165 ns/iter (± 16) |
49217 ns/iter (± 38) |
0.80 |
csaf_2_1_tests/6.1.39 |
39714 ns/iter (± 258) |
53968 ns/iter (± 344) |
0.74 |
csaf_2_1_tests/6.1.40 |
38966 ns/iter (± 42) |
49187 ns/iter (± 37) |
0.79 |
csaf_2_1_tests/6.1.41 |
39481 ns/iter (± 234) |
49691 ns/iter (± 71) |
0.79 |
csaf_2_1_tests/6.1.42 |
165805 ns/iter (± 518) |
217527 ns/iter (± 618) |
0.76 |
csaf_2_1_tests/6.1.43 |
140015 ns/iter (± 149) |
182106 ns/iter (± 519) |
0.77 |
csaf_2_1_tests/6.1.44 |
140227 ns/iter (± 432) |
183947 ns/iter (± 637) |
0.76 |
csaf_2_1_tests/6.1.45 |
133702 ns/iter (± 947) |
175119 ns/iter (± 277) |
0.76 |
csaf_2_1_tests/6.1.46 |
213292 ns/iter (± 575) |
280878 ns/iter (± 1004) |
0.76 |
csaf_2_1_tests/6.1.47 |
336928 ns/iter (± 2118) |
441489 ns/iter (± 1696) |
0.76 |
csaf_2_1_tests/6.1.48 |
38201 ns/iter (± 63) |
49011 ns/iter (± 58) |
0.78 |
csaf_2_1_tests/6.1.49 |
38415 ns/iter (± 37) |
49881 ns/iter (± 183) |
0.77 |
csaf_2_1_tests/6.1.50 |
38580 ns/iter (± 164) |
50127 ns/iter (± 62) |
0.77 |
csaf_2_1_tests/6.1.51 |
136742 ns/iter (± 149) |
179323 ns/iter (± 974) |
0.76 |
csaf_2_1_tests/6.1.52 |
140849 ns/iter (± 693) |
181811 ns/iter (± 325) |
0.77 |
csaf_2_1_tests/6.1.53 |
44500 ns/iter (± 97) |
58264 ns/iter (± 181) |
0.76 |
csaf_2_1_tests/6.1.54 |
52290 ns/iter (± 87) |
67708 ns/iter (± 78) |
0.77 |
csaf_2_1_tests/6.1.55 |
53559 ns/iter (± 236) |
67095 ns/iter (± 74) |
0.80 |
csaf_2_1_tests/6.1.56 |
76848 ns/iter (± 85) |
100687 ns/iter (± 250) |
0.76 |
csaf_2_1_tests/6.1.57 |
108790 ns/iter (± 166) |
133112 ns/iter (± 140) |
0.82 |
csaf_2_1_tests/6.1.58 |
69684 ns/iter (± 150) |
94969 ns/iter (± 202) |
0.73 |
csaf_2_1_tests/6.1.59 |
41504 ns/iter (± 105) |
52434 ns/iter (± 87) |
0.79 |
csaf_2_1_tests/6.1.60.1 |
34865 ns/iter (± 22) |
42433 ns/iter (± 109) |
0.82 |
csaf_2_1_tests/6.1.60.2 |
35583 ns/iter (± 36) |
42460 ns/iter (± 38) |
0.84 |
csaf_2_1_tests/6.1.60.3 |
35587 ns/iter (± 190) |
42454 ns/iter (± 56) |
0.84 |
csaf_2_1_tests/6.1.61 |
140335 ns/iter (± 356) |
186905 ns/iter (± 486) |
0.75 |
csaf_2_1_tests/6.2.1 |
576181 ns/iter (± 1009) |
727417 ns/iter (± 1385) |
0.79 |
csaf_2_1_tests/6.2.2 |
58866 ns/iter (± 254) |
73859 ns/iter (± 293) |
0.80 |
csaf_2_1_tests/6.2.3 |
54680 ns/iter (± 72) |
69768 ns/iter (± 184) |
0.78 |
csaf_2_1_tests/6.2.4 |
46356 ns/iter (± 388) |
59316 ns/iter (± 176) |
0.78 |
csaf_2_1_tests/6.2.5 |
147003 ns/iter (± 320) |
203031 ns/iter (± 484) |
0.72 |
csaf_2_1_tests/6.2.6 |
151885 ns/iter (± 846) |
206973 ns/iter (± 474) |
0.73 |
csaf_2_1_tests/6.2.7 |
40623 ns/iter (± 74) |
49798 ns/iter (± 125) |
0.82 |
csaf_2_1_tests/6.2.8 |
134509 ns/iter (± 247) |
178085 ns/iter (± 348) |
0.76 |
csaf_2_1_tests/6.2.9 |
137103 ns/iter (± 171) |
177503 ns/iter (± 360) |
0.77 |
csaf_2_1_tests/6.2.11 |
492125 ns/iter (± 1560) |
629807 ns/iter (± 5071) |
0.78 |
csaf_2_1_tests/6.2.12 |
134324 ns/iter (± 584) |
163893 ns/iter (± 308) |
0.82 |
csaf_2_1_tests/6.2.13 |
2956857 ns/iter (± 10795) |
3969013 ns/iter (± 37189) |
0.74 |
csaf_2_1_tests/6.2.14 |
96870 ns/iter (± 107) |
113981 ns/iter (± 162) |
0.85 |
csaf_2_1_tests/6.2.15 |
80974 ns/iter (± 94) |
94588 ns/iter (± 120) |
0.86 |
csaf_2_1_tests/6.2.16 |
203909 ns/iter (± 380) |
265196 ns/iter (± 2388) |
0.77 |
csaf_2_1_tests/6.2.17 |
45673 ns/iter (± 122) |
59286 ns/iter (± 95) |
0.77 |
csaf_2_1_tests/6.2.18 |
112568 ns/iter (± 218) |
151505 ns/iter (± 855) |
0.74 |
csaf_2_1_tests/6.2.19 |
42450 ns/iter (± 64) |
54277 ns/iter (± 79) |
0.78 |
csaf_2_1_tests/6.2.20 |
7044654 ns/iter (± 41049) |
9734120 ns/iter (± 62164) |
0.72 |
csaf_2_1_tests/6.2.21 |
289188 ns/iter (± 781) |
367463 ns/iter (± 1531) |
0.79 |
csaf_2_1_tests/6.2.22 |
119934 ns/iter (± 215) |
159930 ns/iter (± 328) |
0.75 |
csaf_2_1_tests/6.2.23 |
56387 ns/iter (± 104) |
74222 ns/iter (± 118) |
0.76 |
csaf_2_1_tests/6.2.24 |
179397 ns/iter (± 386) |
231896 ns/iter (± 257) |
0.77 |
csaf_2_1_tests/6.2.25 |
58163 ns/iter (± 84) |
75311 ns/iter (± 151) |
0.77 |
csaf_2_1_tests/6.2.26 |
59920 ns/iter (± 156) |
75407 ns/iter (± 57) |
0.79 |
csaf_2_1_tests/6.2.27 |
44006 ns/iter (± 102) |
56238 ns/iter (± 122) |
0.78 |
csaf_2_1_tests/6.2.28 |
46820 ns/iter (± 111) |
60728 ns/iter (± 269) |
0.77 |
csaf_2_1_tests/6.2.29 |
46707 ns/iter (± 88) |
60707 ns/iter (± 329) |
0.77 |
csaf_2_1_tests/6.2.30 |
47373 ns/iter (± 62) |
61774 ns/iter (± 234) |
0.77 |
csaf_2_1_tests/6.2.31 |
160676 ns/iter (± 458) |
215817 ns/iter (± 478) |
0.74 |
csaf_2_1_tests/6.2.32 |
242229 ns/iter (± 188) |
320944 ns/iter (± 54629) |
0.75 |
csaf_2_1_tests/6.2.33 |
174838 ns/iter (± 257) |
242762 ns/iter (± 2931) |
0.72 |
csaf_2_1_tests/6.2.34 |
377813 ns/iter (± 3202) |
489182 ns/iter (± 4211) |
0.77 |
csaf_2_1_tests/6.2.35 |
334701 ns/iter (± 1117) |
447948 ns/iter (± 6010) |
0.75 |
csaf_2_1_tests/6.2.36 |
338229 ns/iter (± 1497) |
450167 ns/iter (± 752) |
0.75 |
csaf_2_1_tests/6.2.37 |
361070 ns/iter (± 2514) |
472024 ns/iter (± 1560) |
0.76 |
csaf_2_1_tests/6.2.38 |
71160 ns/iter (± 120) |
91887 ns/iter (± 120) |
0.77 |
csaf_2_1_tests/6.2.39.1 |
35594 ns/iter (± 34) |
42471 ns/iter (± 42) |
0.84 |
csaf_2_1_tests/6.2.39.2 |
45558 ns/iter (± 69) |
54085 ns/iter (± 108) |
0.84 |
csaf_2_1_tests/6.2.39.3 |
48274 ns/iter (± 182) |
57194 ns/iter (± 77) |
0.84 |
csaf_2_1_tests/6.2.39.4 |
35817 ns/iter (± 31) |
42719 ns/iter (± 51) |
0.84 |
csaf_2_1_tests/6.2.39.5 |
35552 ns/iter (± 315) |
43033 ns/iter (± 63) |
0.83 |
csaf_2_1_tests/6.2.40 |
47276 ns/iter (± 88) |
60818 ns/iter (± 115) |
0.78 |
csaf_2_1_tests/6.2.41 |
147626 ns/iter (± 205) |
194614 ns/iter (± 358) |
0.76 |
csaf_2_1_tests/6.2.42 |
46774 ns/iter (± 387) |
61153 ns/iter (± 75) |
0.76 |
csaf_2_1_tests/6.2.43 |
46894 ns/iter (± 268) |
61287 ns/iter (± 284) |
0.77 |
csaf_2_1_tests/6.2.44 |
47179 ns/iter (± 109) |
64441 ns/iter (± 52) |
0.73 |
csaf_2_1_tests/6.2.45 |
47289 ns/iter (± 56) |
61294 ns/iter (± 941) |
0.77 |
csaf_2_1_tests/6.2.46 |
47552 ns/iter (± 134) |
61208 ns/iter (± 303) |
0.78 |
csaf_2_1_tests/6.2.47 |
242093 ns/iter (± 980) |
305139 ns/iter (± 828) |
0.79 |
csaf_2_1_tests/6.2.48 |
122054 ns/iter (± 470) |
161661 ns/iter (± 344) |
0.75 |
csaf_2_1_tests/6.2.49 |
50738 ns/iter (± 68) |
61959 ns/iter (± 56) |
0.82 |
csaf_2_1_tests/6.2.50.1 |
35919 ns/iter (± 402) |
42970 ns/iter (± 50) |
0.84 |
csaf_2_1_tests/6.2.50.2 |
35964 ns/iter (± 233) |
42980 ns/iter (± 39) |
0.84 |
csaf_2_1_tests/6.2.50.3 |
35576 ns/iter (± 42) |
43028 ns/iter (± 40) |
0.83 |
csaf_2_1_tests/6.2.51 |
48358 ns/iter (± 37) |
62308 ns/iter (± 48) |
0.78 |
csaf_2_1_tests/6.2.52 |
147535 ns/iter (± 235) |
197375 ns/iter (± 643) |
0.75 |
csaf_2_1_tests/6.2.53 |
53658 ns/iter (± 164) |
69144 ns/iter (± 128) |
0.78 |
csaf_2_1_tests/6.2.54.1 |
36040 ns/iter (± 23) |
43041 ns/iter (± 224) |
0.84 |
csaf_2_1_tests/6.2.54.2 |
36051 ns/iter (± 34) |
43049 ns/iter (± 49) |
0.84 |
csaf_2_1_tests/6.2.54.3 |
36055 ns/iter (± 156) |
43047 ns/iter (± 72) |
0.84 |
csaf_2_1_tests/6.2.54.4 |
36060 ns/iter (± 142) |
43029 ns/iter (± 73) |
0.84 |
csaf_2_1_tests/6.3.1 |
35768 ns/iter (± 230) |
43795 ns/iter (± 60) |
0.82 |
csaf_2_1_tests/6.3.2 |
57604 ns/iter (± 123) |
74697 ns/iter (± 414) |
0.77 |
csaf_2_1_tests/6.3.3 |
36217 ns/iter (± 416) |
44274 ns/iter (± 25) |
0.82 |
csaf_2_1_tests/6.3.4 |
36306 ns/iter (± 32) |
44404 ns/iter (± 52) |
0.82 |
csaf_2_1_tests/6.3.5 |
137734 ns/iter (± 230) |
179694 ns/iter (± 224) |
0.77 |
csaf_2_1_tests/6.3.6 |
36036 ns/iter (± 32) |
45408 ns/iter (± 51) |
0.79 |
csaf_2_1_tests/6.3.7 |
36543 ns/iter (± 27) |
45705 ns/iter (± 159) |
0.80 |
csaf_2_1_tests/6.3.8 |
36760 ns/iter (± 42) |
45851 ns/iter (± 191) |
0.80 |
csaf_2_1_tests/6.3.9 |
131312 ns/iter (± 247) |
172684 ns/iter (± 159) |
0.76 |
csaf_2_1_tests/6.3.10 |
49077 ns/iter (± 38) |
64062 ns/iter (± 132) |
0.77 |
csaf_2_1_tests/6.3.11 |
49152 ns/iter (± 66) |
63790 ns/iter (± 93) |
0.77 |
csaf_2_1_tests/6.3.12 |
171588 ns/iter (± 220) |
230098 ns/iter (± 2380) |
0.75 |
csaf_2_1_tests/6.3.13 |
50195 ns/iter (± 418) |
63775 ns/iter (± 208) |
0.79 |
csaf_2_1_tests/6.3.14 |
97170 ns/iter (± 247) |
123734 ns/iter (± 354) |
0.79 |
csaf_2_1_tests/6.3.15 |
97088 ns/iter (± 220) |
124066 ns/iter (± 160) |
0.78 |
csaf_2_1_tests/6.3.16 |
50214 ns/iter (± 49) |
64540 ns/iter (± 81) |
0.78 |
csaf_2_1_tests/6.3.17 |
50407 ns/iter (± 56) |
64720 ns/iter (± 113) |
0.78 |
csaf_2_1_tests/6.3.18 |
58354 ns/iter (± 80) |
80079 ns/iter (± 346) |
0.73 |
csaf_2_1_tests/6.3.19.1 |
35580 ns/iter (± 110) |
43006 ns/iter (± 29) |
0.83 |
csaf_2_1_tests/6.3.19.2 |
35550 ns/iter (± 27) |
43015 ns/iter (± 119) |
0.83 |
csaf_2_1_tests/6.3.19.3 |
36069 ns/iter (± 36) |
43007 ns/iter (± 56) |
0.84 |
csaf_2_1_tests/6.3.19.4 |
36063 ns/iter (± 26) |
43022 ns/iter (± 69) |
0.84 |
csaf_2_1_tests/6.3.19.5 |
36054 ns/iter (± 20) |
43035 ns/iter (± 55) |
0.84 |
csaf_2_1_tests/6.3.20 |
59803 ns/iter (± 88) |
77001 ns/iter (± 128) |
0.78 |
csaf_2_1_tests/6.3.21.1 |
36080 ns/iter (± 61) |
43061 ns/iter (± 37) |
0.84 |
csaf_2_1_tests/6.3.21.2 |
36065 ns/iter (± 43) |
43031 ns/iter (± 125) |
0.84 |
csaf_2_1_tests/6.3.21.3 |
36053 ns/iter (± 19) |
43047 ns/iter (± 40) |
0.84 |
csaf_2_1_tests/6.3.21.4 |
36058 ns/iter (± 28) |
43045 ns/iter (± 53) |
0.84 |
csaf_2_1_tests/6.3.21.5 |
36055 ns/iter (± 453) |
43027 ns/iter (± 36) |
0.84 |
csaf_2_1_tests/6.3.21.6 |
35089 ns/iter (± 246) |
43052 ns/iter (± 66) |
0.82 |
csaf_2_1_tests/6.3.21.7 |
36050 ns/iter (± 30) |
43062 ns/iter (± 64) |
0.84 |
csaf_2_1_tests/6.3.21.8 |
36041 ns/iter (± 65) |
43039 ns/iter (± 140) |
0.84 |
csaf_2_1_tests/6.3.21.9 |
36051 ns/iter (± 40) |
43047 ns/iter (± 82) |
0.84 |
csaf_2_1_tests/6.3.22 |
51070 ns/iter (± 73) |
64832 ns/iter (± 57) |
0.79 |
full_validation/csaf_2_0_full_preset |
5718221 ns/iter (± 14411) |
8018911 ns/iter (± 74125) |
0.71 |
full_validation/csaf_2_1_full_preset |
39900531 ns/iter (± 133705) |
57875089 ns/iter (± 177156) |
0.69 |
parse_only/csaf_2_0 |
895181 ns/iter (± 1676) |
1150550 ns/iter (± 1927) |
0.78 |
parse_only/csaf_2_1 |
4569651 ns/iter (± 7069) |
5768406 ns/iter (± 29267) |
0.79 |
typed_parse/csaf_2_0 |
1541698 ns/iter (± 4572) |
1986284 ns/iter (± 5943) |
0.78 |
typed_parse/csaf_2_1 |
7441811 ns/iter (± 23645) |
9432153 ns/iter (± 84832) |
0.79 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 19 out of 20 changed files in this pull request and generated 2 comments.
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
csaf-rs/src/validations/test_6_3_16.rs:218
- Defining the validator does not make test 6.3.16 reachable through the normal validation API:
csaf2_1/validation.rs:250still maps"6.3.16"toNone. Consequently, callers requesting this newly added test never executetest_6_3_16_grammar_check. WireValidatorForTest6_3_16.validate(self)into that dispatch when enabling the test.
crate::test_validation::impl_validator!(csaf2_1, ValidatorForTest6_3_16, test_6_3_16_grammar_check);
| let (word1, start, _) = &window[0]; | ||
| let (word2, _, end) = &window[1]; | ||
| let key = format!("{} {}", word1.to_lowercase(), word2.to_lowercase()); | ||
| if known_bad_sequences.contains(key.as_str()) { | ||
| findings.push(TextCheckFinding { | ||
| fragment: format!("{word1} {word2}"), | ||
| start: *start, | ||
| end: *end, | ||
| replacement: None, | ||
| }); |
There was a problem hiding this comment.
Valid, on second though grammar checking tokenization will only be used by the mock, so this can be simplified
| /// - Only [`TextCheckKind::Grammar`] findings are produced; spell checking is not implemented. | ||
| /// - Strings are tokenized, see [`tokenize_words`]. | ||
| /// - Consecutive word pairs are matched against a built-in list of known incorrect sequences. | ||
| /// - When a bad sequence is detected, the first word of the pair is reported as the problematic fragment. |
This PR: