instaclick / gherkincs
Code Sniffer and Semantic Analyzer for Gherkin
Installs: 11 787
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 8
Forks: 6
Open Issues: 3
Requires
- php: >=5.3.6
- twig/twig: 1.*
Requires (Dev)
- instaclick/coding-standard: dev-master
- instaclick/object-calisthenics-sniffs: dev-master
- instaclick/symfony2-coding-standard: dev-remaster
- phpunit/phpunit: >=3.7.x-dev
- squizlabs/php_codesniffer: 1.5.0RC2
This package is not auto-updated.
Last update: 2024-12-02 15:42:00 UTC
README
By Juti Noppornpitak
Dependencies
- twig (dev-master, required for HTML report)
Installation
Standalone
At the root directory where Gherkin CS's composer.json
is,
Installation (Normal): run composer.phar install
Installation (DEV): run composer.phar install --dev
Executable: cuke-standalone
.
Composer with Packagist
Installation: Add "instaclick/gherkincs": "dev-master"
in the require
or require-dev
section of the
project's composer.json
.
Executable: vendor/bin/cuke
.
Usage
Define cuke
as either cuke-standalone
or vendor/bin/cuke
.
cuke [--jcs <directory_to_put_report>] [--html <directory_to_put_reports>] <configuration_file_path> <directory_path_to_scan>
where --html
is to produce a set of reports in HTML and --jcs
is to produce a checkstyle-format report for Jenkins/Hudson CI.
Please note that:
- by default, the report will be displayed on the standard output,
--html
will be used if both--jcs
and--html
are given.
For example,
cuke --jcs darkside.xml config.xml jedi/
Available Analyzers
Semantic Analyzer
Context Flow
This analyzer first checks for the given-when-then context flow (precondition-action-assertion) in the following patterns:
Precondition
-> Continuation (as precondition)
-> Action
-> Assertion
Action
-> Continuation (as action)
-> Assertion
Assertion
-> Continuation (as assertion)
-> Precondition
-> Action
Semantic Quality
It also asserts one of the conditions:
- any contexts containing "click", "fill", "follow", or "select" is an action,
- any contexts containing "should" or "must" is an assertion.
When a context does not satisfy two or more conditions, the analyzer will consider it an exception (and emit no warnings).
Coding Style Checker
This analyzer checks if:
- tab characters are not used,
- the width of indentation is consistent where the default width is 4 spaces,
- there exists no trailing spaces,
- features have no leading spaces (no indentation),
- backgrounds, scenarios, and scenario outlines have exactly one level of indentation,
- preconditions, actions, assertions and continuations have exactly two levels of indentation,
- tabular data has exactly three levels of indentation,
- tag lines have at most one level of indentation,
- extra spaces (two or more whitespaces) occur in non-tabular-data contexts.
Instaclick's Coding Style Checker
This analyzer checks if any tags' name must:
- start with @,
- start and end with alphanumeric characters,
- only use hyphens ("-"),
- be in lowercase.
Write a Custom Analyzer
All analyzers must implement IC\Gherkinics\Analyzer\AnalyzerInterface
.