mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-25 20:33:08 +00:00
implement custom cppcheck rules
I recently noticed there were several invocations of `wcwidth()` that should have been `fish_wcwidth()`. This adds custom cppcheck rules to detect that mistake.
This commit is contained in:
parent
e6d4ac5ee2
commit
dc58edd521
3 changed files with 21 additions and 1 deletions
18
.cppcheck.rule
Normal file
18
.cppcheck.rule
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<rule version="1">
|
||||||
|
<pattern> wcwidth \(</pattern>
|
||||||
|
<message>
|
||||||
|
<id>wcwidthForbidden</id>
|
||||||
|
<severity>warning</severity>
|
||||||
|
<summary>Always use fish_wcwidth rather than wcwidth.</summary>
|
||||||
|
</message>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<rule version="1">
|
||||||
|
<pattern> wcswidth \(</pattern>
|
||||||
|
<message>
|
||||||
|
<id>wcswidthForbidden</id>
|
||||||
|
<severity>warning</severity>
|
||||||
|
<summary>Always use fish_wcswidth rather than wcswidth.</summary>
|
||||||
|
</message>
|
||||||
|
</rule>
|
|
@ -30,6 +30,8 @@ Ultimately we want lint free code. However, at the moment a lot of cleanup is re
|
||||||
|
|
||||||
To make linting the code easy there are two make targets: `lint` and `lint-all`. The latter does just what the name implies. The former will lint any modified but not committed `*.cpp` files. If there is no uncommitted work it will lint the files in the most recent commit.
|
To make linting the code easy there are two make targets: `lint` and `lint-all`. The latter does just what the name implies. The former will lint any modified but not committed `*.cpp` files. If there is no uncommitted work it will lint the files in the most recent commit.
|
||||||
|
|
||||||
|
Fish has custom cppcheck rules in the file `.cppcheck.rule`. These help catch mistakes such as using `wcwidth()` rather than `fish_wcwidth()`. Please add a new rule if you find similar mistakes being made.
|
||||||
|
|
||||||
### Dealing With Lint Warnings
|
### Dealing With Lint Warnings
|
||||||
|
|
||||||
You are strongly encouraged to address a lint warning by refactoring the code, changing variable names, or whatever action is implied by the warning.
|
You are strongly encouraged to address a lint warning by refactoring the code, changing variable names, or whatever action is implied by the warning.
|
||||||
|
|
|
@ -92,7 +92,7 @@ if set -q c_files[1]
|
||||||
# The stderr to stdout redirection is because cppcheck, incorrectly IMHO, writes its
|
# The stderr to stdout redirection is because cppcheck, incorrectly IMHO, writes its
|
||||||
# diagnostic messages to stderr. Anyone running this who wants to capture its output will
|
# diagnostic messages to stderr. Anyone running this who wants to capture its output will
|
||||||
# expect those messages to be written to stdout.
|
# expect those messages to be written to stdout.
|
||||||
cppcheck -q --verbose --std=posix --std=c11 --language=c++ --template "[{file}:{line}]: {severity} ({id}): {message}" --suppress=missingIncludeSystem --inline-suppr --enable=$cppchecks $cppcheck_args $c_files 2>&1
|
cppcheck -q --verbose --std=posix --std=c11 --language=c++ --template "[{file}:{line}]: {severity} ({id}): {message}" --suppress=missingIncludeSystem --inline-suppr --enable=$cppchecks --rule-file=.cppcheck.rule $cppcheck_args $c_files 2>&1
|
||||||
end
|
end
|
||||||
|
|
||||||
if type -q oclint
|
if type -q oclint
|
||||||
|
|
Loading…
Reference in a new issue