From 7a3314c8dde7414a4c649b137f1311b75d24f0eb Mon Sep 17 00:00:00 2001 From: aelhounsri Date: Wed, 11 Mar 2026 10:31:31 +0100 Subject: [PATCH 1/2] Syncing dev with main branch --- results/pitfalls/output_1_pitfalls.jsonld | 104 +++++++++ results/somef/output_1.json | 1 + results/summary.json | 265 ++++++++++++++++++++++ 3 files changed, 370 insertions(+) create mode 100644 results/pitfalls/output_1_pitfalls.jsonld create mode 100644 results/somef/output_1.json create mode 100644 results/summary.json diff --git a/results/pitfalls/output_1_pitfalls.jsonld b/results/pitfalls/output_1_pitfalls.jsonld new file mode 100644 index 0000000..1fb322c --- /dev/null +++ b/results/pitfalls/output_1_pitfalls.jsonld @@ -0,0 +1,104 @@ +{ + "@context": "[IN PROCESS]", + "@type": "SoftwareQualityAssessment", + "name": "Quality Assessment for tidyverse/tidyverse", + "description": "Easily install and load packages from the tidyverse", + "creator": { + "@type": "schema:Person", + "name": "Anonymous", + "email": "example@email.com" + }, + "dateCreated": "2026-03-09T11:04:30Z", + "license": { + "@id": "https://opensource.org/license/mit" + }, + "assessedSoftware": { + "@type": "schema:SoftwareApplication", + "name": "tidyverse/tidyverse", + "softwareVersion": "v2.0.0", + "url": "https://github.com/tidyverse/tidyverse", + "commit_id": "0231aafbc56914ee5371dd6c7b60677f168d7154" + }, + "checks": [ + { + "@type": "CheckResult", + "assessesIndicator": { + "@id": "https://w3id.org/rsmetacheck/catalog/#P001" + }, + "checkingSoftware": { + "@type": "schema:SoftwareApplication", + "name": "RSMetacheck", + "@id": "https://w3id.org/rsmetacheck", + "softwareVersion": "0.2.0" + }, + "process": "Compares the version found in the metadata file with the latest repository release tag.", + "status": { + "@id": "schema:CompletedActionStatus" + }, + "output": "true", + "evidence": "P001 detected: codemeta.json version '1.2.1.9000' does not match release version '2.0.0'", + "suggestion": "Ensure the version in your metadata matches the latest official release. Keeping these synchronized avoids confusion for users and improves reproducibility.", + "checkId": "d5abee7e3b49470e8d53a72ecd7200b8197fe4acef28544cdfbe737ef2497a9d" + }, + { + "@type": "CheckResult", + "assessesIndicator": { + "@id": "https://w3id.org/rsmetacheck/catalog/#P003" + }, + "checkingSoftware": { + "@type": "schema:SoftwareApplication", + "name": "RSMetacheck", + "@id": "https://w3id.org/rsmetacheck", + "softwareVersion": "0.2.0" + }, + "process": "Analyzes author fields in metadata to see if multiple distinct authors are merged into a single string.", + "status": { + "@id": "schema:CompletedActionStatus" + }, + "output": "true", + "evidence": "P003 detected: DESCRIPTION Multiple authors found in single field: 'Posit Software, PBC'", + "suggestion": "You should separate multiple authors into a structured list. This allows tools and citation systems to correctly identify and credit each contributor.", + "checkId": "bd27c80fcfeaba3cff17a63eeac949f20e150ef91b00566589ce3c9f51053639" + }, + { + "@type": "CheckResult", + "assessesIndicator": { + "@id": "https://w3id.org/rsmetacheck/catalog/#P010" + }, + "checkingSoftware": { + "@type": "schema:SoftwareApplication", + "name": "RSMetacheck", + "@id": "https://w3id.org/rsmetacheck", + "softwareVersion": "0.2.0" + }, + "process": "Analyzes the LICENSE file to determine if it only contains a copyright notice without any actual usage terms.", + "status": { + "@id": "schema:CompletedActionStatus" + }, + "output": "true", + "evidence": "P010 detected: LICENSE file only contains copyright information without actual license terms", + "suggestion": "You need to include the complete text of a recognized license such as MIT, Apache 2.0, or GPL. A full license clarifies rights and usage conditions for others", + "checkId": "e5a81eaf374af4d2e5a2e68f8de68dde7f3fa4bb0a5d288c10dbd62b73dff6c9" + }, + { + "@type": "CheckResult", + "assessesIndicator": { + "@id": "https://w3id.org/rsmetacheck/catalog/#P017" + }, + "checkingSoftware": { + "@type": "schema:SoftwareApplication", + "name": "RSMetacheck", + "@id": "https://w3id.org/rsmetacheck", + "softwareVersion": "0.2.0" + }, + "process": "Compares the version field in codemeta.json against the package manager version.", + "status": { + "@id": "schema:CompletedActionStatus" + }, + "output": "true", + "evidence": "P017 detected: codemeta.json version '1.2.1.9000' does not match package version", + "suggestion": "You need to synchronize all version references across metadata and build configuration files.", + "checkId": "6b8e9e41e7fa2d9cb7101212ce191a8ef2acfcd6afba175005cef78173dc945a" + } + ] +} \ No newline at end of file diff --git a/results/somef/output_1.json b/results/somef/output_1.json new file mode 100644 index 0000000..4d04722 --- /dev/null +++ b/results/somef/output_1.json @@ -0,0 +1 @@ +{"somef_provenance": {"somef_version": "0.9.13", "somef_schema_version": "1.0.0", "date": "2026-03-09 12:04:20"}, "code_repository": [{"result": {"value": "https://github.com/tidyverse/tidyverse", "type": "Url"}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"value": "https://github.com/tidyverse/tidyverse", "type": "Url"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "https://github.com/tidyverse/tidyverse", "type": "Url"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}], "owner": [{"result": {"value": "tidyverse", "type": "Organization"}, "confidence": 1, "technique": "GitHub_API"}], "date_created": [{"result": {"value": "2016-09-06T13:29:39Z", "type": "Date"}, "confidence": 1, "technique": "GitHub_API"}], "date_updated": [{"result": {"value": "2026-03-05T15:47:15Z", "type": "Date"}, "confidence": 1, "technique": "GitHub_API"}], "description": [{"result": {"value": "Easily install and load packages from the tidyverse", "type": "String"}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"value": "The 'tidyverse' is a set of packages that work in harmony\n because they share common data representations and 'API' design. This\n package is designed to make it easy to install and load multiple\n 'tidyverse' packages in a single step. Learn more about the 'tidyverse'\n at .", "type": "String"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "The 'tidyverse' is a set of packages that work in harmony\n because they share common data representations and 'API' design. This\n package is designed to make it easy to install and load multiple\n 'tidyverse' packages in a single step. Learn more about the\n 'tidyverse' at .", "type": "String", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}, {"result": {"type": "Text_excerpt", "value": "The tidyverse is a set of packages that work in harmony because they\nshare common data representations and API design. The **tidyverse**\npackage is designed to make it easy to install and load core packages\nfrom the tidyverse in a single command. \n", "original_header": "Overview"}, "confidence": 0.8991138595001452, "technique": "supervised_classification", "source": "https://github.com/tidyverse/tidyverse/blob/main/README.md"}, {"result": {"type": "Text_excerpt", "value": "As well as the core tidyverse, installing this package also installs a\nselection of other packages that you\u2019re likely to use frequently, but\nprobably not in every analysis. This includes packages for: \n- Working with specific types of vectors: \n- Importing other types of data: \n - [haven](https://github.com/tidyverse/haven), for SPSS, SAS and Stata\n files.\n - [httr](https://github.com/r-lib/httr), for web apis.\n - [jsonlite](https://github.com/jeroen/jsonlite) for JSON.\n - [readxl](https://github.com/tidyverse/readxl), for `.xls` and\n `.xlsx` files.\n - [rvest](https://github.com/tidyverse/rvest), for web scraping.\n - [xml2](https://github.com/r-lib/xml2), for XML. \n - [broom](https://github.com/tidymodels/broom), for turning models\n into tidy data\n \n", "original_header": "Packages"}, "confidence": 0.9324222292508315, "technique": "supervised_classification", "source": "https://github.com/tidyverse/tidyverse/blob/main/README.md"}, {"result": {"type": "Text_excerpt", "value": "Please note that the tidyverse project is released with a [Contributor\nCode of Conduct](https://tidyverse.tidyverse.org/CODE_OF_CONDUCT.html).\nBy contributing to this project, you agree to abide by its terms. \n", "original_header": "Code of Conduct"}, "confidence": 0.9486676331928033, "technique": "supervised_classification", "source": "https://github.com/tidyverse/tidyverse/blob/main/README.md"}], "name": [{"result": {"value": "tidyverse", "type": "String"}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"value": "tidyverse: Easily Install and Load the 'Tidyverse'", "type": "String"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}], "full_name": [{"result": {"value": "tidyverse/tidyverse", "type": "String"}, "confidence": 1, "technique": "GitHub_API"}], "issue_tracker": [{"result": {"value": "https://api.github.com/repos/tidyverse/tidyverse/issues", "type": "Url"}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"value": "https://github.com/tidyverse/tidyverse/issues", "type": "Url"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "https://github.com/tidyverse/tidyverse/issues", "type": "Url"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}], "forks_url": [{"result": {"value": "https://api.github.com/repos/tidyverse/tidyverse/forks", "type": "Url"}, "confidence": 1, "technique": "GitHub_API"}], "stargazers_count": [{"result": {"value": 1779, "type": "Number"}, "confidence": 1, "technique": "GitHub_API"}], "keywords": [{"result": {"value": "data-science, r, tidyverse", "type": "String"}, "confidence": 1, "technique": "GitHub_API"}], "forks_count": [{"result": {"value": 292, "type": "Number"}, "confidence": 1, "technique": "GitHub_API"}], "homepage": [{"result": {"value": "https://tidyverse.tidyverse.org", "type": "Url"}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"value": "https://tidyverse.tidyverse.org", "type": "Url"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}], "download_url": [{"result": {"value": "https://github.com/tidyverse/tidyverse/releases", "type": "Url"}, "confidence": 1, "technique": "GitHub_API"}], "programming_languages": [{"result": {"value": "R", "name": "R", "type": "Programming_language", "size": 14852}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"value": "TeX", "name": "TeX", "type": "Programming_language", "size": 9419}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"name": "R", "value": "R", "type": "Programming_language", "version": "3.4.2", "url": "https://r-project.org"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}], "releases": [{"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/93494150", "tag": "v2.0.0", "name": "tidyverse 2.0.0", "author": {"name": "hadley", "type": "User"}, "description": "* lubridate is now a member of the core tidyverse (#157)!\r\n\r\n* tidyverse now installs ragg (#310).\r\n\r\n* Loading the tidyverse now advertises `library(conflicted)` because it \r\n resolves many conflict problems and silences tidyverse's automated report \r\n (#218).\r\n\r\n* `tidyverse_sitrep()` correctly displays installed package versions and \r\n highlights development versions of pacakges (#222).\r\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v2.0.0", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v2.0.0", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v2.0.0", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/93494150", "release_id": 93494150, "date_created": "2023-02-21T13:20:32Z", "date_published": "2023-02-23T20:19:08Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/72221196", "tag": "v1.3.2", "name": "tidyverse 1.3.2", "author": {"name": "hadley", "type": "User"}, "description": "* Text version of the citation now lists all authors (#269).\r\n\r\n* All packages have been bumped to their latest versions.\r\n\r\n* Messaging uses modern approach to avoid red text in RStudio (#296).\r\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v1.3.2", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v1.3.2", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v1.3.2", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/72221196", "release_id": 72221196, "date_created": "2022-07-06T18:52:35Z", "date_published": "2022-07-18T12:39:30Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/41482998", "tag": "v1.3.1", "name": "tidyverse 1.3.1", "author": {"name": "hadley", "type": "User"}, "description": "* tidyverse now installs dtplyr (#216), googledrive, and googlesheets4 (#229).\r\n All packages have been bumped to their latest versions.\r\n\r\n* License changed to MIT (#235).\r\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v1.3.1", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v1.3.1", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v1.3.1", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/41482998", "release_id": 41482998, "date_created": "2021-04-15T12:32:27Z", "date_published": "2021-04-15T13:32:55Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/21655252", "tag": "v1.3.0", "name": "tidyverse 1.3.0", "author": {"name": "hadley", "type": "User"}, "description": "* The tidyverse now has an associated paper at the [Journal of Open Source Software](http://joss.theoj.org/) that you can use to cite the tidyverse if you use it in a paper - see `citation(\"tidyverse\")` for details. \r\n \r\n* Eliminate repeats in the package list when loading an odd number of \r\n packages (#94, #100, @dchiu911) \r\n \r\n* Packages attached from same library they were initially loaded from \r\n (#171, @gabrocsardi) \r\n \r\n* If conflicted package is loaded, omit display of conflicts. \r\n This includes fix to `tidyverse_conflicts()` to avoid accidentally \r\n triggering conflited shims (#136). \r\n \r\n* `tidyverse_deps()` now succeeds even if a dependency of a depedency \r\n is missing (#152, @PoGibas). It no longer includes dependencies that \r\n are needed by the tidyverse package but are not strictly part of the \r\n tidyverse (i.e. cli, crayon, and rstudioapi). \r\n \r\n* `tidyverse_deps()` and `tidyverse_update()` gain a new `repos` argument \r\n that gets passed to the base function `available.packages()` (@zkamvar, #82) \r\n \r\n* `tidyverse_packages()` corrently returns packages names (#93, #106, @coatless) \r\n \r\n* `tidyverse_sitrep()` gives you a situtation report on your install of \r\n the tidyverse (#203) \r\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v1.3.0", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v1.3.0", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v1.3.0", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/21655252", "release_id": 21655252, "date_created": "2019-11-20T00:00:23Z", "date_published": "2019-11-21T14:19:55Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/8515358", "tag": "v1.2.1", "name": "tidyverse 1.2.1", "author": {"name": "hadley", "type": "User"}, "description": "* Require modern versions of all packages (#85)\r\n\r\n* Work with RStudio 1.0 and earlier (#88).\r\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v1.2.1", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v1.2.1", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v1.2.1", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/8515358", "release_id": 8515358, "date_created": "2017-11-13T20:08:43Z", "date_published": "2017-11-14T19:45:56Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/8424204", "tag": "v1.2.0", "name": "tidyverse 1.2.0", "author": {"name": "hadley", "type": "User"}, "description": "## Changes to tidyverse membership\r\n\r\n* stringr and forcats are now part of the core tidyverse, so they are \r\n attached when you `library(tidyverse)`.\r\n\r\n* reprex joins the tidyverse to make it easier to create reproducible\r\n examples (#47)\r\n\r\n## Other improvements\r\n\r\n* On attach, tidyverse now makes better use of the horizontal space, \r\n printing packages and versions in two columns (#59). It only prints\r\n packages that it attaches, not packages that you've already attached.\r\n Development versions are highlighted in red.\r\n \r\n You can now suppress this startup message by setting \r\n `options(tidyverse.quiet = TRUE)`\r\n\r\n* `tidyverse_conflicts()` now prints all conflicts that involve at least\r\n one tidyverse package; Previously it only omitted any intra-tidyverse\r\n conflicts (#26). I've also tweaked the display of conflicts to hopefully \r\n make it more clear which function is the \"winner\".\r\n\r\n* `tidyverse_update()` now just gives you the code you need to update the \r\n packges, since in general it's not possible to update packages that are\r\n already loaded.\r\n\r\n* feather is now _actually_ in suggests.\r\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v1.2.0", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v1.2.0", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v1.2.0", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/8424204", "release_id": 8424204, "date_created": "2017-11-07T19:27:16Z", "date_published": "2017-11-14T21:18:34Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/5288286", "tag": "v1.1.1", "name": "tidyverse 1.1.1", "author": {"name": "hadley", "type": "User"}, "description": "- Moved feather from Imports to Suggests - feather is part of the tidyverse\n but it's installation requirements (C++11 + little-endian) make it painful\n in many scenarios (#36).\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v1.1.1", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v1.1.1", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v1.1.1", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/5288286", "release_id": 5288286, "date_created": "2017-01-27T17:02:33Z", "date_published": "2017-01-27T18:14:51Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/5219032", "tag": "v1.1.0", "name": "tidyverse 1.1.0", "author": {"name": "hadley", "type": "User"}, "description": "- Added a `NEWS.md` file to track changes to the package.\n- Membership changes:\n - Removed DBI (since very different API, #16)\n - Added feather (#15)\n- `tidyverse_deps()` and `tidyverse_packages()` are now exported so you can\n more easily see the make up of the tidyverse, and what package versions\n you have (#18, #23)\n- `suppressPackageStartupMessages()` now suppresses all messages during\n loading (#19). `suppressPackageStartupMessages()` is called automatically\n for all tidyverse packages (#27).\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v1.1.0", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v1.1.0", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v1.1.0", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/5219032", "release_id": 5219032, "date_created": "2017-01-19T23:28:54Z", "date_published": "2017-01-20T15:08:55Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}, {"result": {"type": "Release", "value": "https://api.github.com/repos/tidyverse/tidyverse/releases/4142828", "tag": "v1.0.0", "name": "Tidyverse 1.0.0", "author": {"name": "hadley", "type": "User"}, "description": "Initial release\n", "tarball_url": "https://api.github.com/repos/tidyverse/tidyverse/tarball/v1.0.0", "zipball_url": "https://api.github.com/repos/tidyverse/tidyverse/zipball/v1.0.0", "html_url": "https://github.com/tidyverse/tidyverse/releases/tag/v1.0.0", "url": "https://api.github.com/repos/tidyverse/tidyverse/releases/4142828", "release_id": 4142828, "date_created": "2016-09-09T19:57:09Z", "date_published": "2016-09-15T14:16:19Z", "assets": []}, "confidence": 1, "technique": "GitHub_API"}], "continuous_integration": [{"result": {"value": "https://travis-ci.org/tidyverse/tidyverse", "type": "Url"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}], "identifier": [{"result": {"value": "tidyverse", "type": "String"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}], "readme_url": [{"result": {"value": "https://github.com/tidyverse/tidyverse/blob/main/README.md", "type": "String"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/README.md", "type": "Url"}, "confidence": 1, "technique": "file_exploration"}], "version": [{"result": {"value": "1.2.1.9000", "type": "String"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "2.0.0.9000", "type": "String", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}], "authors": [{"result": {"value": "Hadley Wickham", "type": "String", "email": "hadley@rstudio.com"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "Hadley Wickham", "type": "Agent", "email": "hadley@posit.co"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}, {"result": {"value": "Posit Software, PBC", "type": "Agent"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}], "license": [{"result": {"value": "https://spdx.org/licenses/GPL-3.0", "type": "License", "identifier": "https://spdx.org/licenses/https://spdx.org/licenses/GPL-3.0", "spdx_id": "https://spdx.org/licenses/GPL-3.0"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "MIT + file LICENSE", "type": "String", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}, {"result": {"value": "YEAR: 2024\nCOPYRIGHT HOLDER: tidyverse authors\n", "type": "File_dump"}, "confidence": 1, "technique": "file_exploration", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/LICENSE"}], "requirements": [{"result": {"value": "broom==0.4.4", "name": "broom", "version": "0.4.4", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "cli==1.0.0", "name": "cli", "version": "1.0.0", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "crayon==1.3.4", "name": "crayon", "version": "1.3.4", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "dbplyr==1.2.1", "name": "dbplyr", "version": "1.2.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "dplyr==0.7.4", "name": "dplyr", "version": "0.7.4", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "forcats==0.3.0", "name": "forcats", "version": "0.3.0", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "ggplot2==2.2.1", "name": "ggplot2", "version": "2.2.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "haven==1.1.1", "name": "haven", "version": "1.1.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "hms==0.4.2", "name": "hms", "version": "0.4.2", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "httr==1.3.1", "name": "httr", "version": "1.3.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "jsonlite==1.5", "name": "jsonlite", "version": "1.5", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "lubridate==1.7.4", "name": "lubridate", "version": "1.7.4", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "magrittr==1.5", "name": "magrittr", "version": "1.5", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "modelr==0.1.1", "name": "modelr", "version": "0.1.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "pillar==1.2.1", "name": "pillar", "version": "1.2.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "purrr==0.2.4", "name": "purrr", "version": "0.2.4", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "readr==1.1.1", "name": "readr", "version": "1.1.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "readxl==1.0.0", "name": "readxl", "version": "1.0.0", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "reprex==0.2.0", "name": "reprex", "version": "0.2.0", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "rlang==0.2.0", "name": "rlang", "version": "0.2.0", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "rstudioapi==0.7", "name": "rstudioapi", "version": "0.7", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "rvest==0.3.2", "name": "rvest", "version": "0.3.2", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "stringr==1.3.0", "name": "stringr", "version": "1.3.0", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "tibble==1.4.2", "name": "tibble", "version": "1.4.2", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "tidyr==0.8.0", "name": "tidyr", "version": "0.8.0", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "xml2==1.1.1", "name": "xml2", "version": "1.1.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}, {"result": {"value": "R==3.1", "name": "R", "version": "3.1", "type": "Software_application"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/codemeta.json"}], "has_build_file": [{"result": {"value": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION", "type": "Url", "format": "description"}, "confidence": 1, "technique": "file_exploration", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}], "has_package_file": [{"result": {"value": "DESCRIPTION", "type": "Url", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}], "package_id": [{"result": {"value": "tidyverse", "type": "String", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}, "confidence": 1, "technique": "code_parser", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/DESCRIPTION"}], "code_of_conduct": [{"result": {"value": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participation in our\ncommunity a harassment-free experience for everyone, regardless of age, body\nsize, visible or invisible disability, ethnicity, sex characteristics, gender\nidentity and expression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, caste, color, religion, or sexual\nidentity and orientation.\n\nWe pledge to act and interact in ways that contribute to an open, welcoming,\ndiverse, inclusive, and healthy community.\n\n## Our Standards\n\nExamples of behavior that contributes to a positive environment for our\ncommunity include:\n\n* Demonstrating empathy and kindness toward other people\n* Being respectful of differing opinions, viewpoints, and experiences\n* Giving and gracefully accepting constructive feedback\n* Accepting responsibility and apologizing to those affected by our mistakes,\n and learning from the experience\n* Focusing on what is best not just for us as individuals, but for the overall\n community\n\nExamples of unacceptable behavior include:\n\n* The use of sexualized language or imagery, and sexual attention or advances of\n any kind\n* Trolling, insulting or derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or email address,\n without their explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\n## Enforcement Responsibilities\n\nCommunity leaders are responsible for clarifying and enforcing our standards of\nacceptable behavior and will take appropriate and fair corrective action in\nresponse to any behavior that they deem inappropriate, threatening, offensive,\nor harmful.\n\nCommunity leaders have the right and responsibility to remove, edit, or reject\ncomments, commits, code, wiki edits, issues, and other contributions that are\nnot aligned to this Code of Conduct, and will communicate reasons for moderation\ndecisions when appropriate.\n\n## Scope\n\nThis Code of Conduct applies within all community spaces, and also applies when\nan individual is officially representing the community in public spaces.\nExamples of representing our community include using an official e-mail address,\nposting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported to the community leaders responsible for enforcement at codeofconduct@posit.co. \nAll complaints will be reviewed and investigated promptly and fairly.\n\nAll community leaders are obligated to respect the privacy and security of the\nreporter of any incident.\n\n## Enforcement Guidelines\n\nCommunity leaders will follow these Community Impact Guidelines in determining\nthe consequences for any action they deem in violation of this Code of Conduct:\n\n### 1. Correction\n\n**Community Impact**: Use of inappropriate language or other behavior deemed\nunprofessional or unwelcome in the community.\n\n**Consequence**: A private, written warning from community leaders, providing\nclarity around the nature of the violation and an explanation of why the\nbehavior was inappropriate. A public apology may be requested.\n\n### 2. Warning\n\n**Community Impact**: A violation through a single incident or series of\nactions.\n\n**Consequence**: A warning with consequences for continued behavior. No\ninteraction with the people involved, including unsolicited interaction with\nthose enforcing the Code of Conduct, for a specified period of time. This\nincludes avoiding interactions in community spaces as well as external channels\nlike social media. Violating these terms may lead to a temporary or permanent\nban.\n\n### 3. Temporary Ban\n\n**Community Impact**: A serious violation of community standards, including\nsustained inappropriate behavior.\n\n**Consequence**: A temporary ban from any sort of interaction or public\ncommunication with the community for a specified period of time. No public or\nprivate interaction with the people involved, including unsolicited interaction\nwith those enforcing the Code of Conduct, is allowed during this period.\nViolating these terms may lead to a permanent ban.\n\n### 4. Permanent Ban\n\n**Community Impact**: Demonstrating a pattern of violation of community\nstandards, including sustained inappropriate behavior, harassment of an\nindividual, or aggression toward or disparagement of classes of individuals.\n\n**Consequence**: A permanent ban from any sort of public interaction within the\ncommunity.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage],\nversion 2.1, available at\n.\n\nCommunity Impact Guidelines were inspired by\n[Mozilla's code of conduct enforcement ladder][https://github.com/mozilla/inclusion].\n\nFor answers to common questions about this code of conduct, see the FAQ at\n. Translations are available at .\n\n[homepage]: https://www.contributor-covenant.org\n", "type": "File_dump"}, "confidence": 1, "technique": "file_exploration", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/.github/CODE_OF_CONDUCT.md"}], "contributing_guidelines": [{"result": {"value": "# Contributing to tidyverse\n\nThis outlines how to propose a change to tidyverse. \nFor more detailed info about contributing to this, and other tidyverse packages, please see the\n[**development contributing guide**](https://rstd.io/tidy-contrib). \n\n## Fixing typos\n\nYou can fix typos, spelling mistakes, or grammatical errors in the documentation directly using the GitHub web interface, as long as the changes are made in the _source_ file. \nThis generally means you'll need to edit [roxygen2 comments](https://roxygen2.r-lib.org/articles/roxygen2.html) in an `.R`, not a `.Rd` file. \nYou can find the `.R` file that generates the `.Rd` by reading the comment in the first line.\n\n## Bigger changes\n\nIf you want to make a bigger change, it's a good idea to first file an issue and make sure someone from the team agrees that it\u00e2\u20ac\u2122s needed. \nIf you\u00e2\u20ac\u2122ve found a bug, please file an issue that illustrates the bug with a minimal \n[reprex](https://www.tidyverse.org/help/#reprex) (this will also help you write a unit test, if needed).\n\n### Pull request process\n\n* Fork the package and clone onto your computer. If you haven't done this before, we recommend using `usethis::create_from_github(\"batpigandme/tidyverse\", fork = TRUE)`.\n\n* Install all development dependences with `devtools::install_dev_deps()`, and then make sure the package passes R CMD check by running `devtools::check()`. \n If R CMD check doesn't pass cleanly, it's a good idea to ask for help before continuing. \n* Create a Git branch for your pull request (PR). We recommend using `usethis::pr_init(\"brief-description-of-change\")`.\n\n* Make your changes, commit to git, and then create a PR by running `usethis::pr_push()`, and following the prompts in your browser.\n The title of your PR should briefly describe the change.\n The body of your PR should contain `Fixes #issue-number`.\n\n* For user-facing changes, add a bullet to the top of `NEWS.md` (i.e. just below the first header). Follow the style described in .\n\n### Code style\n\n* New code should follow the tidyverse [style guide](https://style.tidyverse.org). \n You can use the [styler](https://CRAN.R-project.org/package=styler) package to apply these styles, but please don't restyle code that has nothing to do with your PR. \n\n* We use [roxygen2](https://cran.r-project.org/package=roxygen2), with [Markdown syntax](https://roxygen2.r-lib.org/articles/rd-formatting.html), for documentation. \n\n* We use [testthat](https://cran.r-project.org/package=testthat) for unit tests. \n Contributions with test cases included are easier to accept. \n\n## Code of Conduct\n\nPlease note that the tidyverse project is released with a\n[Contributor Code of Conduct](CODE_OF_CONDUCT.md). By contributing to this\nproject you agree to abide by its terms.\n", "type": "File_dump"}, "confidence": 1, "technique": "file_exploration", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/.github/CONTRIBUTING.md"}], "citation": [{"result": {"value": "bibentry(\n \"Article\",\n title = \"Welcome to the {tidyverse}\",\n author = \"Hadley Wickham, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D'Agostino McGowan, Romain Fran\u00c3\u00a7ois, Garrett Grolemund, Alex Hayes, Lionel Henry, Jim Hester, Max Kuhn, Thomas Lin Pedersen, Evan Miller, Stephan Milton Bache, Kirill M\u00c3\u00bcller, Jeroen Ooms, David Robinson, Dana Paige Seidel, Vitalie Spinu, Kohske Takahashi, Davis Vaughan, Claus Wilke, Kara Woo, Hiroaki Yutani\",\n year = 2019,\n journal = \"Journal of Open Source Software\",\n volume = 4,\n number = 43,\n pages = 1686,\n doi = \"10.21105/joss.01686\",\n)\n", "type": "File_dump", "format": "bibtex", "datePublished": "2019"}, "confidence": 1, "technique": "file_exploration", "source": "https://raw.githubusercontent.com/tidyverse/tidyverse/main/inst/CITATION"}], "installation": [{"result": {"value": "
\n\n``` r\n# Install from CRAN\ninstall.packages(\"pak\")\n```\n\nIf you have any problems installing tidyverse, we recommend trying with\n[pak](https://pak.r-lib.org) since it is likely to help diagnose the\nproblem:\n\n``` r\n# install.packages(\"pak\")\npak::pak(\"tidyverse\")\n```\n\n
\n\n
\n\n``` r\n# Install the development version from GitHub\n# install.packages(\"pak\")\npak::pak(\"tidyverse/tidyverse\")\n```\n\n
\n\nIf you\u2019re compiling from source, you can run\n`pak::pkg_system_requirements(\"tidyverse\")`, to see the complete set of\nsystem packages needed on your machine.\n", "type": "Text_excerpt", "original_header": "Installation", "parent_header": ["tidyverse "]}, "confidence": 1, "technique": "header_analysis", "source": "https://github.com/tidyverse/tidyverse/blob/main/README.md"}], "usage": [{"result": {"value": "`library(tidyverse)` will load the core tidyverse packages:\n\n- [ggplot2](https://ggplot2.tidyverse.org), for data visualisation.\n- [dplyr](https://dplyr.tidyverse.org), for data manipulation.\n- [tidyr](https://tidyr.tidyverse.org), for data tidying.\n- [readr](https://readr.tidyverse.org), for data import.\n- [purrr](https://purrr.tidyverse.org), for functional programming.\n- [tibble](https://tibble.tidyverse.org), for tibbles, a modern\n re-imagining of data frames.\n- [stringr](https://github.com/tidyverse/stringr), for strings.\n- [forcats](https://github.com/tidyverse/forcats), for factors.\n- [lubridate](https://github.com/tidyverse/lubridate), for date/times.\n\nYou also get a condensed summary of conflicts with other packages you\nhave loaded:\n\n``` r\nlibrary(tidyverse)\n#> \u2714 dplyr 1.1.4 \u2714 readr 2.1.5\n#> \u2714 forcats 1.0.0 \u2714 stringr 1.5.1\n#> \u2714 ggplot2 3.5.1 \u2714 tibble 3.2.1\n#> \u2714 lubridate 1.9.3 \u2714 tidyr 1.3.1\n#> \u2714 purrr 1.0.2 \n#> \u2716 dplyr::filter() masks stats::filter()\n#> \u2716 dplyr::lag() masks stats::lag()\n#> \u2139 Use the conflicted package () to force all conflicts to become errors\n```\n\nYou can see conflicts created later with `tidyverse_conflicts()`:\n\n``` r\nlibrary(MASS)\n#> \n#> Attaching package: 'MASS'\n#> The following object is masked from 'package:dplyr':\n#> \n#> select\ntidyverse_conflicts()\n#> \u2716 dplyr::filter() masks stats::filter()\n#> \u2716 dplyr::lag() masks stats::lag()\n#> \u2716 MASS::select() masks dplyr::select()\n#> \u2139 Use the conflicted package () to force all conflicts to become errors\n```\n\nAnd you can check that all tidyverse packages are up-to-date with\n`tidyverse_update()`:\n\n``` r\ntidyverse_update()\n#> The following packages are out of date:\n#> * broom (0.4.0 -> 0.4.1)\n#> * DBI (0.4.1 -> 0.5)\n#> * Rcpp (0.12.6 -> 0.12.7)\n#>\n#> Start a clean R session then run:\n#> install.packages(c(\"broom\", \"DBI\", \"Rcpp\"))\n```\n", "type": "Text_excerpt", "original_header": "Usage", "parent_header": ["tidyverse "]}, "confidence": 1, "technique": "header_analysis", "source": "https://github.com/tidyverse/tidyverse/blob/main/README.md"}], "application_domain": [{"result": {"type": "String", "value": "Semantic web"}, "confidence": 0.9376536684271587, "technique": "supervised_classification"}], "full_title": [{"result": {"type": "String", "value": "tidyverse"}, "confidence": 1, "technique": "regular_expression", "source": "https://github.com/tidyverse/tidyverse/blob/main/README.md"}]} \ No newline at end of file diff --git a/results/summary.json b/results/summary.json new file mode 100644 index 0000000..829233f --- /dev/null +++ b/results/summary.json @@ -0,0 +1,265 @@ +{ + "summary": { + "total_repositories_analyzed": 1, + "repositories_with_target_languages": 1, + "individual_jsonld_files_created": 1, + "total_pitfalls_detected": 4, + "total_warnings_detected": 0, + "target_languages": [ + "Python", + "Java", + "C++", + "C", + "R", + "Rust" + ], + "evaluated_repositories": { + "tidyverse/tidyverse": { + "url": "https://github.com/tidyverse/tidyverse", + "commit_id": "0231aafbc56914ee5371dd6c7b60677f168d7154" + } + } + }, + "pitfalls & warnings": [ + { + "pitfall_code": "P001", + "pitfall_desc": "The metadata file (codemeta or other) has a version which does not correspond to the version used in the latest release", + "count": 1, + "percentage": 100.0, + "languages": { + "R": 1 + }, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P001" + }, + { + "pitfall_code": "P002", + "pitfall_desc": "LICENSE file contains template placeholders like , , that were not replaced", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P002" + }, + { + "pitfall_code": "P003", + "pitfall_desc": "Metadata files have multiple authors in single field instead of a list", + "count": 1, + "percentage": 100.0, + "languages": { + "R": 1 + }, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P003" + }, + { + "pitfall_code": "P004", + "pitfall_desc": "In codemeta.json README property pointing to their homepage/wiki instead of README file", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P004" + }, + { + "pitfall_code": "P005", + "pitfall_desc": "codemeta.json referencePublication refers to software archive instead of paper", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P005" + }, + { + "pitfall_code": "P006", + "pitfall_desc": "The metadata file has License pointing to a local file instead of stating the name", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P006" + }, + { + "pitfall_code": "P007", + "pitfall_desc": "CITATION.cff does not have referencePublication even though it's referenced in codemeta.json", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P007" + }, + { + "pitfall_code": "P008", + "pitfall_desc": "The metadata file softwareRequirement points to an invalid page", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P008" + }, + { + "pitfall_code": "P009", + "pitfall_desc": "The metadata file coderepository points to their homepage", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P009" + }, + { + "pitfall_code": "P010", + "pitfall_desc": "LICENSE file only contains copyright information without actual license terms", + "count": 1, + "percentage": 100.0, + "languages": { + "R": 1 + }, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P010" + }, + { + "pitfall_code": "P011", + "pitfall_desc": "codemeta.json IssueTracker violates the expected URL format", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P011" + }, + { + "pitfall_code": "P012", + "pitfall_desc": "codemeta.json downloadURL is outdated", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P012" + }, + { + "pitfall_code": "P013", + "pitfall_desc": "The metadata file License does not have the specific version", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P013" + }, + { + "pitfall_code": "P014", + "pitfall_desc": "codemeta.json uses bare DOIs in the identifier field instead of full https://doi.org/ URL", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P014" + }, + { + "pitfall_code": "P015", + "pitfall_desc": "In codemeta.json contIntegration link returns 404", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P015" + }, + { + "pitfall_code": "P016", + "pitfall_desc": "The metadata file codeRepository does not point to the same repository", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P016" + }, + { + "pitfall_code": "P017", + "pitfall_desc": "codemeta.json version does not match the package's", + "count": 1, + "percentage": 100.0, + "languages": { + "R": 1 + }, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P017" + }, + { + "pitfall_code": "P018", + "pitfall_desc": "codemeta.json Identifier uses raw SWHIDs without their resolvable URL", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P018" + }, + { + "pitfall_code": "P019", + "pitfall_desc": "Inconsistent author counts found across metadata files", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#P019" + }, + { + "warning_code": "W001", + "warning_desc": "Software requirements in metadata files don't have version specifications", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W001" + }, + { + "warning_code": "W002", + "warning_desc": "The dateModified in codemeta.json is outdated compared to the actual repository last update date", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W002" + }, + { + "warning_code": "W003", + "warning_desc": "Codemeta.json repository has multiple licenses but only one is listed", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W003" + }, + { + "warning_code": "W004", + "warning_desc": "Programming languages in codemeta.json do not have versions", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W004" + }, + { + "warning_code": "W005", + "warning_desc": "The metadata file softwareRequirements have more than one req, but it's written as one string", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W005" + }, + { + "warning_code": "W006", + "warning_desc": "codemeta.json Identifier is a name instead of a valid unique identifier, but an identifier exist", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W006" + }, + { + "warning_code": "W007", + "warning_desc": "codemeta.json Identifier is empty", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W007" + }, + { + "warning_code": "W008", + "warning_desc": "The metadata file GivenName is a list instead of a string", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W008" + }, + { + "pitfall_code": "W009", + "pitfall_desc": "codemeta.json developmentStatus is a URL instead of a string", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W009" + }, + { + "pitfall_code": "W010", + "pitfall_desc": "The metadata file codeRepository uses Git remote-style shorthand instead of full URL", + "count": 0, + "percentage": 0.0, + "languages": {}, + "pitfall": "https://w3id.org/rsmetacheck/catalog/#W010" + } + ] +} \ No newline at end of file From a756dcb177d35d48801ef696ad24ffb6cd9a1f0a Mon Sep 17 00:00:00 2001 From: aelhounsri Date: Wed, 11 Mar 2026 11:41:55 +0100 Subject: [PATCH 2/2] Fixed the issue with somef config resetting at every command, preparing for 0.2.1 release --- pyproject.toml | 2 +- src/metacheck/cli.py | 5 ++--- src/metacheck/run_somef.py | 25 +++++++++++++++---------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 19d4366..588ec8a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "metacheck" -version = "0.2.0" +version = "0.2.1" description = "Detect metadata pitfalls in software repositories" authors = ["Anas El Hounsri"] readme = "README.md" diff --git a/src/metacheck/cli.py b/src/metacheck/cli.py index 892e3a5..7fe5812 100644 --- a/src/metacheck/cli.py +++ b/src/metacheck/cli.py @@ -1,7 +1,7 @@ import argparse import os from pathlib import Path -from metacheck.run_somef import run_somef_batch, run_somef_single, configure_somef +from metacheck.run_somef import run_somef_batch, run_somef_single, ensure_somef_configured from metacheck.run_analyzer import run_analysis @@ -66,8 +66,7 @@ def cli(): run_analysis(somef_json_paths, args.pitfalls_output, args.analysis_output, verbose=args.verbose) else: - # Before taking any SoMEF actions, configure it - configure_somef() + ensure_somef_configured() threshold = args.threshold somef_output_dir = args.somef_output diff --git a/src/metacheck/run_somef.py b/src/metacheck/run_somef.py index 0c0dd75..5ce1c58 100644 --- a/src/metacheck/run_somef.py +++ b/src/metacheck/run_somef.py @@ -2,16 +2,21 @@ import json import subprocess -def configure_somef(): - """Automatically run 'somef configure -a' if not already configured.""" - print("Configuring SoMEF...") - try: - subprocess.run(["somef", "configure", "-a"], check=True) - print("SoMEF configured successfully.") - return True - except subprocess.CalledProcessError as e: - print(f"Error configuring SoMEF: {e}") - return False +from pathlib import Path + +def ensure_somef_configured(): + """Run 'somef configure -a' only if it hasn't been configured yet.""" + config_file = Path.home() / ".somef" / "config.json" + if not config_file.exists(): + print("SoMEF configuration not found. Running initial setup...") + try: + subprocess.run(["somef", "configure", "-a"], check=True) + print("SoMEF configured successfully.") + return True + except subprocess.CalledProcessError as e: + print(f"Error configuring SoMEF: {e}") + return False + return True def run_somef(repo_url, output_file, threshold): """Run SoMEF on a given repository and save results."""