All Projects → projectwallace → constyble

projectwallace / constyble

Licence: MIT license
CSS complexity linter

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to constyble

Static Analysis
⚙️ A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more.
Stars: ✭ 9,310 (+10019.57%)
Mutual labels:  analysis, linter, static-analysis
lints
Lint all your JavaScript, CSS, HTML, Markdown and Dockerfiles with a single command
Stars: ✭ 14 (-84.78%)
Mutual labels:  analysis, linter, static-analysis
Goreporter
A Golang tool that does static analysis, unit testing, code review and generate code quality report.
Stars: ✭ 2,943 (+3098.91%)
Mutual labels:  test, linter, static-analysis
nestif
Detect deeply nested if statements in Go source code
Stars: ✭ 30 (-67.39%)
Mutual labels:  linter, static-analysis, complexity
goreporter
A Golang tool that does static analysis, unit testing, code review and generate code quality report.
Stars: ✭ 3,019 (+3181.52%)
Mutual labels:  test, linter, static-analysis
Detekt
Static code analysis for Kotlin
Stars: ✭ 4,169 (+4431.52%)
Mutual labels:  analysis, linter, static-analysis
Exakat
The Exakat Engine : smart static analysis for PHP
Stars: ✭ 346 (+276.09%)
Mutual labels:  analysis, linter, static-analysis
Go Ruleguard
Define and run pattern-based custom linting rules.
Stars: ✭ 402 (+336.96%)
Mutual labels:  analysis, linter, static-analysis
SDA
SDA is a rich cross-platform tool for reverse engineering that focused firstly on analysis of computer games. I'm trying to create a mix of the Ghidra, Cheat Engine and x64dbg. My tool will combine static and dynamic analysis of programs. Now SDA is being developed.
Stars: ✭ 98 (+6.52%)
Mutual labels:  analysis, static-analysis
sbt-findbugs
FindBugs static analysis plugin for sbt.
Stars: ✭ 47 (-48.91%)
Mutual labels:  analysis, static-analysis
dlint
Dlint is a tool for encouraging best coding practices and helping ensure Python code is secure.
Stars: ✭ 130 (+41.3%)
Mutual labels:  linter, static-analysis
tryceratops
A linter to prevent exception handling antipatterns in Python (limited only for those who like dinosaurs).
Stars: ✭ 381 (+314.13%)
Mutual labels:  linter, static-analysis
Dg
[LLVM Static Slicer] Various program analyses, construction of dependence graphs and program slicing of LLVM bitcode.
Stars: ✭ 242 (+163.04%)
Mutual labels:  analysis, static-analysis
swap-detector
A library for detecting swapped arguments in function calls, and a Clang Static Analyzer plugin used to demonstrate the library.
Stars: ✭ 19 (-79.35%)
Mutual labels:  analysis, static-analysis
Querly
Query Method Calls from Ruby Programs
Stars: ✭ 226 (+145.65%)
Mutual labels:  analysis, linter
Zpa
A parser and source code analyzer for PL/SQL and Oracle SQL.
Stars: ✭ 124 (+34.78%)
Mutual labels:  analysis, static-analysis
ramllint
RAML Linter
Stars: ✭ 18 (-80.43%)
Mutual labels:  linter, static-analysis
go-perfguard
CPU-guided performance analyzer for Go
Stars: ✭ 58 (-36.96%)
Mutual labels:  linter, static-analysis
Scalpel
Scalpel: The Python Static Analysis Framework
Stars: ✭ 176 (+91.3%)
Mutual labels:  analysis, static-analysis
lint-html-with-css
Lint HTML with CSS. A collection of CSS snippets from the hashtag #lintHTMLwithCSS on twitter. These CSS snippets intend to warn developers about common mistakes made in HTML.
Stars: ✭ 35 (-61.96%)
Mutual labels:  test, linter

constyble

A CSS complexity linter, based on css-analyzer. Don't let your CSS grow beyond the thresholds that you provide.

NPM Version Build Status Known Vulnerabilities XO code style Dependencies Status Dependencies Status Project: Wallace

Installation

npm install constyble
# or
yarn add constyble

Usage

We need a config with thresholds and CSS to compare it to.

# Default usage (assuming a .constyblerc file in the current directory)
$ constyble style.css

# Read from StdIn (assuming a .constyblerc file in the current directory)
$ cat style.css | constyble

# Custom config
$ constyble style.css --config my-config.json

The result will look like something like this:

TAP version 13
# Subtest: selectors.id.total
    ok 1 - selectors.id.total should not be larger than 0 (actual: 0)
    1..1
ok 1 - selectors.id.total # time=6.024ms

1..1
# time=15.076ms

Note that this example uses only 1 test (total ID selectors).

Config file

constyble will try to fetch a .constyblerc file in your current directory. You can also specify a different JSON config file with the --config option (see usage). The config JSON should look similar to this:

{
	// Do not exceed 4095, otherwise IE9 will drop any subsequent rules
	"selectors.total": 4095,
	"selectors.id.total": 0,
	"values.colors.totalUnique": 2,
	"values.colors.unique": ["#fff", "#000"]
}

All the possible options for the config file can be found at @projectwallace/css-analyzer. JSON comments are allowed.

Custom reporter

By default, constyble will report in the TAP format, but you can pipe the output into something you may find prettier, like tap-nyan, tap-dot or any other TAP-reporter.

tap-nyan

$ constyble style.css | tap-nyan

 1   -_,------,
 0   -_|   /\_/\
 0   -^|__( ^ .^)
     -  ""  ""
  Pass!

Usage in CI

If any test fails, constyble will exit with a non-zero exit code. When you run constyble in your CI builds, this may cause the build to fail. This is exactly what constyble was designed to do.

Example usage with package.json:

{
	"name": "my-package",
	"version": "0.1.0",
	"scripts": {
		"test": "constyble compiled-styles.css"
	},
	"devDependencies": {
		"constyble": "*"
	}
}

The name

constyble is a mix of the words Style and Constable. This package is like a police officer (constable) for your styles. Previously this package was called Gromit, but that was dropped because it's too closely related to the main 'Wallace' project that this package is part of.

Related projects

License

MIT © Bart Veneman

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].