Showing 302 of 309 total issues
Headers should be surrounded by blank lines Open
## Methods
- Read upRead up
- Exclude checks
MD022 - Headers should be surrounded by blank lines
Tags: headers, blank_lines
Aliases: blanks-around-headers
This rule is triggered when headers (any style) are either not preceded or not followed by a blank line:
# Header 1
Some text
Some more text
## Header 2
To fix this, ensure that all headers have a blank line both before and after (except where the header is at the beginning or end of the document):
# Header 1
Some text
Some more text
## Header 2
Rationale: Aside from aesthetic reasons, some parsers, including kramdown, will not parse headers that don't have a blank line before, and will parse them as regular text.
Multiple headers with the same content Open
#### Parameters
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
#### Parameters
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
#### Parameters
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
#### Simplified Example
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Trailing spaces Open
Unless otherwise specified, the methods will accept the following arguments:
- Read upRead up
- Exclude checks
MD009 - Trailing spaces
Tags: whitespace
Aliases: no-trailing-spaces
Parameters: br_spaces (number; default: 0)
This rule is triggered on any lines that end with whitespace. To fix this, find the line that is triggered and remove any trailing spaces from the end.
The brspaces parameter allows an exception to this rule for a specific amount of trailing spaces used to insert an explicit line break/br element. For example, set brspaces to 2 to allow exactly 2 spaces at the end of a line.
Note: you have to set brspaces to 2 or higher for this exception to take effect - you can't insert a br element with just a single trailing space, so if you set brspaces to 1, the exception will be disabled, just as if it was set to the default of 0.
Multiple headers with the same content Open
#### Verbose Example
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
#### Verbose Example
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
#### Verbose Example
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
#### Verbose Example
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Expected 1 newline at end of file; 0 found Open
]);
- Exclude checks
Ordered list item prefix Open
2. Using the app container
- Read upRead up
- Exclude checks
MD029 - Ordered list item prefix
Tags: ol
Aliases: ol-prefix
Parameters: style ("one", "ordered"; default "one")
This rule is triggered on ordered lists that do not either start with '1.' or do not have a prefix that increases in numerical order (depending on the configured style, which defaults to 'one').
Example valid list if the style is configured as 'one':
1. Do this.
1. Do that.
1. Done.
Example valid list if the style is configured as 'ordered':
1. Do this.
2. Do that.
3. Done.
Multiple headers with the same content Open
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Headers should be surrounded by blank lines Open
## Methods
- Read upRead up
- Exclude checks
MD022 - Headers should be surrounded by blank lines
Tags: headers, blank_lines
Aliases: blanks-around-headers
This rule is triggered when headers (any style) are either not preceded or not followed by a blank line:
# Header 1
Some text
Some more text
## Header 2
To fix this, ensure that all headers have a blank line both before and after (except where the header is at the beginning or end of the document):
# Header 1
Some text
Some more text
## Header 2
Rationale: Aside from aesthetic reasons, some parsers, including kramdown, will not parse headers that don't have a blank line before, and will parse them as regular text.
Multiple headers with the same content Open
#### Verbose Example
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
#### Verbose Example
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
#### Parameters
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Multiple headers with the same content Open
- Read upRead up
- Exclude checks
MD024 - Multiple headers with the same content
Tags: headers
Aliases: no-duplicate-header
Parameters: allowdifferentnesting (boolean; default false)
This rule is triggered if there are multiple headers in the document that have the same text:
# Some text
## Some text
To fix this, ensure that the content of each header is different:
# Some text
## Some more text
Rationale: Some markdown parses generate anchors for headers based on the header name, and having headers with the same content can cause problems with this.
If the parameter allow_different_nesting
is set to true
, header duplication
under different nesting is allowed, like it usually happens in change logs:
# Change log
## 2.0.0
### Bug fixes
### Features
## 1.0.0
### Bug fixes
Double quote to prevent globbing and word splitting. Open
echo $updates > updates.json
- Read upRead up
- Exclude checks
Double quote to prevent globbing and word splitting.
Problematic code:
echo $1
for i in $*; do :; done # this done and the next one also applies to expanding arrays.
for i in $@; do :; done
Correct code:
echo "$1"
for i in "$@"; do :; done # or, 'for i; do'
Rationale
The first code looks like "print the first argument". It's actually "Split the first argument by IFS (spaces, tabs and line feeds). Expand each of them as if it was a glob. Join all the resulting strings and filenames with spaces. Print the result."
The second one looks like "iterate through all arguments". It's actually "join all the arguments by the first character of IFS (space), split them by IFS and expand each of them as globs, and iterate on the resulting list". The third one skips the joining part.
Quoting variables prevents word splitting and glob expansion, and prevents the script from breaking when input contains spaces, line feeds, glob characters and such.
Strictly speaking, only expansions themselves need to be quoted, but for stylistic reasons, entire arguments with multiple variable and literal parts are often quoted as one:
$HOME/$dir/dist/bin/$file # Unquoted (bad)
"$HOME"/"$dir"/dist/bin/"$file" # Minimal quoting (good)
"$HOME/$dir/dist/bin/$file" # Canonical quoting (good)
When quoting composite arguments, make sure to exclude globs and brace expansions, which lose their special meaning in double quotes: "$HOME/$dir/src/*.c"
will not expand, but "$HOME/$dir/src"/*.c
will.
Note that $( )
starts a new context, and variables in it have to be quoted independently:
echo "This $variable is quoted $(but this $variable is not)"
echo "This $variable is quoted $(and now this "$variable" is too)"
Exceptions
Sometimes you want to split on spaces, like when building a command line:
options="-j 5 -B"
make $options file
Just quoting this doesn't work. Instead, you should have used an array (bash, ksh, zsh):
options=(-j 5 -B) # ksh: set -A options -- -j 5 -B
make "${options[@]}" file
or a function (POSIX):
make_with_flags() { make -j 5 -B "$@"; }
make_with_flags file
To split on spaces but not perform glob expansion, Posix has a set -f
to disable globbing. You can disable word splitting by setting IFS=''
.
Similarly, you might want an optional argument:
debug=""
[[ $1 == "--trace-commands" ]] && debug="-x"
bash $debug script
Quoting this doesn't work, since in the default case, "$debug"
would expand to one empty argument while $debug
would expand into zero arguments. In this case, you can use an array with zero or one elements as outlined above, or you can use an unquoted expansion with an alternate value:
debug=""
[[ $1 == "--trace-commands" ]] && debug="yes"
bash ${debug:+"-x"} script
This is better than an unquoted value because the alternative value can be properly quoted, e.g. wget ${output:+ -o "$output"}
.
As always, this warning can be [[ignore]]d on a case-by-case basis.
this is especially relevant when BASH many not be available for the array work around. For example, use in eval or in command options where script has total control of the variables...
FLAGS="-av -e 'ssh -x' --delete --delete-excluded"
...
# shellcheck disable=SC2086
eval rsync $FLAGS ~/dir remote_host:dir
Notice
Original content from the ShellCheck https://github.com/koalaman/shellcheck/wiki.