Classes

Bubble size = executable lines. Hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 50 100 150 200 Line Coverage (%) Cyclomatic Complexity Phpdftk\Css\Selector\SelectorParser — Coverage: 85.8% | Lines: 323 | Complexity: 168 Phpdftk\Css\Selector\Matcher — Coverage: 84.0% | Lines: 144 | Complexity: 98 Phpdftk\Css\Selector\AnPlusBParser — Coverage: 58.1% | Lines: 86 | Complexity: 54 Phpdftk\Css\Selector\PseudoClassSelector — Coverage: 84.6% | Lines: 26 | Complexity: 14 Phpdftk\Css\Selector\AnPlusB — Coverage: 58.8% | Lines: 17 | Complexity: 12 Phpdftk\Css\Selector\PseudoElementSelector — Coverage: 28.6% | Lines: 14 | Complexity: 8 Phpdftk\Css\Selector\ComplexSelector — Coverage: 92.3% | Lines: 13 | Complexity: 7 Phpdftk\Css\Selector\AttributeSelector — Coverage: 83.3% | Lines: 12 | Complexity: 8 Phpdftk\Css\Selector\CompoundSelector — Coverage: 100.0% | Lines: 9 | Complexity: 5 Phpdftk\Css\Selector\Specificity — Coverage: 100.0% | Lines: 7 | Complexity: 8 Phpdftk\Css\Selector\SelectorList — Coverage: 83.3% | Lines: 6 | Complexity: 4 Phpdftk\Css\Selector\TypeSelector — Coverage: 80.0% | Lines: 5 | Complexity: 4 Phpdftk\Css\Selector\UniversalSelector — Coverage: 40.0% | Lines: 5 | Complexity: 4 Phpdftk\Css\Selector\ClassSelector — Coverage: 100.0% | Lines: 3 | Complexity: 3 Phpdftk\Css\Selector\IdSelector — Coverage: 100.0% | Lines: 3 | Complexity: 3 Phpdftk\Css\Selector\CompoundSelectorWithCombinator — Coverage: 100.0% | Lines: 1 | Complexity: 1

Methods

Bubble size = executable lines. Hover for details, click to navigate.

