Package: icheck
“Because syntax checking should happen on file writes, not VCS commits”quick (or not so quick) and dirty tool to run syntax checking and doc tests
on python code in a separate screen windowFeaturesSyntax check filesDoc test filesCall a command on syntax failuresterminal bellfilter files by hashbang and globscolor output with tty detectionmultiple output formats (oneline, short and long)Supports python2 and python3This program was mainly written to assist me in developing python code and
letting me know a couple of seconds before i try and run my program that there
are basic syntax mistakes in the code.to achieve this inotify is used to wait for files to be written to and then if
all pre conditions are fine (globs and hashbangs) then a syntax check is
executed. on an error a message is printed and it moves on to the next fileBy using the ‘bell’ facility the window running check does not have to be
visible to the programmer and instead a message will be printed in the message
line on error indicating attention may be required, allowing screen to be used
as the windowing component of a flexible IDE setupExamplesTo check a directory for file changes and run syntax checks on file save try
the following command$ icheck -b ~/code/icheck/icheck/This will ‘ring the bell’ in the terminal on file changes that are
syntactically incorrect. in screen this causes a ‘bell in window x’ message to
be displayed at the bottom of the screen for all files in the directoryTo limit ourselves to just scanning .py files (sounds like a good idea!) we can
add a filter based on filename with the ‘-g’ flag$ icheck -b -g ‘*.py’ ~/code/icheck/icheck/Optionally we can filter based on the hash-bang at the beginning of the file
with ‘-s’ this defaults to looking for the string ‘python’ however this can be
changed by specifying it after the ‘-s’ flag. This is applied in an ‘AND’
fashion with the ‘-g’ flag so that the file extension AND the shebang need to
match. if only one detection method is desired then only use one flag or
optionally use neither detection and specify exactly which files you want to
watch (ie specifying files on the cmdline rather than the directory they are
contained in)LimitationsAt this point in time file watching is not recursive, creating directories
does not cause them to be watched. It is assumed that the project layout that
you are watching is mostly static for the time being. to watch
sub-directories try the command below$ icheck ~/code/icheck/icheck ~/code/icheck/icheck/*/Docstring checking imports your modules, if you run your code in a virtualenv
with libs not avalible to the system then import errors may occur. to prevent
this install and run icheck from your virtualenvRelease History1.8 (2015-08-29)Run Doctests as well as syntax checking1.7 (2015-08-15)Bug FixesErrors on the last line of a src file would crash the checker1.6 (2014-10-24)Bug FixesCertain conditions would prevent a variable that was used from being set/create1.5 (2014-10-24)Fixed up some links in setup.pyAdd reason why the syntax check failed to output, where available1.4 (2014-10-24)Check on file close rather than write to avoid partial files1.3 (2014-10-20)Add python 2.7 compatibility1.2.1 (2014-10-20)Bug FixesFix packaging again and convert to module, now installs correctly1.2 (2014-10-20)Bug FixesFix packaging so setup.py is included again1.1 (2014-10-20)Change-log now appended to project descriptionBug FixesFixed (one) race condition on checking hashbangFixed up entry point to eat stack trace on Keyboard Interrupt1.0 (2014-10-19)Initial Release