Package: codevalidator
Simple source code validator with file reformatting option (remove trailing WS, pretty print XML, ..).For Python code formatting it can either useautopep8or the builtin copy of PythonTidy.RequirementsPython 2.7+lxml(for XML formatting)pep8(for Python checking)autopep8(for Python formatting)pyflakes(for static Python code checking)Jalopy(for Java code formatting)coffeelint (for CoffeeScript validation)PHP_CodeSniffer (for PHP style checking)Puppet (for Puppet manifest validation)sqlparsejshint (for JavaScript checking)PyYAML (for YAML checking)Ruby (for Ruby code checking)Rubygems (for Ruby code checking with rubocop)erb and ruby (for ERB template checking)On Ubuntu you can install most packages easily:sudo apt-get install python-lxml pep8 pyflakes nodejs npm python-sqlparse python-yaml ruby rubygems
sudo npm install -g jshint
sudo gem i rubocopIf you are using Jalopy, for better performance also install Nailgun:sudo apt-get install nailgunAnd start the nailgun server with:java -cp /usr/share/java/nailgun-0.9.0.jar:/opt/jalopy/lib/jalopy-1.9.4.jar -server com.martiansoftware.nailgun.NGServerInstallationThere are at least two ways of installing codevalidator:Alternative 1: Use the codevalidator source tree directly (i.e. clone the GIT repo and put codevalidator.py in yourPATH):git clone https://github.com/hjacobs/codevalidator.git
sudo ln -s codevalidator/codevalidator.py /usr/local/bin/codevalidator.pyAlternative 2: Install codevalidator from PyPI using PIP:sudo pip install codevalidatorAlternative 3: UseDockerto get all dependencies and to run codevalidator without messing with your local system:docker build -t codevalidator .
# we can mount the current directory into "workdir" volume to validate the local directory recursively
docker run -v `pwd`:/workdir -t codevalidator -rvv /workdir/Getting StartedValidating test files with builtin default configuration:./codevalidator.py test/*Fixing test files (removing trailing whitespace, XML format):./codevalidator.py -f test/*Using custom configuration file:./codevalidator.py -c test/config.json test/*Validate and fix a whole directory tree:./codevalidator.py -c myconfig.json -rf /path/to/mydirectoryValidate a single PHP file and print detailed error messages (needs PHP_CodeSniffer with PSR standards installed!):./codevalidator.py -v test/test.phpRunning in very verbose (debug) mode to see what is validated:./codevalidator.py -vvrc test/config.json testUsing the filter mode to “fix” stdin and write to stdout:echo 'print 1' | ./codevalidator.py --fix --filter foobar.py && echo successIf you are annoyed by the .XX.pre-cvfix backup files you can disable them either on the command line (--no-backup) or in the config file.ConfigurationCodevalidator uses a mapping of file name patterns to “rules” in order to know which validation rules should be applied for a certain file.
The script contains a more-or-less sane default configuration (seeDEFAULT_CONFIGat the top ofcodevalidator.py).
You can overwrite the configuration by putting a.codevalidatorrcfile in your home directory.
The file must be JSON and must have the same structure asDEFAULT_CONFIG.Advanced UsagesYou can use the--fix--filtercombination to directly filter your current buffer in VIM::%!codevalidator.py --fix --filter %The--fix--filterwas also designed to be used withGIT filters.To apply a formatting rule once without changing you configuration file, you can use the-aoption. Formatting a Python file once with thepythontidyrule looks like:./codevalidator.py -a pythontidy myfile.pyKnown IssuesPythonTidy cannot parsedict comprehensions. As a workaround you can use list comprehensions and wrap it withdict.