Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
61e5c87
move listing of potential misbehaviours
Jonas-Kirchhoff Oct 15, 2025
b437a89
fix url
Jonas-Kirchhoff Oct 15, 2025
3a1cbdc
auto-update JLS-11
Jonas-Kirchhoff Oct 15, 2025
d9fd2c7
add reference and validators for numbers of failed workflows
Jonas-Kirchhoff Oct 16, 2025
eba15e6
implement validators and reference
Jonas-Kirchhoff Oct 16, 2025
3358c27
document validators
Jonas-Kirchhoff Oct 16, 2025
c3c17db
document reference
Jonas-Kirchhoff Oct 16, 2025
8f94670
add as_markdown
Jonas-Kirchhoff Oct 16, 2025
53c9ab1
add utterly important quotation marks
Jonas-Kirchhoff Oct 16, 2025
edc9598
add quotation marks
Jonas-Kirchhoff Oct 16, 2025
9f70c6c
fix as_markdown
Jonas-Kirchhoff Oct 16, 2025
6e15395
delete unused items
Jonas-Kirchhoff Oct 16, 2025
eedfe1b
add test
Jonas-Kirchhoff Oct 16, 2025
a882008
add whitespace tests
Jonas-Kirchhoff Oct 17, 2025
0fd295b
add checklists
Jonas-Kirchhoff Oct 17, 2025
b052f23
add update-helper
Jonas-Kirchhoff Oct 17, 2025
379ff21
add references
Jonas-Kirchhoff Oct 17, 2025
596e2b8
pretty printing
Jonas-Kirchhoff Oct 17, 2025
0dc49ff
increase indent
Jonas-Kirchhoff Oct 17, 2025
fa37633
do constraints
Jonas-Kirchhoff Oct 17, 2025
8fcf438
pretty printing
Jonas-Kirchhoff Oct 17, 2025
7de7bc3
reference for pretty printing
Jonas-Kirchhoff Oct 20, 2025
543b664
minor tweaks
Jonas-Kirchhoff Oct 20, 2025
800c31b
even more minor tweak
Jonas-Kirchhoff Oct 20, 2025
1afd245
add update description
Jonas-Kirchhoff Oct 21, 2025
b49bf1a
minor tweaks for nlohmann update
Jonas-Kirchhoff Oct 21, 2025
29dd86e
fix git command
Jonas-Kirchhoff Oct 21, 2025
8f3f0ce
remove trailing whitespace
Jonas-Kirchhoff Oct 22, 2025
da5cf30
Fix url and branch.
Jonas-Kirchhoff Oct 22, 2025
8c61c4c
add combinator
Jonas-Kirchhoff Oct 22, 2025
a67b9f3
add coveralls_statement
Jonas-Kirchhoff Oct 24, 2025
caa8fad
add JLS-27
Jonas-Kirchhoff Oct 24, 2025
71cdc20
tweak formulation of JLS-27
Jonas-Kirchhoff Oct 24, 2025
c9a32c7
pretty printing
Jonas-Kirchhoff Oct 24, 2025
e8f68b8
Merge remote-tracking branch 'origin/main' into update_process
Jonas-Kirchhoff Oct 24, 2025
867fdf9
adapt tests for gcc-15
Jonas-Kirchhoff Oct 24, 2025
6e1e6ad
pretty printing
Jonas-Kirchhoff Oct 24, 2025
f18c30c
amend JLS-05
Jonas-Kirchhoff Oct 24, 2025
d810627
add monitoring AOU
Jonas-Kirchhoff Oct 27, 2025
86c5d2d
reformulate checklist
Jonas-Kirchhoff Oct 27, 2025
dbd6f05
adapt README
Jonas-Kirchhoff Oct 27, 2025
94ade28
fix wrong validator name
Jonas-Kirchhoff Oct 27, 2025
8fbf587
fix return value for validators
Jonas-Kirchhoff Oct 27, 2025
960e3c9
Merge branch 'main' into update_process
Erikhu1 Oct 28, 2025
6eb46a1
add documentation for combinator
Erikhu1 Nov 4, 2025
8ca25c4
fix script path error
Erikhu1 Nov 4, 2025
5dcbaec
fix f string error
Erikhu1 Nov 4, 2025
5eb66ce
escape outer quotation marks
Erikhu1 Nov 4, 2025
7329df4
fix typo
Erikhu1 Nov 4, 2025
524e092
undo JLS-05 change
Erikhu1 Nov 4, 2025
5015cde
rename checklist files
Erikhu1 Nov 4, 2025
54b2006
label position agnostic script and fix typos
Erikhu1 Nov 5, 2025
b9e046f
Update .dotstop_extensions/README.md
Erikhu1 Nov 6, 2025
c823fcd
Update .dotstop_extensions/README.md
Erikhu1 Nov 6, 2025
100999b
fix verb
Jonas-Kirchhoff Nov 6, 2025
bc78693
Merge branch 'main' into update_process
Erikhu1 Nov 6, 2025
cf2effe
rename NumberOfFailures to workflow_failures
Erikhu1 Nov 7, 2025
d65a9e9
clarify overload nth occurence
Erikhu1 Nov 7, 2025
53aa7df
update JLS-26
Erikhu1 Nov 7, 2025
500d934
update JLS-27
Erikhu1 Nov 7, 2025
49ba9a1
clarify combinator
Erikhu1 Nov 7, 2025
ebdfea7
add reference test for ListOfTestCases
Erikhu1 Nov 7, 2025
619ba3c
remove comma
Erikhu1 Nov 7, 2025
b1ac2cc
add function description and close connection
Erikhu1 Nov 7, 2025
fe90d80
add function desc
Erikhu1 Nov 7, 2025
862cb19
remove is_branch_protected validator
Erikhu1 Nov 7, 2025
fef09ca
add try catch for did_workflows_fail
Erikhu1 Nov 7, 2025
224c5e0
update AOU-29
Erikhu1 Nov 7, 2025
2abbb27
update SME scores description
Erikhu1 Nov 7, 2025
aaaf8ed
remove automatic
Erikhu1 Nov 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .dotstop.dot
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ digraph G {
"JLS-24" [sha=b16224d3ab676c00b313ae91760072d92aed9f20da99b363621effa3e033e012];
"JLS-25" [sha="8bb517191450f370679dbafd85342e1bbcf797cc84f2a6f1fc119568b534d5e0"];
"JLS-26" [sha=cf1b73b375697ee56d9788aab79ed01b2730b126a2cc4d7041c9525113e7ed7c];
"JLS-27" [sha="efd4b438331c155eebaec96cd1eda337567794f8696b327562aaaed5fa8ded69"];
"NJF-01" [sha="548dc86014e093974f68660942daa231271496a471885bbed092a375b3079bd8"];
"NJF-02" [sha="6ea015646d696e3f014390ff41612eab66ac940f20cf27ce933cbadf8482d526"];
"NJF-03" [sha="4bd1f8210b7bba9a248055a437f377d9da0b7576c5e3ed053606cf8b5b2febe3"];
Expand Down Expand Up @@ -356,6 +357,7 @@ digraph G {
"TA-BEHAVIOURS" -> "AOU-23" [sha=""];
"TA-BEHAVIOURS" -> "AOU-24" [sha=""];
"TA-BEHAVIOURS" -> "AOU-25" [sha=""];
"TA-BEHAVIOURS" -> "JLS-27" [sha="9c3e4b4a4677ca22f28e2bb0cbc39c31676efa4c17ddc1fe66599589b83ef643"];
"TA-CONFIDENCE" -> "JLS-08" [sha="506164051180023c8533ea1f6dedf1bad894c3ee6020ff16b002e33b109c2791"];
"TA-CONFIDENCE" -> "JLS-09" [sha="80bbde95fc14f89acf3dad10b3831bc751943fe4a1d79d5cbf4702416c27530f"];
"TA-CONFIDENCE" -> "AOU-10_COMBINED" [sha="5e5d7dc606d53423fbb1f2d5755780c98839bdc2d108704af5ee1aed50403f5e"];
Expand Down
138 changes: 124 additions & 14 deletions .dotstop_extensions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ Custom references are defined in `references.py`. A (custom) reference is used b

## CPPTestReference

The content of a `CPPTestReference` is given by the lines of code corresponding to a test-case or a section of a test-case in the unit-tests given in tests/src and TSF/tests.
The content of a `CPPTestReference` is given by the lines of code corresponding to a test-case or a section of a test-case in a specified unit-test-file. The sections are identified in the value of "name", where the nested sections are separated by semicolons.

For the `CPPTestReference` an example is:
For the `CPPTestReference` the expected configuration is:
```
---
...
Expand All @@ -30,9 +30,12 @@ references:

## JSONTestsuiteReference

The content of a `JSONTestsuiteReference` is given by the lines of code corresponding to a test-case or a section of a test-case in the unit tests, where a (list of) specified test-file(s) located on an external test-repository is utilized, and the content of these test-files.
The `JSONTestsuiteReference` is a variant of the function reference, which is augmented by an external file containing test-data in the form of well- or ill-formed JSON candidate data.
A `JSONTestsuiteReference` is therefore given by the data of a `CPPTestReference` together with a list containing the paths to these external files.
The external files are stored in a separate branch of the repository, and their text is loaded via call to github.
The content of a `JSONTestsuiteReference` is given by the content of the underlying `CPPTestReference` together with the sum of the contents of the external test-suite files.

For the `JSONTestsuiteReference` an example is:
For the `JSONTestsuiteReference` the expected configuration is:
```
---
...
Expand Down Expand Up @@ -65,7 +68,8 @@ references:
---
```

Since functions may be overloaded, a `FunctionReference` can be initialised with an optional overload-parameter; additionally, it is possible to give a description. The full example is:
Since functions may be overloaded, a `FunctionReference` can be initialised with an optional overload-parameter.
The overload-parameter specifies which implementation of the function is referred to, i.e. if the overload-parameter for the function ``class::function()`` is set to _n_, then the _n_-th implementation when counting the occurrences from top to bottom of ``function()`` within the class ``class`` is used, if it exists; otherwise, an error is thrown. Additionally, it is possible, but not mandatory, to give a description. The full example is:
```
---
...
Expand Down Expand Up @@ -140,14 +144,6 @@ The content of a `TimeVaryingWebReference` is given by the content of a changelo

An example of the complete configuration for `TimeVaryingWebReference` is

in case of a custom description.

## TimeVaryingWebReference

The content of a `TimeVaryingWebReference` is given by the content of a changelog, whose default value is `ChangeLog.md`, which mirrors the changelog of nlohmann/json. This reference is intended for websites, whose content is constantly changing, so that a `WebContentReference` makes the item un-reviewable, but whose content at the time of an update influences the trustability. An example is `https://github.com/nlohmann/json/pulse/monthly`, which can be used to demonstrate that nlohmann/json is *up to the most recent version* under active development.

An example of the complete configuration for `TimeVaryingWebReference` is

```
---
...
Expand Down Expand Up @@ -192,6 +188,26 @@ references:
---
```

## workflow_failures

This reference queries `https://github.com/{self._owner}/{self._repo}/actions?query=is%3Afailure+branch%3A{self._branch}` and collects the number of failed workflow runs as its content.
Here, owner, repo and branch are the arguments given to the constructor of the reference.
If no branch is specified, then all failures are collected, i.e. `https://github.com/{self._owner}/{self._repo}/actions?query=is%3Afailure` is queried.
In case the website is un-reachable, or the github layout changes drastically so that the number of failed workflow runs does not exist at the expected location, an error is thrown.

The expected configuration is

```
---
...
references:
- type: workflow_failures
owner: "eclipse-score"
repo: "inc_nlohmann_json"
branch: "json_version_3_12_0"
---
```

## ItemReference

Some references support every (directly or indirectly) supporting item of an item.
Expand Down Expand Up @@ -281,7 +297,7 @@ The test-files are called unit-FILE_NAME.cpp. In the configuration, FILE_NAME is

For each test specified in test-files, the number of passed and failed test-cases is calculated, while the number of skipped test-cases is ignored. The score of each test is then the ratio of passed test-cases compared to all non-skipped test-cases; the total score is the mean of the individual scores.

## issue_checker
## check_issues

The automatic validator `check_issues` is intended to evaluate the json-lists `raw_open_issues.json` and `raw_closed_issues.json` and compare with the list of known issues of nlohmann/json labelled as bug opened since the release of the version of nlohmann/json that is documented. The json lists are generated in the publish_documentation-Workflow, and not persistently stored.

Expand All @@ -304,6 +320,100 @@ From `raw_closed_issues.json`, all issue IDs are collected, which are labelled a
If for any of these IDs, it is not explicitly indicated in the list of known misbehaviours that this issue does not apply to Eclipse S-CORE, then the score 0.0 is returned.
Otherwise, the score 1.0 is assigned.

## did_workflows_fail

The automatic validator `did_workflows_fail` queries the web-site `https://github.com/{owner}/{repo}/actions?query=event%3A{event}+is%3Afailure+branch%3A{branch}` and looks on the number of workflow run results which is printed at the head of the table.
In case that this number is not zero, a score of 0.0 is returned, and 1.0 otherwise.

The expected configuration is given as follows:

```
evidence:
type: did_workflows_fail
configuration:
owner: "eclipse-score" # owner of the repository
repo: "inc_nlohmann_json" # name of the repository
branch: "json_version_3_12_0" # name of the branch
action: "push" # optional, default is push
```

It is of utmost importance that the arguments come with quotation marks. Otherwise, the update helper does not work as intended.

## coveralls_reporter

The automatic validator `coveralls_reporter` queries the [coveralls](https://coveralls.io/) api to get the line and branch coverages calculated by the service, which is running on the repository.
Unless the version of `nlohmann/json` documented in this repository changes, it is expected that both coverage numbers remain constant.
When initialising the reference, the current code coverage is given as a parameter, to which the fetched coverages are compared.
If no branch is specified, then the most recently calculated coverage is fetched, so that it is generally recommended to specify a branch.
Moreover, it is possible to specify the number of decimal digits, which is defaulted to three, when not specified.
The validator returns a score of 1.0 if both fetched coverages rounded to the specified number of decimal digits coincide with the specified ones, and a score of 0.0 otherwise.

The expected configuration is the following:

```
evidence:
type: coveralls_reporter
configuration:
owner: "score-json"
repo: "json"
branch: "main"
line_coverage: 99.186
branch_coverage: 93.865
digits: 3
```

## combinator

The trudag tool does currently not support the use of multiple custom validators for one single TSF item. To work around this, the validator `combinator` is implemented as a meta-validator that executes multiple validators and combines their scores using a weighted average. This enables the validation of complex trustable items that require evidence from multiple sources or validation methods.

The combinator accepts a list of validators, each with its own configuration and optional weight. Each validator is executed independently, and their scores are combined using the formula: `(score1 * weight1 + score2 * weight2 + ...) / (weight1 + weight2 + ...)`. If no weights are specified, all validators are treated with equal weight (weight = 1.0).

The combinator supports the following validator types:
- `check_artifact_exists`
- `https_response_time`
- `check_test_results`
- `file_exists`
- `sha_checker`
- `check_issues`
- `did_workflows_fail`
- `coveralls_reporter`

The expected configuration is as follows:

```
evidence:
type: combinator
configuration:
validators:
- type: "check_test_results"
weight: 2.0 # optional, defaults to 1.0
configuration:
tests:
- class_lexer
- unicode1
- type: "https_response_time"
weight: 1.0 # optional, defaults to 1.0
configuration:
target_seconds: 2
urls:
- "https://github.com/nlohmann/json/issues"
- type: "coveralls_reporter"
weight: 1.5 # optional, defaults to 1.0
configuration:
owner: "score-json"
repo: "json"
branch: "main"
line_coverage: 99.186
branch_coverage: 93.865
digits: 3
- type: "did_workflows_fail"
configuration:
owner: "eclipse-score"
repo: "inc_nlohmann_json"
branch: "json_version_3_12_0"
```

All weights must be non-negative. If the sum of all weights is zero, the combinator returns a score of 0.0. The combinator aggregates all exceptions and warnings from the individual validators and returns them alongside the combined score.

# Data store interface

Expand Down
Loading