Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@
* Merge markers lint test - ignore binary files, allow config to ignore specific files [[#1040](https://github.com/nf-core/tools/pull/1040)]
* New lint test to check if params in `nextflow config` are mentioned in `main.nf` [[#1038](https://github.com/nf-core/tools/issues/1038)]
* New modules lint test comparing the `functions.nf` file to the template version
* Added lint checks for missing parameter description and parameters outside of groups [[#1017](https://github.com/nf-core/tools/issues/1017)]
* Added fix to remove warnings about params that get converted from camelCase to camel-case [[#1035](https://github.com/nf-core/tools/issues/1035)]
* Use latest stable Nextflow version `21.04.0` for CI tests instead of the `-edge` release
* Added temporary fix to remove warnings about params that get converted from camelCase to camel-case [[#1035](https://github.com/nf-core/tools/issues/1035)]
* Fix bug in `nf-core download` where image names were getting a hyphen in `nf-core` which was breaking things.

### Template
Expand Down
4 changes: 4 additions & 0 deletions docs/api/_src/pipeline_lint_tests/schema_description.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
schema_description
===========

.. automethod:: nf_core.lint.PipelineLint.schema_description
2 changes: 2 additions & 0 deletions nf_core/lint/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ class PipelineLint(nf_core.utils.Pipeline):
from .readme import readme
from .schema_lint import schema_lint
from .schema_params import schema_params
from .schema_description import schema_description
from .template_strings import template_strings
from .version_consistency import version_consistency

Expand Down Expand Up @@ -147,6 +148,7 @@ def __init__(self, wf_path, release_mode=False, fix=(), key=(), fail_ignored=Fal
"template_strings",
"schema_lint",
"schema_params",
"schema_description",
"actions_schema_validation",
"merge_markers",
]
Expand Down
53 changes: 53 additions & 0 deletions nf_core/lint/schema_description.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/usr/bin/env python

from logging import warn
import nf_core.schema


def schema_description(self):
"""Check that every parameter in the schema has a description

The ``nextflow_schema.json`` pipeline schema should describe every flat parameter
Furthermore warns about parameters outside of groups

* Warning: Parameters in ``nextflow_schema.json`` without a description
* Warning: Parameters in ``nextflow_schema.json`` that are defined outside of a group
"""
passed = []
warned = []
ignored = []

# First, get the top-level config options for the pipeline
# Schema object already created in the `schema_lint` test
self.schema_obj = nf_core.schema.PipelineSchema()
self.schema_obj.get_schema_path(self.wf_path)
self.schema_obj.get_wf_params()
self.schema_obj.no_prompts = True
self.schema_obj.load_lint_schema()

# Get parameters that should be ignored according to the linting config
ignore_params = self.lint_config.get("schema_description", [])

# Get ungrouped params
if "properties" in self.schema_obj.schema.keys():
ungrouped_params = self.schema_obj.schema["properties"].keys()
for up in ungrouped_params:
if up in ignore_params:
ignored.append(f"Ignored ungrouped param in schema: `{up}`")
else:
warned.append(f"Ungrouped param in schema: `{up}`")

# Iterate over groups and add warning for parameters without a description
for group_key in self.schema_obj.schema["definitions"].keys():
group = self.schema_obj.schema["definitions"][group_key]
for param_key, param in group["properties"].items():
if param_key in ignore_params:
ignored.append(f"Ignoring description check for param in schema: `{param_key}`")
continue
if "description" not in param.keys():
warned.append(f"No description provided in schema for parameter: `{param_key}`")

for ip in ignore_params:
ignored.append(f"Parameter is ignored: `{ip}`")

return {"passed": passed, "warned": warned, "ignored": ignored}
3 changes: 2 additions & 1 deletion nf_core/lint/schema_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ def schema_params(self):
failed = []

# First, get the top-level config options for the pipeline
# Schema object already created in the `schema_lint` test
self.schema_obj = nf_core.schema.PipelineSchema()
self.schema_obj.get_schema_path(self.wf_path)
self.schema_obj.get_wf_params()
self.schema_obj.no_prompts = True
self.schema_obj.load_lint_schema()

# Remove any schema params not found in the config
removed_params = self.schema_obj.remove_schema_notfound_configs()
Expand Down