# Kritika.IO TPCiA 2017 vti
# ABOUT ME
# 2008
Protocol::WebSocket, PocketIO/SockJS, Routes::Tiny, Text::Haml, UnderscoreJS and others...
showmetheco.de
# 2012
# 2013
# Today
# Pre history
New Job:

Technical Debt

No Tests

No Automation

No Standards/Best Practices/etc

Developers of different levels

# Fix it
My responsibility:

Code Review

Testing

Refactoring

Mentoring

Team responsibility:

Learn

Practice

Learn

Practice

...

Result?
Real solution is...
CONTROL
# Enforce Best Practices
Can we just write bash/perl/whatever script using perlcritic/eslint/whatever?
What's wrong with Perl::Critic?

Slow on big codebase

Perl-specific

Local setup

No history

Static analysis not enough

What do we want?

Static Code Analysis

Code Complexity

Test Coverage

Formatting

Duplication Detection

Custom Domain Rules

Consistency

https://kritika.io

Started as in-house bash/perl/everything script

Personal GitHub projects

Let everybody enjoy it

Main Features:

Incremental Analysis (fast)

Unified way to check all project technologies (Perl, JavaScript, Markdown etc)

Saves progress over time (blame)

Single point of configuration (works on my machine)

Shareable results (blame)

Custom programmable analysis (advanced blame)

1. Repo import

2. Smart defaults (scripts, packages, builds)

3. Rule customizations through profiles

4. History and diffs

# Use Case - Catalyst - Mojolicious - Dancer/Dancer2
What's inside?

PostgreSQL

Moo

PPI/Regex/Hacks for Perl AST

Marpa for other ASTs

Plack/PSGI on top of Gazelle

AnyEvent with Plack::App::EventSource for events

Integrations:

Editors

Command line / Hooks

What's next?

More profiles and rules

More languages (Perl, JavaScript, C, Bash, Markdown)

More integrations (GitLab, BitBucket...)

Feedback welcome!

# THANK YOU # Q&A?