Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
bc0d3e2
fix: update config saved in snapsho folder but still need to update t…
francoto May 5, 2026
d654191
feat: update config handling module
francoto May 19, 2026
59aa7d0
feat: add a fake client to simulate comment unsubscribe
francoto May 19, 2026
26fc877
feat: create pydantic configuration helper
francoto May 27, 2026
d9c3ad2
fix: misalignment in config definition
francoto May 27, 2026
6bd0423
feat: add unit test for config
francoto May 27, 2026
7ca2d80
populate tests for config schemas
francoto May 27, 2026
237603b
add extra test on config validation
francoto May 27, 2026
dab9802
doc: add extra doc on new test
francoto May 27, 2026
2d571ff
feat: update config utils with new config implementation
francoto May 27, 2026
4d8b7d4
test: add test to covers the new getters and method to add opt-out be…
francoto May 27, 2026
97c5e14
test: add valid test for config utils
francoto May 27, 2026
cb492e5
fix: update config import and usage to new implementation (wip on test)
francoto May 28, 2026
662ecef
fix: refactor tests about the new usage of config and config utils. H…
francoto May 29, 2026
6d8fc36
doc: update saved configurations file to met new Configuration implem…
francoto May 29, 2026
3fc7109
doc: remove old report from rsmetacheck
francoto May 29, 2026
42de82b
fix: config.json were not created during pipeline in the run directory
francoto May 29, 2026
0f1c516
fix: properly detect unsubscribe and update config files (run and inp…
francoto May 29, 2026
bd0e9a8
feat: add makefile to run rsmetacheck to create a pitfall.json for te…
francoto May 29, 2026
7fe0ff4
test: update test to use the pitfalls created by rsmetacheck
francoto May 29, 2026
ef4daf6
ci/test: replace coverage-badge by genbadge package
francoto May 29, 2026
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
8 changes: 5 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,16 @@ jobs:
uv run pytest -m "not integration_gitlab" \
--cov=src/sw_metadata_bot \
--cov-report=term-missing \
--cov-report=xml:coverage.xml \
tests/

- name: Generate coverage badge
run: uv run genbadge coverage -i coverage.xml -o coverage.svg
continue-on-error: true

- name: Run small analysis without publishing
run: uv run sw-metadata-bot run-analysis --config-file assets/example_list_repo.json

- name: Generate coverage badge
run: uv run coverage-badge -o coverage.svg -f
continue-on-error: true

- name: Commit coverage badge
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
Expand Down
15 changes: 15 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

.PHONY: rsmetacheck-run clean

# arguments


# Run rsmetacheck via the `uv` runner and place outputs under assets/example_analysis/
rsmetacheck-run:
@mkdir -p assets/example_analysis
@echo "Running: uv run rsmetacheck --input https://github.com/SoftwareUnderstanding/rsmetacheck --analysis-output assets/example_analysis/"
@uv run rsmetacheck --input https://github.com/SoftwareUnderstanding/rsmetacheck --somef-output assets/example_analysis/somef/ --pitfalls-output assets/example_analysis/pitfalls/ --analysis-output assets/example_analysis/rsmetacheck_analysis.json

clean:
@rm -rf assets/example_analysis
@echo "Cleaned assets/example_analysis"
35 changes: 19 additions & 16 deletions assets/config_su.json
Original file line number Diff line number Diff line change
@@ -1,25 +1,28 @@
{
"repositories": [
"https://github.com/SoftwareUnderstanding/arxiv_category_pull",
"https://github.com/SoftwareUnderstanding/CodeMetaSoft_website",
"https://github.com/SoftwareUnderstanding/Metadata-Adoption-Quantify",
"https://github.com/SoftwareUnderstanding/ScientificSoftwareKG",
"https://github.com/SoftwareUnderstanding/auto-papers-with-artifacts",
"https://github.com/SoftwareUnderstanding/somef_server",
"https://github.com/SoftwareUnderstanding/inspect4py",
"https://github.com/SoftwareUnderstanding/SOMEF-Vider",
"https://github.com/SoftwareUnderstanding/completeR",
"https://github.com/SoftwareUnderstanding/rolf",
"https://github.com/SoftwareUnderstanding/software_types",
"https://github.com/SoftwareUnderstanding/c2t"
],
"version": "1.0.0",
"analysis": {
"repositories": [
"https://github.com/SoftwareUnderstanding/arxiv_category_pull",
"https://github.com/SoftwareUnderstanding/CodeMetaSoft_website",
"https://github.com/SoftwareUnderstanding/Metadata-Adoption-Quantify",
"https://github.com/SoftwareUnderstanding/ScientificSoftwareKG",
"https://github.com/SoftwareUnderstanding/auto-papers-with-artifacts",
"https://github.com/SoftwareUnderstanding/somef_server",
"https://github.com/SoftwareUnderstanding/inspect4py",
"https://github.com/SoftwareUnderstanding/SOMEF-Vider",
"https://github.com/SoftwareUnderstanding/completeR",
"https://github.com/SoftwareUnderstanding/rolf",
"https://github.com/SoftwareUnderstanding/software_types",
"https://github.com/SoftwareUnderstanding/c2t"
]
},
"issues": {
"custom_message": "You are part of the Software Understanding metadata quality initiative. Several metadata issues were identified and could be addressed.",
"custom_issue_message": "You are part of the Software Understanding metadata quality initiative. Several metadata issues were identified and could be addressed.",
"generate_codemeta_if_missing": true,
"opt_outs": []
},
"outputs": {
"root_dir": "outputs",
"output_root_dir": "outputs",
"run_name": "SoftwareUnderstanding_new",
"snapshot_tag_format": "%Y%m%d"
}
Expand Down
18 changes: 18 additions & 0 deletions assets/config_unsubscribe.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"version": "1.0.0",
"analysis": {
"repositories": [
"https://github.com/SoftwareUnderstanding/sw-metadata-bot"
]
},
"issues": {
"custom_issue_message": "Unsubscribe list",
"opt_outs": [
]
},
"outputs": {
"output_root_dir": "outputs",
"run_name": "unsubscribe",
"snapshot_tag_format": "%Y%m%d"
}
}
75 changes: 75 additions & 0 deletions assets/example_analysis/pitfalls/output_1_pitfalls.jsonld
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"@context": "[IN PROCESS]",
"@type": "SoftwareQualityAssessment",
"name": "Quality Assessment for SoftwareUnderstanding/RsMetaCheck",
"description": "Automated tool to detect metadata quality pitfalls in software repositories (Python, Java, C++, etc.). Analyzes SoMEF output files for version mismatches, license issues, broken URLs, and more.",
"creator": {
"@type": "schema:Person",
"name": "Anonymous",
"email": "example@email.com"
},
"dateCreated": "2026-05-29T14:41:56Z",
"license": {
"@id": "https://opensource.org/license/mit"
},
"assessedSoftware": {
"@type": "schema:SoftwareApplication",
"name": "SoftwareUnderstanding/RsMetaCheck",
"softwareVersion": "0.3.2",
"url": "https://github.com/SoftwareUnderstanding/RsMetaCheck",
"schema:identifier": {
"@id": "https://doi.org/10.5281/zenodo.18956787"
},
"commit_id": "e15a9e2aebb63d08b94cc10f12f5efd4a374a65d"
},
"checkingSoftware": {
"@type": "schema:SoftwareApplication",
"name": "RSMetacheck",
"@id": "https://w3id.org/rsmetacheck",
"softwareVersion": "0.3.1"
},
"checks": [
{
"@type": "CheckResult",
"assessesIndicator": {
"@id": "https://w3id.org/rsmetacheck/catalog/#W001"
},
"process": "Analyzes software requirements in metadata to see if they lack explicit version constraints.",
"status": {
"@id": "schema:CompletedActionStatus"
},
"output": "true",
"evidence": "W001 detected: pyproject.toml contains software requirements without versions: poetry-core",
"suggestion": "Add version numbers to your dependencies. This provides stability for users and allows reproducibility across different environments.",
"checkId": "c6106e77f284408904dc592481cae5bfd5fcf66e9e4ecbfeab0c2dbbca4923d1"
},
{
"@type": "CheckResult",
"assessesIndicator": {
"@id": "https://w3id.org/rsmetacheck/catalog/#W002"
},
"process": "Compares the dateModified field against the last updated date of the actual repository.",
"status": {
"@id": "schema:CompletedActionStatus"
},
"output": "true",
"evidence": "W002 detected: metadata files dateModified '2025-09-19T00:00:00' is outdated compared to repository date '2026-05-27T16:30:05'",
"suggestion": "The data in the metadata file should be updated to be aligned with the date of the latest release (2026-05-27T16:30:05).",
"checkId": "9fc5111ff6139c772042983c3b0611efaa23fec563d4edda52bc90caf0daf403"
},
{
"@type": "CheckResult",
"assessesIndicator": {
"@id": "https://w3id.org/rsmetacheck/catalog/#W004"
},
"process": "Checks programming language declarations in codemeta.json to see if they lack specific version numbers.",
"status": {
"@id": "schema:CompletedActionStatus"
},
"output": "true",
"evidence": "W004 detected: metadata files Programming languages without versions: Python",
"suggestion": "Include version numbers for each programming language used. Defining these helps ensure reproducibility and compatibility across systems.",
"checkId": "d4846ed456a4db4a83afef9594d6fbec1e97a1ca5b54e3080ea1397c90c99b07"
}
]
}
Loading
Loading