Muhafiz
Guard your codebase from bad codes!
Install / Use
/learn @sonsuzdongu/MuhafizREADME
muhafiz
Guard your codebase from bad code!
...',,,,,',:
,,.',okxc,,,Oc
.,.',;0OOx,,,;K'
:.',,;XoxK,,,,cK.
';.',,,l00d,,,,,oO
c''',,,oWWo,,,,,,O:
,:.',,,,;NX,,,,,,,:0
,;.',,,,,K0,,,,,,,,k;
;,',,,,:OMWx;,,,,,,l.
.odxxox0NNWNNXkooxOXW.
okKWNNX0NNXKkNNWWWWN.
'dOWNWNKNWNX0MXNWWWo
,oONWX0KWN0OKNWWNo.
....;c;...cl',',lo;'...
.......';odOKXNKc'..'',,,'.
...;ldxlxWWWWWWWWXW0doc;,,,,.
.'oKNWWWWN0kOKXXX00NWNWWN0xc,,.
'xNWWWWWN0o'..,:c,'',kNWWWWWWKo,
,XWWNX0Odc,',oxxxxc.,,':xXNNNWWWK;
.0WXOdl:,..''ldolodx;',,,,;lkKXXNWN.
.:xxc;'. ..,'ldddooxc',,,,,,,.',:;:
.... ...,,,oxxxOd,,,,,,,,,....
... ..',,,'lokd,,,,,,,,,,...
.....,,,'oxKd,,,,,,,,,..
...,,,'o0Wd,,,,;;:c:
:oxdxxcoNWkxkkkO0KKx
.';;;;,OXW0...,,,,,'
...',,,'lKKW0...,,,,,,.
..',,,,.dWO0k,..,,,,,,,
..',,,,,.cNdOk:..,,,,,,,'
..',,,,,,..Ookkc..',,,,,,,
'.,,,,,,'. lkdx:...,,,,,,,.
..,,,,,'.. 'xox....',,,,,,.
..,,,,,.. :o:' ...,,,,,'
..,,,,. c.. .,,,,.
....... .. .......
Git
Installation
You need to copy the required git-hook to your project's .git/hooks directory And put the src directory in somewhere (eg. ~/muhafiz/src)
$ git clone git://github.com/sonsuzdongu/muhafiz.git ~/muhafiz
$ cp ~/muhafiz/git-hooks/* /your/project/.git/hooks
Configuration
You have to set your 'muhafiz.bootstrap-file' git config setting to show your muhafiz bootstrap file
$ git config muhafiz.bootstrap-file ~/muhafiz/src/bootstrap.php
Or better you set it system wide or global
$ sudo git config --global muhafiz.bootstrap-file ~/muhafiz/src/bootstrap.php
$ sudo git config --system muhafiz.bootstrap-file ~/muhafiz/src/bootstrap.php
Then you have to set the comma separated list of code checkers(aka runners) using 'muhafiz.active-runners' git config parameter
$ git config muhafiz.active-runners 'phpcs, jshint'
After this, 'all your commits are belongs to us'. All your commits will be checked by given runners and commit will be prevented if are there any errors
Subversion
Installation
You need to copy the required svn-hook to your repository's hooks directory And put the src directory in somewhere (eg. ~/muhafiz/src)
$ git clone git://github.com/sonsuzdongu/muhafiz.git ~/muhafiz
$ cp ~/muhafiz/svn-hooks/pre-commit /home/svn/your_project/hooks/
$ cp ~/muhafiz/svn-hooks/muhafiz.conf /home/svn/your_project/conf/
Configuration
You have to edit your 'muhafiz.conf' file to locate bootstrap file and configure runners:
[muhafiz]
bootstrap-file=~/muhafiz/src/bootstrap.php
active-runners='php, bom'
List of code checkers(aka runners) must be separated by commas.
After this, 'all your commits are belongs to us'. All your commits will be checked by given runners and commit will be prevented if are there any errors
Runners
-
bom Check files for byte order mark
-
php Check php files for syntax errors using 'php -l' command line tool
-
phpcs (PhpCodeSniffer)
- config parameters :
- 'muhafiz.runners.phpcs.standard' : set coding standard (see reference doc) | defaults to "PEAR"
- 'muhafiz.runners.phpcs.report' : set reporting type (see reference doc) | defaults to "emacs"
- config parameters :
-
php-cs-fixer (Php CS Fixer)
- config parameters :
- 'muhafiz.runners.php-cs-fixer.standard' : set coding standard (see reference doc) | defaults to "psr2"
- config parameters :
-
jshint (JSHint Node.js Command Line Tool)
- config parameters :
- 'muhafiz.runners.jshint.config' : jshint config file (see reference doc) | defaults to ".jshintrc"
- config parameters :
-
lineend Check files' line endings
- config parameters :
- 'muhafiz.runners.lineend.allowed' : should be 'unix' or 'windows'
- config parameters :
-
vardump Check php/phtml files for var_dump() or print_r() statement
-
consolefoo Check js files for console.*() statements
-
pyflakes the passive checker of Python programs
-
pep8 check your Python code against some of the style conventions in PEP 8.
- config parameters :
- 'muhafiz.runners.pep8.repeat' : show all occurrences of the same error.
- 'muhafiz.runners.pep8.ignore' : skip errors and warnings (e.g. E4,W)
- 'muhafiz.runners.pep8.select' : select errors and warnings (e.g. E,W6)
- 'muhafiz.runners.pep8.show-source' : show source code for each error
- 'muhafiz.runners.pep8.show-pep8' : show text of PEP 8 for each error (implies --first)
- 'muhafiz.runners.pep8.show-statistics' : display count of errors and warnings
- config parameters :
Setting exclude patterns for runners
Exclude patterns can be set for each runner with setting a RegExp rule in 'muhafiz.runners.RUNNER_NAME.exclude-pattern' like
Git:
$ git config muhafiz.runners.lineend.exclude-pattern '/static\/images/'
Subversion:
[muhafiz]
runners.lineend.exclude-pattern='/static\/images/'
In this example, lineend rune will not be applied to files which matches that rule (like /foo/static/images/bar.xyz)
Disabling pushes to specific branches (Only on pre-receive hook)
You can disable pushes to specific branches by
Git:
$ git config muhafiz.disabled-branches "foo bar"
Subversion:
[muhafiz]
disabled-branches="foo bar"
Contributors
Osman Yüksel <br /> Volkan Altan <br /> chesterx <br /> Adil İlhan <br /> Eser Özvataf <br/> İbrahim Gündüz
TODO
- verbose options
Related Skills
node-connect
351.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。