0% 20% 40% 60% 80% 100% 0 10 20 30 40 Line Coverage (%) Cyclomatic Complexity Phpdftk\Css\Selector\AnPlusBParser::parse — Coverage: 46.7% | Lines: 60 | Complexity: 34 Phpdftk\Css\Selector\SelectorParser::parseAttributeSelector — Coverage: 76.4% | Lines: 55 | Complexity: 24 Phpdftk\Css\Selector\Matcher::matchPseudoClass — Coverage: 83.9% | Lines: 31 | Complexity: 29 Phpdftk\Css\Selector\Matcher::matchAt — Coverage: 78.6% | Lines: 28 | Complexity: 15 Phpdftk\Css\Selector\SelectorParser::tryParseTypeOrUniversal — Coverage: 100.0% | Lines: 28 | Complexity: 17 Phpdftk\Css\Selector\SelectorParser::parseComplexSelectorList — Coverage: 64.0% | Lines: 25 | Complexity: 10 Phpdftk\Css\Selector\SelectorParser::parseCombinator — Coverage: 100.0% | Lines: 24 | Complexity: 10 Phpdftk\Css\Selector\SelectorParser::parsePseudoSelector — Coverage: 95.7% | Lines: 23 | Complexity: 8 Phpdftk\Css\Selector\SelectorParser::buildPseudoClassFunction — Coverage: 87.0% | Lines: 23 | Complexity: 14 Phpdftk\Css\Selector\Matcher::matchAttribute — Coverage: 95.5% | Lines: 22 | Complexity: 11 Phpdftk\Css\Selector\SelectorParser::serializeToken — Coverage: 100.0% | Lines: 19 | Complexity: 18 Phpdftk\Css\Selector\SelectorParser::parseComplexSelector — Coverage: 88.2% | Lines: 17 | Complexity: 5 Phpdftk\Css\Selector\SelectorParser::tryParseSubclassOrPseudo — Coverage: 93.3% | Lines: 15 | Complexity: 8 Phpdftk\Css\Selector\SelectorParser::parseAttrMatcher — Coverage: 93.3% | Lines: 15 | Complexity: 12 Phpdftk\Css\Selector\SelectorParser::collectUntilMatchingParen — Coverage: 85.7% | Lines: 14 | Complexity: 5 Phpdftk\Css\Selector\Matcher::simpleMatches — Coverage: 100.0% | Lines: 12 | Complexity: 9 Phpdftk\Css\Selector\Matcher::matchLang — Coverage: 83.3% | Lines: 12 | Complexity: 7 Phpdftk\Css\Selector\SelectorParser::parseCompoundSelector — Coverage: 91.7% | Lines: 12 | Complexity: 5 Phpdftk\Css\Selector\SelectorParser::skipToNextSelector — Coverage: 0.0% | Lines: 11 | Complexity: 9 Phpdftk\Css\Selector\AnPlusBParser::parseWithOf — Coverage: 90.0% | Lines: 10 | Complexity: 4 Phpdftk\Css\Selector\AttributeSelector::toString — Coverage: 80.0% | Lines: 10 | Complexity: 6 Phpdftk\Css\Selector\PseudoClassSelector::toString — Coverage: 80.0% | Lines: 10 | Complexity: 5 Phpdftk\Css\Selector\SelectorParser::startsCompound — Coverage: 90.0% | Lines: 10 | Complexity: 7 Phpdftk\Css\Selector\PseudoClassSelector::specificity — Coverage: 88.9% | Lines: 9 | Complexity: 4 Phpdftk\Css\Selector\ComplexSelector::toString — Coverage: 87.5% | Lines: 8 | Complexity: 4 Phpdftk\Css\Selector\Matcher::hasMatches — Coverage: 75.0% | Lines: 8 | Complexity: 4 Phpdftk\Css\Selector\AnPlusB::matches — Coverage: 100.0% | Lines: 7 | Complexity: 3 Phpdftk\Css\Selector\AnPlusB::toString — Coverage: 0.0% | Lines: 7 | Complexity: 6 Phpdftk\Css\Selector\Matcher::matchType — Coverage: 57.1% | Lines: 7 | Complexity: 5 Phpdftk\Css\Selector\Matcher::matchNth — Coverage: 71.4% | Lines: 7 | Complexity: 5 Phpdftk\Css\Selector\PseudoElementSelector::specificity — Coverage: 42.9% | Lines: 7 | Complexity: 4 Phpdftk\Css\Selector\PseudoClassSelector::argumentMaxSpecificity — Coverage: 83.3% | Lines: 6 | Complexity: 4 Phpdftk\Css\Selector\PseudoElementSelector::toString — Coverage: 0.0% | Lines: 6 | Complexity: 3 Phpdftk\Css\Selector\SelectorParser::parse — Coverage: 100.0% | Lines: 6 | Complexity: 1 Phpdftk\Css\Selector\AnPlusBParser::trimWhitespace — Coverage: 80.0% | Lines: 5 | Complexity: 5 Phpdftk\Css\Selector\SelectorParser::skipWhitespace — Coverage: 100.0% | Lines: 5 | Complexity: 3 Phpdftk\Css\Selector\AnPlusBParser::findOfKeyword — Coverage: 100.0% | Lines: 4 | Complexity: 4 Phpdftk\Css\Selector\ComplexSelector::specificity — Coverage: 100.0% | Lines: 4 | Complexity: 2 Phpdftk\Css\Selector\CompoundSelector::specificity — Coverage: 100.0% | Lines: 4 | Complexity: 2 Phpdftk\Css\Selector\CompoundSelector::toString — Coverage: 100.0% | Lines: 4 | Complexity: 2 Phpdftk\Css\Selector\Matcher::listMatches — Coverage: 100.0% | Lines: 4 | Complexity: 3 Phpdftk\Css\Selector\Matcher::complexMatches — Coverage: 75.0% | Lines: 4 | Complexity: 2 Phpdftk\Css\Selector\Matcher::compoundMatches — Coverage: 100.0% | Lines: 4 | Complexity: 3 Phpdftk\Css\Selector\Matcher::wordListIncludes — Coverage: 75.0% | Lines: 4 | Complexity: 4 Phpdftk\Css\Selector\SelectorList::toString — Coverage: 100.0% | Lines: 4 | Complexity: 2 Phpdftk\Css\Selector\SelectorParser::buildPseudoElementFunction — Coverage: 75.0% | Lines: 4 | Complexity: 3 Phpdftk\Css\Selector\SelectorParser::serializeTokens — Coverage: 100.0% | Lines: 4 | Complexity: 2 Phpdftk\Css\Selector\AnPlusBParser::skipWs — Coverage: 66.7% | Lines: 3 | Complexity: 3 Phpdftk\Css\Selector\SelectorParser::parseTokens — Coverage: 100.0% | Lines: 3 | Complexity: 1 Phpdftk\Css\Selector\SelectorParser::parseTokensInner — Coverage: 100.0% | Lines: 3 | Complexity: 1 Phpdftk\Css\Selector\Specificity::compare — Coverage: 100.0% | Lines: 3 | Complexity: 3 Phpdftk\Css\Selector\TypeSelector::toString — Coverage: 66.7% | Lines: 3 | Complexity: 2 Phpdftk\Css\Selector\UniversalSelector::toString — Coverage: 0.0% | Lines: 3 | Complexity: 2 Phpdftk\Css\Selector\AnPlusBParser::isNDimensionUnit — Coverage: 100.0% | Lines: 2 | Complexity: 2 Phpdftk\Css\Selector\SelectorParser::__construct — Coverage: 100.0% | Lines: 2 | Complexity: 1 Phpdftk\Css\Selector\SelectorParser::serializeTokenRange — Coverage: 100.0% | Lines: 2 | Complexity: 1 Phpdftk\Css\Selector\AnPlusB::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\AnPlusB::odd — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\AnPlusB::even — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\AnPlusBParser::dimensionACoefficient — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\AnPlusBParser::isNLikeIdent — Coverage: 0.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\AttributeSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\AttributeSelector::specificity — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\ClassSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\ClassSelector::specificity — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\ClassSelector::toString — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\ComplexSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\CompoundSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\CompoundSelectorWithCombinator::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\IdSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\IdSelector::specificity — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\IdSelector::toString — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\Matcher::matchPseudoElement — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\PseudoClassSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\PseudoElementSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\SelectorList::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\SelectorList::isEmpty — Coverage: 0.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\SelectorParser::eof — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\SelectorParser::peek — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\SelectorParser::peekAt — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\Specificity::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\Specificity::add — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\Specificity::max — Coverage: 100.0% | Lines: 1 | Complexity: 2 Phpdftk\Css\Selector\Specificity::__toString — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\TypeSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\TypeSelector::specificity — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\UniversalSelector::__construct — Coverage: 100.0% | Lines: 1 | Complexity: 1 Phpdftk\Css\Selector\UniversalSelector::specificity — Coverage: 100.0% | Lines: 1 | Complexity: 1

 

