Add a (disabled) code-smell test for detecting _ variables
We are reserving the _ identifier for i18n work. Code should use the identifier dummy for dummy variables instead. This test is currently skipped as someone needs to generate the list of files which are currently out of compliance before this can be turned on.
This commit is contained in:
parent
65cf31e1ce
commit
44935a5db6
3 changed files with 59 additions and 0 deletions
|
@ -0,0 +1,28 @@
|
||||||
|
Sanity Tests » no-underscore-variable
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
In the future, Ansible may use the identifier ``_`` to internationalize its
|
||||||
|
message strings. To be ready for that, we need to make sure that there are
|
||||||
|
no conflicting identifiers defined in the code base.
|
||||||
|
|
||||||
|
In common practice, ``_`` is frequently used as a dummy variable (a variable
|
||||||
|
to receive a value from a function where the value is useless and never used).
|
||||||
|
In Ansible, we're using the identifier ``dummy`` for this purpose instead.
|
||||||
|
|
||||||
|
Example of unfixed code:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
for _ in range(0, retries):
|
||||||
|
success = retry_thing()
|
||||||
|
if success:
|
||||||
|
break
|
||||||
|
|
||||||
|
Example of fixed code:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
for dummy in range(0, retries):
|
||||||
|
success = retry_thing()
|
||||||
|
if success:
|
||||||
|
break
|
30
test/sanity/code-smell/no-underscore-variable.sh
Executable file
30
test/sanity/code-smell/no-underscore-variable.sh
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Only needed until we can enable a pylint test for this. We may have to write
|
||||||
|
# one or add it to another existing test (like the one to warn on inappropriate
|
||||||
|
# variable names). Adding to an existing test may be hard as we may have many
|
||||||
|
# other things that are not compliant with that test.
|
||||||
|
|
||||||
|
|
||||||
|
# Need to fix everything in the whitelist in order to enable a pylint test.
|
||||||
|
# We've settled on "dummy" as the variable to replace dummy variables with
|
||||||
|
# (vast majority of these cases)
|
||||||
|
#
|
||||||
|
# before enabling *this* test, we need to create a full list of files which we need to fix
|
||||||
|
# Can use the base find command to help generate that list
|
||||||
|
# find . -name '*.py' -type f -exec egrep -H '( |[^C]\()_( |,|\))' \{\} \+
|
||||||
|
#
|
||||||
|
underscore_as_variable=$(find . -path ./test/runner/.tox -prune \
|
||||||
|
-path ./contrib/inventory/gce.py \
|
||||||
|
-o -name '*.py' -type f -exec egrep -H '( |[^C]\()_( |,|\))' \{\} \+ )
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$underscore_as_variable" ; then
|
||||||
|
printf "\n== Underscore used as a variable ==\n"
|
||||||
|
printf "%s" "$underscore_as_variable"
|
||||||
|
failures=$(printf "%s" "$underscore_as_variable"| wc -l)
|
||||||
|
failures=$((failures + 2))
|
||||||
|
exit "$failures"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
|
@ -1 +1,2 @@
|
||||||
inappropriately-private.sh
|
inappropriately-private.sh
|
||||||
|
no-underscore-variable.sh
|
||||||
|
|
Loading…
Reference in a new issue