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:
Toshio Kuratomi 2017-08-04 09:14:35 -07:00
parent 65cf31e1ce
commit 44935a5db6
3 changed files with 59 additions and 0 deletions

View file

@ -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

View 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

View file

@ -1 +1,2 @@
inappropriately-private.sh
no-underscore-variable.sh