diff --git a/.github/workflows/test-action.yml b/.github/workflows/test-action.yml
new file mode 100644
index 0000000..314d22e
--- /dev/null
+++ b/.github/workflows/test-action.yml
@@ -0,0 +1,39 @@
+name: Test Action
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+
+jobs:
+ test-action:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Run RsMetaCheck Action on self
+ uses: ./
+ with:
+ # Automatically uses ${{ github.repository }} and checks it
+ verbose: "false"
+ env:
+ # Provide token for SoMEF API rate limits (optional but recommended)
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Verify outputs are generated
+ run: |
+ if [ ! -d "somef_outputs" ]; then
+ echo "somef_outputs directory not found!"
+ exit 1
+ fi
+ if [ ! -d "pitfalls" ]; then
+ echo "pitfalls directory not found!"
+ exit 1
+ fi
+ if [ ! -f "all_pitfalls_results.json" ]; then
+ echo "all_pitfalls_results.json not found!"
+ exit 1
+ fi
+ echo "Output files verified successfully."
diff --git a/README.md b/README.md
index 069d42b..fa08b71 100644
--- a/README.md
+++ b/README.md
@@ -69,7 +69,39 @@ pip install git+https://github.com/SoftwareUnderstanding/RsMetaCheck.git
## Usage
-### Run the Detection Tool
+### GitHub Action
+
+RsMetaCheck can be easily integrated into your CI/CD pipelines as a GitHub Action.
+
+```yaml
+name: RsMetaCheck
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+jobs:
+ check-metadata:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Run RsMetaCheck
+ uses: SoftwareUnderstanding/RsMetaCheck@v0.2.1 # Update to the latest version tag
+ with:
+ # Optional: Include passed checks in output (defaults to false)
+ verbose: "false"
+ env:
+ # Optional: Provide token for SoMEF API rate limits
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+```
+
+The action will generate `all_pitfalls_results.json`, along with the `pitfalls/` and `somef_outputs/` directories directly in your workflow workspace.
+
+### Run the Detection Tool locally
#### Analyze a Single Repository
diff --git a/action.yml b/action.yml
new file mode 100644
index 0000000..72c3b78
--- /dev/null
+++ b/action.yml
@@ -0,0 +1,56 @@
+name: "RsMetaCheck"
+description: "Detect metadata pitfalls and warnings in software repositories using SoMEF."
+author: "SoftwareUnderstanding"
+branding:
+ icon: "check-circle"
+ color: "blue"
+
+inputs:
+ repository_url:
+ description: "URL of the repository to analyze. Defaults to the current GitHub workspace repository."
+ required: false
+ default: "https://github.com/${{ github.repository }}"
+ branch:
+ description: "Specific branch to analyze."
+ required: false
+ input_file:
+ description: "Path to a JSON file containing a list of repositories to analyze."
+ required: false
+ verbose:
+ description: "Whether to include all tests (even passed ones) in the final JSON-LD output."
+ required: false
+ default: "false"
+
+runs:
+ using: "composite"
+ steps:
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: "3.11"
+ cache: "pip"
+
+ - name: Install RsMetaCheck
+ shell: bash
+ run: pip install ${{ github.action_path }}
+
+ - name: Run RsMetaCheck
+ shell: bash
+ run: |
+ CMD="rsmetacheck"
+
+ if [ -n "${{ inputs.input_file }}" ]; then
+ CMD="$CMD --input ${{ inputs.input_file }}"
+ elif [ -n "${{ inputs.repository_url }}" ]; then
+ CMD="$CMD --input ${{ inputs.repository_url }}"
+ if [ -n "${{ inputs.branch }}" ]; then
+ CMD="$CMD --branch ${{ inputs.branch }}"
+ fi
+ fi
+
+ if [ "${{ inputs.verbose }}" == "true" ]; then
+ CMD="$CMD --verbose"
+ fi
+
+ echo "Running: $CMD"
+ eval "$CMD"
diff --git a/docs/ground_truth/index.html b/docs/ground_truth/index.html
index 38a85db..d6c2829 100644
--- a/docs/ground_truth/index.html
+++ b/docs/ground_truth/index.html
@@ -18,7 +18,7 @@
margin-bottom: 30px;
}
.table-container {
- max-width: 1200px;
+ max-width: 95%;
margin: 0 auto;
overflow-x: auto;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
@@ -95,7 +95,7 @@
Ground TruthReport
Pitfall / Warning Code |
Description |
Source File |
- Automated |
+ Commit ID |
@@ -126,11 +126,11 @@ Ground TruthReport
let isFirstContext = true;
for (const [code, info] of pEntries) {
- addRow(tbody, url, code, info, 'p', isFirstContext, totalRows);
+ addRow(tbody, url, code, info, 'p', isFirstContext, totalRows, repoData);
isFirstContext = false;
}
for (const [code, info] of wEntries) {
- addRow(tbody, url, code, info, 'w', isFirstContext, totalRows);
+ addRow(tbody, url, code, info, 'w', isFirstContext, totalRows, repoData);
isFirstContext = false;
}
@@ -144,7 +144,7 @@ Ground TruthReport
});
});
- function addRow(tbody, url, code, info, type, isFirstContext, totalRows) {
+ function addRow(tbody, url, code, info, type, isFirstContext, totalRows, repoData) {
const tr = document.createElement('tr');
if (isFirstContext) {
@@ -179,14 +179,30 @@ Ground TruthReport
const tdSource = document.createElement('td');
tdSource.textContent = info.source_file || 'Unknown';
- // Automated Column
- const tdAutomated = document.createElement('td');
- tdAutomated.textContent = 'Yes';
-
tr.appendChild(tdCode);
tr.appendChild(tdDesc);
tr.appendChild(tdSource);
- tr.appendChild(tdAutomated);
+
+ if (isFirstContext) {
+ const tdCommit = document.createElement('td');
+ tdCommit.style.whiteSpace = 'nowrap';
+ const commitId = repoData['commit ID'];
+ if (commitId) {
+ const aCommit = document.createElement('a');
+ let cleanUrl = url.endsWith('/') ? url.slice(0, -1) : url;
+ let treePath = cleanUrl.includes('gitlab') ? '/-/tree/' : '/tree/';
+ aCommit.href = `${cleanUrl}${treePath}${commitId}`;
+ aCommit.textContent = commitId.substring(0, 7);
+ aCommit.className = 'repo-link';
+ aCommit.style.wordBreak = 'normal';
+ aCommit.target = '_blank';
+ tdCommit.appendChild(aCommit);
+ } else {
+ tdCommit.textContent = 'Unknown';
+ }
+ tdCommit.rowSpan = totalRows;
+ tr.appendChild(tdCommit);
+ }
tbody.appendChild(tr);
}
diff --git a/docs/ground_truth/summary_pitfalls_warnings.json b/docs/ground_truth/summary_pitfalls_warnings.json
index c955629..01eaf0e 100644
--- a/docs/ground_truth/summary_pitfalls_warnings.json
+++ b/docs/ground_truth/summary_pitfalls_warnings.json
@@ -10,9 +10,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "245b109d77370eec2eb7c4dce0370638887aa7c6"
},
"repo_2": {
"url": "https://github.com/damiendevienne/phylter",
@@ -21,7 +22,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "4d74241169be3882da9d5f08da47bd40604764eb"
},
"repo_3": {
"url": "https://github.com/gavinsimpson/data.adapt.multi.test",
@@ -32,7 +34,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -44,7 +46,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Identifier is empty"
}
- }
+ },
+ "commit ID": "b33e222ddb9e05da62afb0bbfd88bd8a3567ac89"
},
"repo_4": {
"url": "https://github.com/FairRootGroup/FairMQ",
@@ -55,10 +58,11 @@
},
"P006": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "License pointing to a local file instead of stating the name. For example: \u201clicense\u201d: LICENSE.MD"
+ "description": "License pointing to a local file instead of stating the name. For example: “license”: LICENSE.MD"
}
},
- "warnings": {}
+ "warnings": {},
+ "commit ID": "fa64faf3f755e9b00e0af738826718bf5117c8ea"
},
"repo_5": {
"url": "https://github.com/neuronsimulator/nrn",
@@ -66,7 +70,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -76,7 +80,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "aba5057b527587f1ca9a43b772edf47346d41e5a"
},
"repo_6": {
"url": "https://github.com/gabrielblain/CropWaterBalance",
@@ -95,7 +100,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "6b6a27d027b3508b62aff062cb8fd66f3942951e"
},
"repo_7": {
"url": "https://github.com/instatdealii/idealii",
@@ -108,7 +114,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -118,7 +124,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "8f6d66b22dfcf276cce0eb275f46fdb2f6c5d59e"
},
"repo_8": {
"url": "https://github.com/sillyplots/spotifyr",
@@ -141,7 +148,8 @@
"source_file": "codemeta.json",
"description": "Identifier is a name instead of a valid unique identifier, but an identifier exist (e.g., in a badge)"
}
- }
+ },
+ "commit ID": "68bc0ae54ee5f727b9ff6b70483f9b4b1fddaf3e"
},
"repo_9": {
"url": "https://github.com/Materials-Data-Science-and-Informatics/dirschema",
@@ -149,13 +157,14 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W009": {
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "297c914fa277e2c720ae08a758707ef8ebe51ef6"
},
"repo_10": {
"url": "https://github.com/sanorthey/pemmss",
@@ -165,7 +174,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "65883be0f53fdfa3911cc8d3847931d1cc9f4037"
},
"repo_11": {
"url": "https://github.com/gemini3d/gemini3d",
@@ -184,7 +194,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "ee89832c620c05101751759f3fbaf1ba9e7d7b74"
},
"repo_12": {
"url": "https://github.com/Sprinterzzj/ggstatsplot",
@@ -201,7 +212,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W003": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
@@ -219,7 +230,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "150a4bd2bb66bd1bdbe19eadec3bb6a6f00c66b7"
},
"repo_13": {
"url": "https://github.com/bioconductor-source/treeio",
@@ -230,34 +242,36 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W004": {
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "df013a97e144086980317527de6fab39dc54e9fa"
},
"repo_14": {
"url": "https://github.com/Kaffeegangster/tclf",
"pitfalls": {
"P006": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "License pointing to a local file instead of stating the name. For example: \u201clicense\u201d: LICENSE.MD"
+ "description": "License pointing to a local file instead of stating the name. For example: “license”: LICENSE.MD"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "d44b74f990c3e2d03d9a3ced3a89ffa619b59d63"
},
"repo_15": {
"url": "https://github.com/BM32ESRF/LaueNN",
@@ -265,7 +279,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -275,7 +289,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "9033ffbf5c5257b0e22289bf6fb175dc678e1c84"
},
"repo_16": {
"url": "https://github.com/Ruitao-Terry/GA-cal",
@@ -290,7 +305,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "62f5b3a8bcd3ae2e3c3e639bd6ad856d2b001d04"
},
"repo_17": {
"url": "https://github.com/LanguageMachines/ucto",
@@ -298,7 +314,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -312,7 +328,8 @@
"source_file": "codemeta.json",
"description": "Identifier is a name instead of a valid unique identifier, but an identifier exist (e.g., in a badge)"
}
- }
+ },
+ "commit ID": "a57692225c4693a4229f7cd74f39465aaa96b4a7"
},
"repo_18": {
"url": "https://github.com/eebrown/workloopR",
@@ -343,7 +360,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "51ca63341023a996fecaa6057109aa8c16029b51"
},
"repo_19": {
"url": "https://gricad-gitlab.univ-grenoble-alpes.fr/bidegarb/nautil/",
@@ -351,13 +369,14 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W004": {
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "5d60f004a965a016cf40cca42cc696e33296969a"
},
"repo_20": {
"url": "https://github.com/lecfab/rescience-gorder",
@@ -365,7 +384,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W004": {
"source_file": "codemeta.json",
@@ -373,9 +392,10 @@
},
"W005": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "softwareRequirements have more than one req, but it\u2019s written as one string"
+ "description": "softwareRequirements have more than one req, but it’s written as one string"
}
- }
+ },
+ "commit ID": "305d28dc1584b152ff981ee81be0de12598b402e"
},
"repo_21": {
"url": "https://github.com/arthurcuri/flixfinder-tis1",
@@ -385,22 +405,24 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "8771f700fd168e2e6c16a4f85b6631ca6b9c569f"
},
"repo_22": {
"url": "https://github.com/ComputationalBiomechanicsLab/opensim-creator",
"pitfalls": {
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "824222911d158f0ffc6929605f8a925ff08fcf64"
},
"repo_23": {
"url": "https://github.com/nazar-mykolyshyn/TikTok-Api",
@@ -408,9 +430,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "3973da62a683b34548d07acb48e334ac5b4cfe6d"
},
"repo_24": {
"url": "https://github.com/iljah/hdintegrator",
@@ -420,7 +443,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "f2ab7fb246ef88a79789e492d1f40d3a07b602d9"
},
"repo_25": {
"url": "https://github.com/peterpolidoro/kicad_netlist_reader",
@@ -437,7 +461,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -451,7 +475,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "1b2108e0a8da04acdb595c724f3272a73f1ab755"
},
"repo_26": {
"url": "https://github.com/ropensci/geojson",
@@ -466,19 +491,20 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W004": {
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "3881c7df07e924b3afce2270b78e316e5e47e79d"
},
"repo_27": {
"url": "https://github.com/Neplex/ArchiTXT",
@@ -491,7 +517,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W003": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
@@ -509,7 +535,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "e82e532453dff78fe5ea2475774be167521c0fca"
},
"repo_28": {
"url": "https://github.com/NeuralEnsemble/PyNN",
@@ -526,7 +553,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -538,9 +565,10 @@
},
"W005": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "softwareRequirements have more than one req, but it\u2019s written as one string"
+ "description": "softwareRequirements have more than one req, but it’s written as one string"
}
- }
+ },
+ "commit ID": "5a53a5144e5c8c739a0ad65435cea23579574a19"
},
"repo_29": {
"url": "https://github.com/Rbfinch/grepq",
@@ -551,7 +579,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -559,7 +587,8 @@
"source_file": "codemeta.json",
"description": "dateModified is outdated"
}
- }
+ },
+ "commit ID": "3251219d23b1242a562a593f4e9f2f98ce797fad"
},
"repo_30": {
"url": "https://github.com/ms609/TreeSearch",
@@ -590,7 +619,8 @@
"source_file": "codemeta.json",
"description": "Identifier is a name instead of a valid unique identifier, but an identifier exist (e.g., in a badge)"
}
- }
+ },
+ "commit ID": "d4af0fba212c8490e2c0250d3872f4b9e0d630c2"
},
"repo_31": {
"url": "https://github.com/inbo/archivaltag",
@@ -613,7 +643,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "ad337685076bb7eae906bee4dae6067812564284"
},
"repo_32": {
"url": "https://github.com/ms609/Quartet",
@@ -632,7 +663,8 @@
"source_file": "codemeta.json",
"description": "Identifier is a name instead of a valid unique identifier, but an identifier exist (e.g., in a badge)"
}
- }
+ },
+ "commit ID": "8b81f549be20f251f71f2be402c5ff6d90dada3f"
},
"repo_33": {
"url": "https://github.com/tvwenger/bayes_spec",
@@ -645,7 +677,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -659,7 +691,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Identifier is empty"
}
- }
+ },
+ "commit ID": "2dc53e3fc9302b8a40fcaec6384ee152c700590a"
},
"repo_34": {
"url": "https://github.com/caseyyoungflesh/MCMCvis",
@@ -682,7 +715,8 @@
"source_file": "codemeta.json",
"description": "Identifier is a name instead of a valid unique identifier, but an identifier exist (e.g., in a badge)"
}
- }
+ },
+ "commit ID": "3c7b05282dbe3b509f2a101e0ac5fd397c283cfa"
},
"repo_35": {
"url": "https://github.com/sep-developers/sep",
@@ -703,13 +737,14 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
"description": "dateModified is outdated"
}
- }
+ },
+ "commit ID": "93b3ac52e0f6cb26449204dc8bc8c3cf65602f0f"
},
"repo_36": {
"url": "https://github.com/ropensci/tradestatistics",
@@ -728,7 +763,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -736,7 +771,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "4c0b85989f0085f4eb4c16eaefab6214b7854b6b"
},
"repo_37": {
"url": "https://github.com/bioc/BioCor",
@@ -755,19 +791,20 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W004": {
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "e26910ce2bb0f6e1b4edcde1b0fa925d78c837a0"
},
"repo_38": {
"url": "https://github.com/ropensci-archive/tidytags",
@@ -786,7 +823,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "65c40bcb0e6721b55be676c42b524e33ea59885e"
},
"repo_39": {
"url": "https://github.com/giscience-fsu/sperrorest",
@@ -809,7 +847,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "b4d2a1426bfcbb2f5630c6182ff946b926f96e4a"
},
"repo_40": {
"url": "https://github.com/IBM/multi-variate-parallel-transformer",
@@ -822,9 +861,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "9f5357bb55d53c66e9cfc63ef39fddb05c1c1ad7"
},
"repo_41": {
"url": "https://github.com/mia-jinns/jinns",
@@ -837,7 +877,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -847,7 +887,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "dbd98a4fe05f04b8f96d1bf23ea977a3938c8d66"
},
"repo_42": {
"url": "https://github.com/PRIDE-Archive/pridepy",
@@ -855,9 +896,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "b046bd00569ae3930b51581d559cc5c5afde866a"
},
"repo_43": {
"url": "https://github.com/fair-test/license-already-here",
@@ -870,7 +912,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -880,7 +922,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "4ca932834fe48821f39300c8de3bf92a4ffd366b"
},
"repo_44": {
"url": "https://github.com/SedFoam/sedfoam",
@@ -888,7 +931,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -898,7 +941,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "08a5552af912fa8c89a265329484618ae7919be9"
},
"repo_45": {
"url": "https://github.com/assume-framework/assume",
@@ -911,7 +955,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -921,7 +965,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "aaa904c603ef267aaab6872d67cd87affcb17688"
},
"repo_46": {
"url": "https://github.com/felixsc1/COSplay",
@@ -948,7 +993,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Identifier is empty"
}
- }
+ },
+ "commit ID": "9a10c3f55b1f80c916d55acb3110402cdfda6fa5"
},
"repo_47": {
"url": "https://github.com/megasanjay/testrepository",
@@ -971,7 +1017,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "b589e13fb3a725d82d6d0f9a8c68de51b765e546"
},
"repo_48": {
"url": "https://github.com/GlobalEcologyLab/poems",
@@ -994,7 +1041,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "129b021c42b726a9cb3e8b2b0786a1bc9513f4d9"
},
"repo_49": {
"url": "https://github.com/EDIorg/ecocomDP",
@@ -1004,7 +1052,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "531bbefc6a584cfde708c8112ac08b9c63b810bc"
},
"repo_50": {
"url": "https://github.com/fhdsl/conrad",
@@ -1015,7 +1064,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -1023,7 +1072,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "f7bda1bcc042e61b96ff84c860f3bb0ff5d690b1"
},
"repo_51": {
"url": "https://github.com/MiguelRodo/Slides24STA5069Z",
@@ -1034,7 +1084,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -1042,7 +1092,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "44fa1574b3dd34eee6eda27fb8428e44c4a9dd51"
},
"repo_52": {
"url": "https://github.com/FairRootGroup/DDS",
@@ -1052,7 +1103,8 @@
"description": "Version does not correspond to the version used in the latest release"
}
},
- "warnings": {}
+ "warnings": {},
+ "commit ID": "39e33651d1fe319411d7c50ff44b5ede31d75f9d"
},
"repo_53": {
"url": "https://github.com/amd/mumps-build",
@@ -1071,7 +1123,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "a9af8ebc5a24c075f62464daf03b30ce6ab1945b"
},
"repo_54": {
"url": "https://github.com/MolSSI/QCEngine",
@@ -1086,7 +1139,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "cdda3660afee241968907c3020ee368ef8230b99"
},
"repo_55": {
"url": "https://github.com/Simple-Robotics/proxsuite",
@@ -1094,9 +1148,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "00a6eff9dcb21f31b8990d232d46fba5d6b18cbf"
},
"repo_56": {
"url": "https://github.com/ropensci/occCite",
@@ -1107,7 +1162,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -1127,7 +1182,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "b1af9efcf9a6b892591297c08bc2f0e1c00b573a"
},
"repo_57": {
"url": "https://github.com/sscu-budapest/lead-contamination-hungary",
@@ -1135,9 +1191,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "17db2298e25bb439873e3746ddab6aad05b9014f"
},
"repo_58": {
"url": "https://github.com/Mariizero/ECGRat",
@@ -1152,7 +1209,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "eaeb1758e791926d267c69807ad5b3dab75c98a9"
},
"repo_59": {
"url": "https://github.com/khinsen/MMTK",
@@ -1165,7 +1223,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1179,7 +1237,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "84547c238580201fe21bf3f227be7c02a1a2b9bc"
},
"repo_60": {
"url": "https://github.com/electronicvisions/releases-ebrains",
@@ -1192,7 +1251,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1204,9 +1263,10 @@
},
"W005": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "softwareRequirements have more than one req, but it\u2019s written as one string"
+ "description": "softwareRequirements have more than one req, but it’s written as one string"
}
- }
+ },
+ "commit ID": "fcd2149561ab1796fba4d2500facdd3e532a6b86"
},
"repo_61": {
"url": "https://github.com/LanguageMachines/foliautils",
@@ -1219,7 +1279,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W004": {
"source_file": "codemeta.json",
@@ -1233,7 +1293,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "bdcfd01531c0b147bfc2cb08f9e8e351db6100fb"
},
"repo_62": {
"url": "https://github.com/yt-project/unyt",
@@ -1248,13 +1309,13 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1264,7 +1325,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Identifier is empty"
}
- }
+ },
+ "commit ID": "969fc6a629d332568832b849c6cb058d405ad442"
},
"repo_63": {
"url": "https://github.com/cristal-smac/ipd",
@@ -1272,7 +1334,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1286,7 +1348,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "40c86c7f7ad51599ed402ab03bbfad398d4cce61"
},
"repo_64": {
"url": "https://github.com/grycap/im-client",
@@ -1303,7 +1366,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W003": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
@@ -1313,7 +1376,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "2e9f20e0a1326a63998b2c181042f5315515b98d"
},
"repo_65": {
"url": "https://github.com/ashbythorpe/selenider",
@@ -1328,7 +1392,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -1336,20 +1400,21 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "0f802fea4d6429786335a9f31ca53b0e941a80de"
},
"repo_66": {
"url": "https://github.com/HumanBrainProject/kg-core-sdks",
"pitfalls": {
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1359,7 +1424,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "83b3091785a7e007408e463122cd64cd40049bad"
},
"repo_67": {
"url": "https://github.com/ajpelu/likelihoodTools",
@@ -1374,7 +1440,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -1386,7 +1452,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "e0d8fdb5b69d27a641ffc4731e8c2e5b6a21b67c"
},
"repo_68": {
"url": "https://github.com/KonradHoeffner/rickview",
@@ -1401,7 +1468,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "934e834915544005e0a0106d45d222d4e745f129"
},
"repo_69": {
"url": "https://github.com/dankelley/oce",
@@ -1424,7 +1492,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -1440,7 +1508,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "40904f6d5b9b1fd3d2d0631da59759283285a93f"
},
"repo_70": {
"url": "https://github.com/jonas-ellert/linear-time-runs",
@@ -1450,7 +1519,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "065dfae01cccc8fa7fa8b116cfa91f272c0b22ba"
},
"repo_71": {
"url": "https://github.com/Miagarciaru/atlas-outreach-data-tools-for-lumi36",
@@ -1463,7 +1533,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1473,7 +1543,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "fc28e29316a373b917db9e88c778fb52697476cc"
},
"repo_72": {
"url": "https://github.com/peterpolidoro/kicad_bom",
@@ -1486,7 +1557,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1496,7 +1567,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "9868eeec378a9a3723c963c66a4a5e77023903aa"
},
"repo_73": {
"url": "https://github.com/FIPE18-007-VERMEULEN/csdvp-evolutionary-algorithm-optimization",
@@ -1513,7 +1585,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1523,7 +1595,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "19cc44fd5204dcc32fdff9e1a2213e5aa74db5b2"
},
"repo_74": {
"url": "https://github.com/Nowosad/rcartocolor",
@@ -1538,19 +1611,20 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W004": {
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "39298c7dd95fc9d661ec88fd8fe38f1eaefe0322"
},
"repo_75": {
"url": "https://github.com/DanielSc4/inseq",
@@ -1558,9 +1632,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "5a217b0410ba73d0e6b2df712d04569497a3be97"
},
"repo_76": {
"url": "https://github.com/aravind-j/EvaluateCore",
@@ -1579,7 +1654,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -1591,7 +1666,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "GivenName in author field, has more than one name"
}
- }
+ },
+ "commit ID": "83f380c102022ddfd0fb275c821b9f16e2ec4cd4"
},
"repo_77": {
"url": "https://github.com/matthiasprobst/pivmetalib",
@@ -1599,7 +1675,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W003": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
@@ -1609,7 +1685,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "a8d2fafb200cb3663f77c21bf768b94c87a2618c"
},
"repo_78": {
"url": "https://github.com/craddm/eegUtils",
@@ -1624,7 +1701,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -1640,7 +1717,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "2b2dbe123b1fabaac414aa0f62b8259194d40e5f"
},
"repo_79": {
"url": "https://github.com/arviz-devs/preliz",
@@ -1650,7 +1728,8 @@
"description": "Copyright section taken as template without modification"
}
},
- "warnings": {}
+ "warnings": {},
+ "commit ID": "2fbd0c585d81faadbc5b9818c151323a89d890b4"
},
"repo_80": {
"url": "https://github.com/JSadowska/testLille",
@@ -1673,7 +1752,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "a944981f43c1bd37710b8a41442754bdc95e339b"
},
"repo_81": {
"url": "https://github.com/riatelab/tanaka",
@@ -1688,7 +1768,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "fd2efc3d9b417612c81c318f0223a40f5f4e6518"
},
"repo_82": {
"url": "https://github.com/underworldcode/underworld2",
@@ -1699,7 +1780,7 @@
},
"P006": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "License pointing to a local file instead of stating the name. For example: \u201clicense\u201d: LICENSE.MD"
+ "description": "License pointing to a local file instead of stating the name. For example: “license”: LICENSE.MD"
},
"P013": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
@@ -1713,7 +1794,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1723,7 +1804,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "a017a16c73c7c8bbb2869ceb05080c5c5098ac8e"
},
"repo_83": {
"url": "https://github.com/caltechlibrary/admin-shell-scripts",
@@ -1731,7 +1813,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1741,7 +1823,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "ba5753c86812f4230e2c68dcecaf825c22aeefd4"
},
"repo_84": {
"url": "https://github.com/jvegreg/ESMValCore",
@@ -1758,9 +1841,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "03eb1c942bf1dc3be98cb30c3592b42e82a94f16"
},
"repo_85": {
"url": "https://github.com/sthanhe/ParticleDispersion",
@@ -1775,7 +1859,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "9eafc76b75a52846b9bf78aa8a2fd0c24c5f2b9d"
},
"repo_86": {
"url": "https://github.com/Neplex/COveR",
@@ -1798,7 +1883,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "35423ec7f840c68070b73a9910350c1ac93e4a53"
},
"repo_87": {
"url": "https://github.com/AI5GW/Goertzel",
@@ -1813,7 +1899,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "2eb355240d0a66147309c783c91877af350414a9"
},
"repo_88": {
"url": "https://github.com/mdstephenserdc/network_representativeness",
@@ -1828,7 +1915,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Inconsistent use of licenses in metadata files"
}
- }
+ },
+ "commit ID": "a0f9fc12d1bf44811423b1fc212c0b6d398b677c"
},
"repo_89": {
"url": "https://github.com/matthiasprobst/h5RDMtoolbox",
@@ -1836,13 +1924,14 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W004": {
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "eaf66f66d23fcc6b7b1728f2fe7ac6d65c9d9d85"
},
"repo_90": {
"url": "https://github.com/m-team-kit/cookiecutter-web",
@@ -1861,7 +1950,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "728cf1ae38ce76aaaa31fd52bb46006144a2e5fa"
},
"repo_91": {
"url": "https://github.com/ParaStation/psmpi",
@@ -1872,13 +1962,13 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1888,7 +1978,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "375f8ee387a70bb5e80b774c0ec8472f2ca7d840"
},
"repo_92": {
"url": "https://github.com/LanguageMachines/frog",
@@ -1901,7 +1992,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -1919,7 +2010,8 @@
"source_file": "codemeta.json",
"description": "Identifier is a name instead of a valid unique identifier, but an identifier exist (e.g., in a badge)"
}
- }
+ },
+ "commit ID": "53da3bfd9958af5e7221348607f6db358edef486"
},
"repo_93": {
"url": "https://github.com/LDEO-CREW/Pythonic-DISORT",
@@ -1927,9 +2019,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "eb92fb81d422e76c1501d196bf14db6756430d03"
},
"repo_94": {
"url": "https://github.com/barbagroup/PetIBM",
@@ -1948,7 +2041,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "Identifier is empty"
}
- }
+ },
+ "commit ID": "be91f218702ada7fe569fe77c258fa748f075713"
},
"repo_95": {
"url": "https://github.com/DrMattG/SDGsR",
@@ -1965,7 +2059,8 @@
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
"description": "codeRepository does not point to the same repository"
}
- }
+ },
+ "commit ID": "fa1898e88b9a31a05c2b722f36d6993595536a12"
},
"repo_96": {
"url": "https://github.com/tesselle/kairos",
@@ -1992,7 +2087,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "113e0be3cc9beb2895f0ff5ac95063aad219b536"
},
"repo_97": {
"url": "https://github.com/SeUniVr/PLC-RE",
@@ -2000,9 +2096,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "a12a44cbc077dbd4c20b5f4764f9d53da5647b86"
},
"repo_98": {
"url": "https://github.com/andrew-saydjari/mfouesneau.github.com",
@@ -2010,9 +2107,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "17fbd909db0122eeca39d0c313b11742e7fd8164"
},
"repo_99": {
"url": "https://github.com/fran2410/AI-Open-Science",
@@ -2025,7 +2123,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -2035,7 +2133,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "592afb0b0f8a64cb57b66ed4f79d2bca9f448fbc"
},
"repo_100": {
"url": "https://github.com/umr-amap/StormR",
@@ -2050,7 +2149,7 @@
},
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
},
"P018": {
"source_file": "codemeta.json",
@@ -2060,7 +2159,7 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -2070,7 +2169,8 @@
"source_file": "codemeta.json",
"description": "programmingLanguages do not have versions"
}
- }
+ },
+ "commit ID": "0f179f94caac8ee075473472cb0474f54e745947"
},
"repo_101": {
"url": "https://github.com/viznuv/transforEmotion",
@@ -2079,23 +2179,25 @@
"source_file": "LICENSE",
"description": "Copyright section taken as template without modification"
}
- }
+ },
+ "commit ID": "f40dbf651f4361c2cd2dca4092e6e90b9bf4a073"
},
"repo_102": {
"url": "https://github.com/rOpenGov/r311",
"pitfalls": {
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
- }
+ },
+ "commit ID": "1273245299f477b47754319cf0e22b8cdf4995a8"
},
"repo_103": {
"url": "https://github.com/R3BRootGroup/sofia",
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
},
"W002": {
"source_file": "codemeta.json",
@@ -2107,9 +2209,10 @@
},
"W005": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "softwareRequirements have more than one req, but it\u2019s written as one string"
+ "description": "softwareRequirements have more than one req, but it’s written as one string"
}
- }
+ },
+ "commit ID": "ce7e8f0296333ca952d5f5554c068cc44a500380"
},
"repo_104": {
"url": "https://github.com/sorokinvld/LLFn",
@@ -2117,9 +2220,10 @@
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "a8ec8da19a3cc5d8207d362add83181bffa18c4e"
},
"repo_105": {
"url": "https://github.com/DeepRank/Deeprank-GNN",
@@ -2129,7 +2233,8 @@
"description": "Copyright section taken as template without modification"
}
},
- "warnings": {}
+ "warnings": {},
+ "commit ID": "544ee2b98a1d784047c25f4014f09a1effcdbcec"
},
"repo_106": {
"url": "https://github.com/r-spatialecology/landscapemetrics",
@@ -2152,14 +2257,15 @@
"source_file": "codemeta.json",
"description": "Identifier is a name instead of a valid unique identifier, but an identifier exist (e.g., in a badge)"
}
- }
+ },
+ "commit ID": "9e777a5c5ec568ebca8f5ddec7bed1c2d465a357"
},
"repo_107": {
"url": "https://github.com/aloftdata/getRad",
"pitfalls": {
"P017": {
"source_file": "codemeta.json",
- "description": "version does not match the package\u2019s"
+ "description": "version does not match the package’s"
}
},
"warnings": {
@@ -2167,7 +2273,8 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "f4bc21602adecdae6dfd123e8d439933de426f7b"
},
"repo_110": {
"url": "https://github.com/R-Lum/Luminescence",
@@ -2190,15 +2297,17 @@
"source_file": "codemeta.json",
"description": "developmentStatus is a URL instead of a string"
}
- }
+ },
+ "commit ID": "3aca65758cd130df06afb274c6a419033ecdadd0"
},
"repo_111": {
"url": "https://github.com/naaci/watermarking",
"warnings": {
"W001": {
"source_file": "Metadata files (codemeta.json, setup.py, pom.xml etc...)",
- "description": "SoftwareRequirements don\u2019t have versions"
+ "description": "SoftwareRequirements don’t have versions"
}
- }
+ },
+ "commit ID": "48211f102defdb16d0cd3cf6fc281518a4a96442"
}
}
diff --git a/src/rsmetacheck/utils/json_ld_utils.py b/src/rsmetacheck/utils/json_ld_utils.py
index 45430fc..15c56e9 100644
--- a/src/rsmetacheck/utils/json_ld_utils.py
+++ b/src/rsmetacheck/utils/json_ld_utils.py
@@ -499,6 +499,13 @@ def get_suggestion_text(pitfall_code: str, pitfall_result: Dict = None, somef_da
latest = pitfall_result.get("release_version")
if latest:
return f"Ensure the version in your metadata matches the latest official release ({latest}). Keeping these synchronized avoids confusion for users and improves reproducibility."
+ elif pitfall_code == "P003":
+ author_val = pitfall_result.get("author_value")
+ if author_val and isinstance(author_val, str) and ("and" in author_val or "," in author_val):
+ import re
+ parts = [p.strip() for p in re.split(r'\s+and\s+|,', author_val) if p.strip()]
+ if len(parts) > 1:
+ return f'You should separate multiple authors into a structured list. For example: {parts}'
elif pitfall_code == "P004":
good_readme = None
@@ -528,6 +535,11 @@ def get_suggestion_text(pitfall_code: str, pitfall_result: Dict = None, somef_da
elif pitfall_code == "P011":
issue_url = pitfall_result.get("issue_url")
if issue_url:
+ import re
+ match = re.search(r'https?://[^\s,]+', issue_url)
+ if match:
+ extracted_url = match.group(0)
+ return f"You need to correct the issue tracker URL. Consider using the extracted link: {extracted_url}"
return f"You need to correct the issue tracker URL ({issue_url}) so it follows a valid format, such as https://github.com/user/repo/issues."
elif pitfall_code == "P012":
@@ -539,7 +551,7 @@ def get_suggestion_text(pitfall_code: str, pitfall_result: Dict = None, somef_da
identifier = pitfall_result.get("identifier_value", "")
if identifier and isinstance(identifier, str):
import re
- cleaned_id = re.sub(r'^(doi:|10\.)', '10.', identifier).replace('https://doi.org/', '')
+ cleaned_id = re.sub(r'^doi:', '', identifier, flags=re.IGNORECASE).replace('https://doi.org/', '')
if cleaned_id.startswith('10.'):
return f"You should include the full DOI URL form in your metadata (e.g., https://doi.org/{cleaned_id})"
@@ -561,6 +573,39 @@ def get_suggestion_text(pitfall_code: str, pitfall_result: Dict = None, somef_da
if github_date:
return f"The data in the metadata file should be updated to be aligned with the date of the latest release ({github_date})."
+ elif pitfall_code == "W003":
+ found_license = None
+ if "license" in somef_data:
+ for entry in somef_data["license"]:
+ src = entry.get("source", "")
+ if isinstance(src, list):
+ src = src[0] if src else ""
+ src_str = str(src).lower()
+ tech = entry.get("technique", "")
+ is_file_search = ("license" in src_str or tech == "file_exploration")
+ if is_file_search:
+ val = entry.get("result", {}).get("value")
+ spdx = entry.get("result", {}).get("spdx_id")
+ name = entry.get("result", {}).get("name")
+ found_license = spdx or name or (val if val and len(str(val)) < 50 else None)
+ if found_license:
+ break
+ if found_license:
+ return f"Use the LICENSE that is stated in your repository ({found_license}) instead."
+
+ elif pitfall_code == "W004":
+ if "programming_languages" in somef_data:
+ valid_langs = []
+ for entry in somef_data["programming_languages"]:
+ res = entry.get("result", {})
+ name = res.get("name")
+ ver = res.get("version")
+ if name and ver:
+ valid_langs.append(f"{name} ({ver})")
+ if valid_langs:
+ langs_str = ", ".join(valid_langs)
+ return f"Specify version numbers for your programming languages like found in other sources: {langs_str}."
+
elif pitfall_code == "W005":
reqs = pitfall_result.get("requirement_string", "")
if reqs and isinstance(reqs, str):
@@ -589,6 +634,7 @@ def get_suggestion_text(pitfall_code: str, pitfall_result: Dict = None, somef_da
return f"You should replace the remote-style syntax with a full web-accessible URL (e.g., {github_api_repo})."
suggestions = {
+ # This works as fallback in case the dynamic suggestions does not find the necessary metadata in SoMEF report
# Pitfalls
"P001": "Ensure the version in your metadata matches the latest official release. Keeping these synchronized avoids confusion for users and improves reproducibility.",
"P002": "Update the copyright section with accurate names, organizations, and the current year. Personalizing this section ensures clarity and legal accuracy.",