From 7f23c88dd3934cf7128e8445b2bd7f5f8f4c3431 Mon Sep 17 00:00:00 2001 From: Christine Lytwynec Date: Mon, 8 Dec 2014 09:26:18 -0500 Subject: [PATCH] add find_fixme task --- pavelib/quality.py | 47 ++++++++++++++++++++++++++++++++++++++++++++ scripts/all-tests.sh | 1 + 2 files changed, 48 insertions(+) diff --git a/pavelib/quality.py b/pavelib/quality.py index 7ad4d76316..8d3cd49a57 100644 --- a/pavelib/quality.py +++ b/pavelib/quality.py @@ -8,6 +8,53 @@ import re from .utils.envs import Env +@task +@needs('pavelib.prereqs.install_python_prereqs') +@cmdopts([ + ("system=", "s", "System to act on"), +]) +def find_fixme(options): + """ + Run pylint on system code, only looking for fixme items. + """ + num_fixme = 0 + systems = getattr(options, 'system', 'lms,cms,common').split(',') + + for system in systems: + # Directory to put the pylint report in. + # This makes the folder if it doesn't already exist. + report_dir = (Env.REPORT_DIR / system).makedirs_p() + + apps = [system] + + for directory in ['djangoapps', 'lib']: + dirs = os.listdir(os.path.join(system, directory)) + apps.extend([d for d in dirs if os.path.isdir(os.path.join(system, directory, d))]) + + apps_list = ' '.join(apps) + + pythonpath_prefix = ( + "PYTHONPATH={system}:{system}/djangoapps:{system}/" + "lib:common/djangoapps:common/lib".format( + system=system + ) + ) + + sh( + "{pythonpath_prefix} pylint --disable R,C,W,E --enable=fixme " + "-f parseable {apps} | tee {report_dir}/pylint_fixme.report".format( + pythonpath_prefix=pythonpath_prefix, + apps=apps_list, + report_dir=report_dir + ) + ) + + num_fixme += _count_pylint_violations( + "{report_dir}/pylint_fixme.report".format(report_dir=report_dir)) + + print("Number of pylint fixmes: " + str(num_fixme)) + + @task @needs('pavelib.prereqs.install_python_prereqs') @cmdopts([ diff --git a/scripts/all-tests.sh b/scripts/all-tests.sh index d0b2d38eff..cb4f502eb0 100755 --- a/scripts/all-tests.sh +++ b/scripts/all-tests.sh @@ -107,6 +107,7 @@ SHARD=${SHARD:="all"} case "$TEST_SUITE" in "quality") + paver find_fixme > fixme.log || { cat fixme.log; EXIT=1; } paver run_pep8 -l $PEP8_THRESHOLD > pep8.log || { cat pep8.log; EXIT=1; } paver run_pylint -l $PYLINT_THRESHOLD > pylint.log || { cat pylint.log; EXIT=1; } # Run quality task. Pass in the 'fail-under' percentage to diff-quality