Sorted by descending CRAP (Change Risk Anti-Patterns) index.

Method CRAP Coverage
Phpdftk\Css\Selector\AnPlusBParser::parse209.3746.7%
Phpdftk\Css\Selector\SelectorParser::skipToNextSelector900.0%
Phpdftk\Css\Selector\AnPlusB::toString420.0%
Phpdftk\Css\Selector\Matcher::matchPseudoClass32.5383.9%
Phpdftk\Css\Selector\SelectorParser::parseAttributeSelector31.6176.4%
Phpdftk\Css\Selector\SelectorParser::serializeToken18100.0%
Phpdftk\Css\Selector\Matcher::matchAt17.2178.6%
Phpdftk\Css\Selector\SelectorParser::tryParseTypeOrUniversal17100.0%
Phpdftk\Css\Selector\SelectorParser::parseComplexSelectorList14.6764.0%
Phpdftk\Css\Selector\SelectorParser::buildPseudoClassFunction14.4387.0%
Phpdftk\Css\Selector\SelectorParser::parseAttrMatcher12.0493.3%
Phpdftk\Css\Selector\PseudoElementSelector::toString120.0%
Phpdftk\Css\Selector\Matcher::matchAttribute1195.5%
Phpdftk\Css\Selector\SelectorParser::parseCombinator10100.0%
Phpdftk\Css\Selector\Matcher::simpleMatches9100.0%
Phpdftk\Css\Selector\SelectorParser::tryParseSubclassOrPseudo8.0293.3%
Phpdftk\Css\Selector\SelectorParser::parsePseudoSelector895.7%
Phpdftk\Css\Selector\Matcher::matchLang7.2383.3%
Phpdftk\Css\Selector\SelectorParser::startsCompound7.0590.0%
Phpdftk\Css\Selector\PseudoElementSelector::specificity6.9942.9%
Phpdftk\Css\Selector\Matcher::matchType6.9757.1%
Phpdftk\Css\Selector\AttributeSelector::toString6.2980.0%
Phpdftk\Css\Selector\UniversalSelector::toString60.0%
Phpdftk\Css\Selector\Matcher::matchNth5.5871.4%
Phpdftk\Css\Selector\AnPlusBParser::trimWhitespace5.2080.0%
Phpdftk\Css\Selector\PseudoClassSelector::toString5.2080.0%
Phpdftk\Css\Selector\SelectorParser::collectUntilMatchingParen5.0785.7%
Phpdftk\Css\Selector\SelectorParser::parseComplexSelector5.0488.2%
Phpdftk\Css\Selector\SelectorParser::parseCompoundSelector5.0191.7%
Phpdftk\Css\Selector\Matcher::wordListIncludes4.2575.0%
Phpdftk\Css\Selector\Matcher::hasMatches4.2575.0%
Phpdftk\Css\Selector\PseudoClassSelector::argumentMaxSpecificity4.0783.3%
Phpdftk\Css\Selector\ComplexSelector::toString4.0387.5%
Phpdftk\Css\Selector\AnPlusBParser::parseWithOf4.0290.0%
Phpdftk\Css\Selector\PseudoClassSelector::specificity4.0288.9%
Phpdftk\Css\Selector\AnPlusBParser::findOfKeyword4100.0%
Phpdftk\Css\Selector\AnPlusBParser::skipWs3.3366.7%
Phpdftk\Css\Selector\SelectorParser::buildPseudoElementFunction3.1475.0%
Phpdftk\Css\Selector\AnPlusB::matches3100.0%
Phpdftk\Css\Selector\Matcher::listMatches3100.0%
Phpdftk\Css\Selector\Matcher::compoundMatches3100.0%
Phpdftk\Css\Selector\SelectorParser::skipWhitespace3100.0%
Phpdftk\Css\Selector\Specificity::compare3100.0%
Phpdftk\Css\Selector\TypeSelector::toString2.1566.7%
Phpdftk\Css\Selector\Matcher::complexMatches2.0675.0%
Phpdftk\Css\Selector\AnPlusBParser::isNDimensionUnit2100.0%
Phpdftk\Css\Selector\AnPlusBParser::isNLikeIdent20.0%
Phpdftk\Css\Selector\ComplexSelector::specificity2100.0%
Phpdftk\Css\Selector\CompoundSelector::specificity2100.0%
Phpdftk\Css\Selector\CompoundSelector::toString2100.0%
Phpdftk\Css\Selector\SelectorList::isEmpty20.0%
Phpdftk\Css\Selector\SelectorList::toString2100.0%
Phpdftk\Css\Selector\SelectorParser::serializeTokens2100.0%
Phpdftk\Css\Selector\Specificity::max2100.0%
Phpdftk\Css\Selector\AnPlusB::__construct1100.0%
Phpdftk\Css\Selector\AnPlusB::odd1100.0%
Phpdftk\Css\Selector\AnPlusB::even1100.0%
Phpdftk\Css\Selector\AnPlusBParser::dimensionACoefficient1100.0%
Phpdftk\Css\Selector\AttributeSelector::__construct1100.0%
Phpdftk\Css\Selector\AttributeSelector::specificity1100.0%
Phpdftk\Css\Selector\ClassSelector::__construct1100.0%
Phpdftk\Css\Selector\ClassSelector::specificity1100.0%
Phpdftk\Css\Selector\ClassSelector::toString1100.0%
Phpdftk\Css\Selector\ComplexSelector::__construct1100.0%
Phpdftk\Css\Selector\CompoundSelector::__construct1100.0%
Phpdftk\Css\Selector\CompoundSelectorWithCombinator::__construct1100.0%
Phpdftk\Css\Selector\IdSelector::__construct1100.0%
Phpdftk\Css\Selector\IdSelector::specificity1100.0%
Phpdftk\Css\Selector\IdSelector::toString1100.0%
Phpdftk\Css\Selector\Matcher::matchPseudoElement1100.0%
Phpdftk\Css\Selector\PseudoClassSelector::__construct1100.0%
Phpdftk\Css\Selector\PseudoElementSelector::__construct1100.0%
Phpdftk\Css\Selector\SelectorList::__construct1100.0%
Phpdftk\Css\Selector\SelectorParser::parse1100.0%
Phpdftk\Css\Selector\SelectorParser::parseTokens1100.0%
Phpdftk\Css\Selector\SelectorParser::__construct1100.0%
Phpdftk\Css\Selector\SelectorParser::parseTokensInner1100.0%
Phpdftk\Css\Selector\SelectorParser::eof1100.0%
Phpdftk\Css\Selector\SelectorParser::peek1100.0%
Phpdftk\Css\Selector\SelectorParser::peekAt1100.0%
Phpdftk\Css\Selector\SelectorParser::serializeTokenRange1100.0%
Phpdftk\Css\Selector\Specificity::__construct1100.0%
Phpdftk\Css\Selector\Specificity::add1100.0%
Phpdftk\Css\Selector\Specificity::__toString1100.0%
Phpdftk\Css\Selector\TypeSelector::__construct1100.0%
Phpdftk\Css\Selector\TypeSelector::specificity1100.0%
Phpdftk\Css\Selector\UniversalSelector::__construct1100.0%
Phpdftk\Css\Selector\UniversalSelector::specificity1100.0%
Phpdftk\Css\Selector\SimpleSelector::specificity0100.0%
Phpdftk\Css\Selector\SimpleSelector::toString0100.0%