code: def lint_params_prefix(self, rule):
      for param, value in rule.params.items():
          if (
              isinstance(value, str)
              and value
              and any(
                  f.startswith(value)
                  for f in chain(rule.input, rule.output)
                  if isinstance(f, str)
              )
          ):
              yield Lint(
                  title="Param {} is a prefix of input or output file but hardcoded".format(
                      param
                  ),
                  body="If this is meant to represent a file path prefix, it will fail when running "
                  "workflow in environments without a shared filesystem. "
                  "Instead, provide a function that infers the appropriate prefix from the input or "
                  "output file, e.g.: lambda w, input: os.path.splitext(input[0])[0]",
                  links=[links.params, links.input_functions],
              )
  
file_path: snakemake/snakemake/linting/rules.py
imports: from itertools import chain
  import re
  import sys
  from snakemake.io import is_flagged
  from snakemake.linting import Linter, Lint, links, NAME_PATTERN
label_desc: Use image node_id 3 for calling the RuleLinter obj's underlying member method code with example usage: obj.lint_params_prefix(rule) without return types