├── .gitignore ├── LICENSE ├── README.md ├── css-checks-testkit ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── sonar │ └── css │ └── checks │ └── verifier │ ├── CssCheckVerifier.java │ ├── TestIssue.java │ ├── TreeCheckTest.java │ └── package-info.java ├── css-checks ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── sonar │ │ │ └── css │ │ │ └── checks │ │ │ ├── AllGradientDefinitionsCheck.java │ │ │ ├── AlphabetizeDeclarationsCheck.java │ │ │ ├── BOMCheck.java │ │ │ ├── BewareOfBoxModelCheck.java │ │ │ ├── CaseCheck.java │ │ │ ├── CaseInsensitiveFlagCheck.java │ │ │ ├── CharsetFirstCheck.java │ │ │ ├── CheckList.java │ │ │ ├── CheckUtils.java │ │ │ ├── CommentContainsPatternChecker.java │ │ │ ├── CommentRegularExpressionCheck.java │ │ │ ├── CompatibleVendorPrefixesCheck.java │ │ │ ├── DeprecatedIEStaticFilterCheck.java │ │ │ ├── DeprecatedSystemColorCheck.java │ │ │ ├── DisplayPropertyGroupingCheck.java │ │ │ ├── DoNotUseShorthandPropertyCheck.java │ │ │ ├── DuplicateBackgroundImagesCheck.java │ │ │ ├── DuplicatedPropertiesCheck.java │ │ │ ├── EmptyDeclarationCheck.java │ │ │ ├── EmptyRuleCheck.java │ │ │ ├── ExperimentalAtRuleCheck.java │ │ │ ├── ExperimentalFunctionCheck.java │ │ │ ├── ExperimentalIdentifierCheck.java │ │ │ ├── ExperimentalPropertyCheck.java │ │ │ ├── ExperimentalPseudoCheck.java │ │ │ ├── ExperimentalSelectorCombinatorCheck.java │ │ │ ├── FixmeTagCheck.java │ │ │ ├── FontFaceBrowserCompatibilityCheck.java │ │ │ ├── FormattingCheck.java │ │ │ ├── GenerateRuleDescriptionsBatch.java │ │ │ ├── IdInSelectorCheck.java │ │ │ ├── ImportFirstCheck.java │ │ │ ├── ImportNumberCheck.java │ │ │ ├── ImportUsageCheck.java │ │ │ ├── ImportantPositionCheck.java │ │ │ ├── ImportantUsageCheck.java │ │ │ ├── InliningFontFileCheck.java │ │ │ ├── LeadingZeroCheck.java │ │ │ ├── LineLengthCheck.java │ │ │ ├── NoSonarTagPresenceCheck.java │ │ │ ├── NumberOfRulesPerSheetCheck.java │ │ │ ├── ObsoleteFunctionCheck.java │ │ │ ├── ObsoletePropertieCheck.java │ │ │ ├── ObsoletePseudoCheck.java │ │ │ ├── OneDeclarationPerLineCheck.java │ │ │ ├── OverqualifiedElementCheck.java │ │ │ ├── OverspecificSelectorCheck.java │ │ │ ├── ParsingErrorCheck.java │ │ │ ├── PropertyRegularExpressionCheck.java │ │ │ ├── RuleDescriptionsGenerator.java │ │ │ ├── SelectorLikeRegExCheck.java │ │ │ ├── SelectorNamingConventionCheck.java │ │ │ ├── SelectorNumberCheck.java │ │ │ ├── SemicolonDeclarationCheck.java │ │ │ ├── StarHackCheck.java │ │ │ ├── TabCharacterCheck.java │ │ │ ├── Tags.java │ │ │ ├── TodoTagCheck.java │ │ │ ├── TooManyWebFontsCheck.java │ │ │ ├── TrailingWhitespaceCheck.java │ │ │ ├── UnderscoreHackCheck.java │ │ │ ├── UnitForZeroValueCheck.java │ │ │ ├── UniversalSelectorCheck.java │ │ │ ├── UnknownAtRuleCheck.java │ │ │ ├── UnknownFunctionCheck.java │ │ │ ├── UnknownPropertyCheck.java │ │ │ ├── UnknownPseudoCheck.java │ │ │ ├── UseShorthandPropertyCheck.java │ │ │ ├── ValidatePropertyValueCheck.java │ │ │ ├── VendorPrefixWithStandardCheck.java │ │ │ └── package-info.java │ └── resources │ │ └── org │ │ └── sonar │ │ └── l10n │ │ └── css │ │ └── rules │ │ └── css │ │ ├── S1131.html │ │ ├── S1134.html │ │ ├── S1135.html │ │ ├── S2260.html │ │ ├── S2732.html │ │ ├── S2735.html │ │ ├── alphabetize-declarations.html │ │ ├── bom-utf8-files.html │ │ ├── box-model.html │ │ ├── case-insensitive-flag.html │ │ ├── case.html │ │ ├── charset-first.html │ │ ├── comment-regular-expression.html │ │ ├── deprecated-ie-static-filters.html │ │ ├── deprecated-system-colors.html │ │ ├── display-property-grouping.html │ │ ├── duplicate-background-images.html │ │ ├── duplicate-properties.html │ │ ├── empty-declaration.html │ │ ├── empty-rules.html │ │ ├── experimental-selector-combinator-usage.html │ │ ├── font-face-browser-compatibility.html │ │ ├── font-faces.html │ │ ├── formatting.html │ │ ├── gradients.html │ │ ├── ids.html │ │ ├── import-first.html │ │ ├── import.html │ │ ├── important-position.html │ │ ├── important.html │ │ ├── inlining-font-files.html │ │ ├── known-properties.html │ │ ├── leading-zeros.html │ │ ├── line-length.html │ │ ├── nosonar.html │ │ ├── one-declaration-per-line.html │ │ ├── overqualified-elements.html │ │ ├── overspecific-selectors.html │ │ ├── property-regular-expression.html │ │ ├── regex-selectors.html │ │ ├── selector-naming-convention.html │ │ ├── semicolon-declaration.html │ │ ├── sheet-too-many-rules.html │ │ ├── star-property-hack.html │ │ ├── tab-character.html │ │ ├── template │ │ ├── compatible-vendor-prefixes.html │ │ ├── do-not-use-shorthand-properties.html │ │ ├── experimental-atrule-usage.html │ │ ├── experimental-function-usage.html │ │ ├── experimental-identifier-usage.html │ │ ├── experimental-property-usage.html │ │ ├── experimental-pseudo-usage.html │ │ ├── known-properties.html │ │ ├── obsolete-functions.html │ │ ├── obsolete-properties.html │ │ ├── obsolete-pseudos.html │ │ ├── shorthand.html │ │ ├── unknown-at-rules.html │ │ ├── unknown-functions.html │ │ ├── unknown-pseudo.html │ │ └── validate-property-value.html │ │ ├── underscore-property-hack.html │ │ ├── universal-selector.html │ │ ├── vendor-prefix.html │ │ └── zero-units.html │ └── test │ ├── java │ └── org │ │ └── sonar │ │ └── css │ │ └── checks │ │ ├── AllGradientDefinitionsCheckTest.java │ │ ├── AlphabetizeDeclarationsCheckTest.java │ │ ├── BOMCheckTest.java │ │ ├── BewareOfBoxModelTest.java │ │ ├── CaseCheckTest.java │ │ ├── CaseInsensitiveFlagCheckTest.java │ │ ├── CharsetFirstCheckTest.java │ │ ├── CheckTestUtils.java │ │ ├── CommentRegularExpressionCheckTest.java │ │ ├── CompatibleVendorPrefixesCheckTest.java │ │ ├── DeprecatedIEStaticFilterCheckTest.java │ │ ├── DeprecatedSystemColorCheckTest.java │ │ ├── DisplayPropertyGroupingTest.java │ │ ├── DoNotUseShorthandPropertyCheckTest.java │ │ ├── DuplicateBackgroundImagesCheckTest.java │ │ ├── DuplicatedPropertiesCheckTest.java │ │ ├── EmptyDeclarationCheckTest.java │ │ ├── EmptyRuleCheckTest.java │ │ ├── ExperimentalAtRuleCheckTest.java │ │ ├── ExperimentalFunctionCheckTest.java │ │ ├── ExperimentalIdentifierCheckTest.java │ │ ├── ExperimentalPropertyCheckTest.java │ │ ├── ExperimentalPseudoCheckTest.java │ │ ├── ExperimentalSelectorCombinatorCheckTest.java │ │ ├── FixmeTagCheckTest.java │ │ ├── FontFaceBrowserCompatibilityCheckTest.java │ │ ├── FormattingCheckTest.java │ │ ├── IdInSelectorCheckTest.java │ │ ├── ImportFirstCheckTest.java │ │ ├── ImportNumberTest.java │ │ ├── ImportUsageCheckTest.java │ │ ├── ImportantPositionCheckTest.java │ │ ├── ImportantUsageCheckTest.java │ │ ├── InliningFontFileCheckTest.java │ │ ├── LeadingZeroCheckTest.java │ │ ├── LineLengthCheckTest.java │ │ ├── NosonarTagPresenceCheckTest.java │ │ ├── NumberOfRulesPerSheetCheckTest.java │ │ ├── ObsoleteFunctionCheckTest.java │ │ ├── ObsoletePropertieCheckTest.java │ │ ├── ObsoletePseudoCheckTest.java │ │ ├── OneDeclarationPerLineCheckTest.java │ │ ├── OverqualifiedElementCheckTest.java │ │ ├── OverspecificSelectorCheckTest.java │ │ ├── PropertyRegularExpressionCheckTest.java │ │ ├── SelectorLikeRegExCheckTest.java │ │ ├── SelectorNamingConventionCheckTest.java │ │ ├── SelectorNumberTest.java │ │ ├── SemicolonDeclarationCheckTest.java │ │ ├── StartHackCheckTest.java │ │ ├── TabCharacterCheckTest.java │ │ ├── TodoTagCheckTest.java │ │ ├── TooManyWebFontsCheckTest.java │ │ ├── TrailingWhitespaceCheckTest.java │ │ ├── UnderscoreHackCheckTest.java │ │ ├── UnitForZeroValueCheckTest.java │ │ ├── UniversalSelectorCheckTest.java │ │ ├── UnknownAtRuleCheckTest.java │ │ ├── UnknownFunctionCheckTest.java │ │ ├── UnknownPropertyCheckTest.java │ │ ├── UnknownPseudoCheckTest.java │ │ ├── UseShorthandPropertyCheckTest.java │ │ ├── ValidatePropertyValueCheckTest.java │ │ └── VendorPrefixWithStandardCheckTest.java │ └── resources │ └── checks │ ├── S2732.css │ ├── alphabetizeDeclarations.css │ ├── boxSizing.css │ ├── case.css │ ├── caseInsensitiveFlag.css │ ├── charset │ ├── charsetFirst.css │ ├── charsetFirstWithBOM.css │ └── charsetNotFirst.css │ ├── commentRegularExpression.css │ ├── custom │ ├── forbiddenProperties.css │ └── forbiddenUrl.css │ ├── deprecatedSystemColors.css │ ├── displayProperty.css │ ├── doNotUseShorthandProperties.css │ ├── duplicatebackgroundimages.css │ ├── duplicatedProperties.css │ ├── emptyDeclaration.css │ ├── emptyRule.css │ ├── experimentalAtRuleUsage.css │ ├── experimentalFunctionUsage.css │ ├── experimentalIdentifierUsage.css │ ├── experimentalPropertyUsage.css │ ├── experimentalPseudoUsage.css │ ├── experimentalSelectorCombinatorUsage.css │ ├── fixmeTagPresence.css │ ├── fontface │ ├── basic.css │ ├── deep.css │ └── deepest.css │ ├── formatting │ ├── block.css │ ├── declaration.css │ └── important.css │ ├── gradientdefinition.css │ ├── idsinselector.css │ ├── ieStaticFilters.css │ ├── import.css │ ├── import │ ├── importFirst1.css │ ├── importFirst2.css │ ├── importFirst3.css │ ├── importFirst4.css │ ├── importFirstWithCharset.css │ ├── importNotFirst1.css │ └── importNotFirst2.css │ ├── importThreshold.css │ ├── important.css │ ├── importantPosition.css │ ├── inliningFontFiles.css │ ├── knownProperty.css │ ├── leadingZeros.css │ ├── lineLength.css │ ├── lineLength30.css │ ├── lineLength50.css │ ├── maximumNumberOfRulesPerSheet10.css │ ├── maximumNumberOfRulesPerSheet11.css │ ├── maximumNumberOfRulesPerSheet9.css │ ├── metrics.css │ ├── noDuplication.css │ ├── noParsingError.css │ ├── nosonarTagPresence.css │ ├── notabcharacter.css │ ├── obsoleteFunctions.css │ ├── obsoleteProperties.css │ ├── obsoletePseudos.css │ ├── oneDeclarationPerLine.css │ ├── overqualified.css │ ├── overspecselector.css │ ├── overspecselectorCustom.css │ ├── parsingError.css │ ├── properties │ ├── accelerator.css │ ├── align-content.css │ ├── align-items.css │ ├── align-self.css │ ├── alignment-baseline.css │ ├── all.css │ ├── animation-delay.css │ ├── animation-direction.css │ ├── animation-duration.css │ ├── animation-fill-mode.css │ ├── animation-iteration-count.css │ ├── animation-name.css │ ├── animation-play-state.css │ ├── animation-timing-function.css │ ├── animation.css │ ├── backface-visibility.css │ ├── background-attachment.css │ ├── background-blend-mode.css │ ├── background-clip.css │ ├── background-color.css │ ├── background-image.css │ ├── background-origin.css │ ├── background-position-x.css │ ├── background-position-y.css │ ├── background-position.css │ ├── background-repeat.css │ ├── background-size.css │ ├── baseline-shift.css │ ├── block-progression.css │ ├── border-bottom-color.css │ ├── border-bottom-left-radius.css │ ├── border-bottom-right-radius.css │ ├── border-bottom-style.css │ ├── border-bottom-width.css │ ├── border-bottom.css │ ├── border-collapse.css │ ├── border-color.css │ ├── border-left-color.css │ ├── border-left-style.css │ ├── border-left-width.css │ ├── border-left.css │ ├── border-radius.css │ ├── border-right-color.css │ ├── border-right-style.css │ ├── border-right-width.css │ ├── border-right.css │ ├── border-spacing.css │ ├── border-style.css │ ├── border-top-color.css │ ├── border-top-left-radius.css │ ├── border-top-right-radius.css │ ├── border-top-style.css │ ├── border-top-width.css │ ├── border-top.css │ ├── border-width.css │ ├── border.css │ ├── bottom.css │ ├── box-decoration-break.css │ ├── box-sizing.css │ ├── box-snap.css │ ├── box-suppress.css │ ├── break-after.css │ ├── break-before.css │ ├── break-inside.css │ ├── caption-side.css │ ├── caret-color.css │ ├── caret-shape.css │ ├── clear.css │ ├── clip-path.css │ ├── clip-rule.css │ ├── clip.css │ ├── color-interpolation-filters.css │ ├── color-interpolation.css │ ├── color-rendering.css │ ├── color.css │ ├── column-count.css │ ├── column-fill.css │ ├── column-gap.css │ ├── column-rule-color.css │ ├── column-rule-style.css │ ├── column-rule-width.css │ ├── column-span.css │ ├── column-width.css │ ├── content-zoom-chaining.css │ ├── content-zoom-limit-max.css │ ├── content-zoom-limit-min.css │ ├── content-zoom-limit.css │ ├── content-zoom-snap-points.css │ ├── content-zoom-snap-type.css │ ├── content-zooming.css │ ├── counter-increment.css │ ├── counter-reset.css │ ├── cue-after.css │ ├── cue-before.css │ ├── cue.css │ ├── cursor.css │ ├── device-pixel-ratio.css │ ├── direction.css │ ├── display.css │ ├── dominant-baseline.css │ ├── empty-cells.css │ ├── fallback.css │ ├── fill-opacity.css │ ├── fill-rule.css │ ├── filter.css │ ├── flex-basis.css │ ├── flex-direction.css │ ├── flex-flow.css │ ├── flex-grow.css │ ├── flex-shrink.css │ ├── flex-wrap.css │ ├── float-defer.css │ ├── float-offset.css │ ├── float-reference.css │ ├── float.css │ ├── flood-color.css │ ├── flood-opacity.css │ ├── font-family.css │ ├── font-language-override.css │ ├── font-size-adjust.css │ ├── font-size.css │ ├── font-stretch.css │ ├── font-style.css │ ├── font-synthesis.css │ ├── font-variant-caps.css │ ├── font-variant-position.css │ ├── font-weight.css │ ├── footnote-display.css │ ├── footnote-policy.css │ ├── hanging-punctuation.css │ ├── height.css │ ├── high-contrast-adjust.css │ ├── high-contrast.css │ ├── hyphens.css │ ├── image-rendering.css │ ├── inline-box-align.css │ ├── isolation.css │ ├── justify-content.css │ ├── kerning.css │ ├── layout-flow.css │ ├── layout-grid-char.css │ ├── layout-grid-line.css │ ├── layout-grid-mode.css │ ├── layout-grid-type.css │ ├── left.css │ ├── letter-spacing.css │ ├── lighting-color.css │ ├── line-break.css │ ├── line-grid.css │ ├── line-height.css │ ├── line-snap.css │ ├── list-style-image.css │ ├── list-style-position.css │ ├── list-style-type.css │ ├── list-style.css │ ├── margin-bottom.css │ ├── margin-left.css │ ├── margin-right.css │ ├── margin-top.css │ ├── margin.css │ ├── marker-end.css │ ├── marker-mid.css │ ├── marker-side.css │ ├── marker-start.css │ ├── mask-border-mode.css │ ├── mask-border-outset.css │ ├── mask-border-repeat.css │ ├── mask-border-source.css │ ├── mask-border-width.css │ ├── mask-type.css │ ├── max-device-pixel-ratio.css │ ├── max-height.css │ ├── max-lines.css │ ├── max-width.css │ ├── max-zoom.css │ ├── min-device-pixel-ratio.css │ ├── min-height.css │ ├── min-width.css │ ├── min-zoom.css │ ├── mix-blend-mode.css │ ├── nav-down.css │ ├── nav-left.css │ ├── nav-right.css │ ├── nav-up.css │ ├── object-fit.css │ ├── offset-after.css │ ├── offset-before.css │ ├── offset-end.css │ ├── offset-start.css │ ├── opacity.css │ ├── order.css │ ├── orientation.css │ ├── orphans.css │ ├── outline-color.css │ ├── outline-offset.css │ ├── outline-style.css │ ├── outline-width.css │ ├── outline.css │ ├── overflow-style.css │ ├── overflow-wrap.css │ ├── overflow-x.css │ ├── overflow-y.css │ ├── overflow.css │ ├── padding-bottom.css │ ├── padding-left.css │ ├── padding-right.css │ ├── padding-top.css │ ├── padding.css │ ├── page-break-after.css │ ├── page-break-before.css │ ├── page-break-inside.css │ ├── pause-after.css │ ├── pause-before.css │ ├── pause.css │ ├── perspective.css │ ├── pointer-events.css │ ├── position.css │ ├── prefix.css │ ├── quotes.css │ ├── region-fragment.css │ ├── resize.css │ ├── rest-after.css │ ├── rest-before.css │ ├── rest.css │ ├── right.css │ ├── ruby-align.css │ ├── ruby-merge.css │ ├── ruby-position.css │ ├── scroll-behavior.css │ ├── scroll-chaining.css │ ├── scroll-limit-x-max.css │ ├── scroll-limit-x-min.css │ ├── scroll-limit-y-max.css │ ├── scroll-limit-y-min.css │ ├── scroll-rails.css │ ├── scroll-snap-points-x.css │ ├── scroll-snap-points-y.css │ ├── scroll-snap-type.css │ ├── scroll-translation.css │ ├── shape-image-threshold.css │ ├── shape-margin.css │ ├── shape-outside.css │ ├── shape-rendering.css │ ├── speak.css │ ├── stop-color.css │ ├── stop-opacity.css │ ├── stroke-dashoffset.css │ ├── stroke-linecap.css │ ├── stroke-linejoin.css │ ├── stroke-miterlimit.css │ ├── stroke-opacity.css │ ├── stroke-width.css │ ├── suffix.css │ ├── symbols.css │ ├── tab-size.css │ ├── table-layout.css │ ├── tansition-timing-function.css │ ├── text-align-all.css │ ├── text-align-last.css │ ├── text-align.css │ ├── text-anchor.css │ ├── text-combine-upright.css │ ├── text-decoration-color.css │ ├── text-decoration-line.css │ ├── text-decoration-skip.css │ ├── text-decoration-style.css │ ├── text-decoration.css │ ├── text-emphasis-color.css │ ├── text-emphasis-position.css │ ├── text-height.css │ ├── text-indent.css │ ├── text-justify.css │ ├── text-orientation.css │ ├── text-overflow.css │ ├── text-rendering.css │ ├── text-transform.css │ ├── text-underline-position.css │ ├── top.css │ ├── touch-action.css │ ├── transform-box.css │ ├── transform-style.css │ ├── transform.css │ ├── transition-delay.css │ ├── transition-duration.css │ ├── unicode-bidi.css │ ├── user-select.css │ ├── user-zoom.css │ ├── vertical-align.css │ ├── visibility.css │ ├── voice-duration.css │ ├── voice-stress.css │ ├── white-space.css │ ├── widows.css │ ├── width.css │ ├── word-break.css │ ├── word-spacing.css │ ├── wrap-margin.css │ ├── writing-mode.css │ ├── z-index.css │ └── zoom.css │ ├── propertyRegularExpression.css │ ├── regexlikeselectors.css │ ├── regexlikeselectorsStartingWithBOM.css │ ├── selectorNamingConvention.css │ ├── selectorNamingConventionCustomFormat.css │ ├── semicolonDeclaration.css │ ├── shorthand.css │ ├── starhack.css │ ├── tabcharacter.css │ ├── todoTagPresence.css │ ├── toomanywebfonts.css │ ├── trailingWhitespace.css │ ├── underscorehack.css │ ├── universalselector.css │ ├── unknownAtRules.css │ ├── unknownFunctions.css │ ├── unknownPseudos.css │ ├── utf16BE.css │ ├── utf16LE.css │ ├── utf8WithBom.css │ ├── utf8WithoutBom.css │ ├── vendorprefixes.css │ ├── vendorprefixwithstandard.css │ └── zerounits.css ├── css-frontend ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── sonar │ │ ├── css │ │ ├── FileUtils.java │ │ ├── model │ │ │ ├── Color.java │ │ │ ├── StandardCssObject.java │ │ │ ├── StandardCssObjectFactory.java │ │ │ ├── Unit.java │ │ │ ├── Vendor.java │ │ │ ├── atrule │ │ │ │ ├── StandardAtRule.java │ │ │ │ ├── StandardAtRuleFactory.java │ │ │ │ ├── UnknownAtRule.java │ │ │ │ ├── package-info.java │ │ │ │ └── standard │ │ │ │ │ ├── Annotation.java │ │ │ │ │ ├── BottomCenter.java │ │ │ │ │ ├── BottomLeft.java │ │ │ │ │ ├── BottomLeftCorner.java │ │ │ │ │ ├── BottomRight.java │ │ │ │ │ ├── BottomRightCorner.java │ │ │ │ │ ├── CharacterVariant.java │ │ │ │ │ ├── Charset.java │ │ │ │ │ ├── CounterStyle.java │ │ │ │ │ ├── CustomMedia.java │ │ │ │ │ ├── Document.java │ │ │ │ │ ├── FontFace.java │ │ │ │ │ ├── FontFeatureValues.java │ │ │ │ │ ├── Import.java │ │ │ │ │ ├── Keyframes.java │ │ │ │ │ ├── LeftBottom.java │ │ │ │ │ ├── LeftMiddle.java │ │ │ │ │ ├── LeftTop.java │ │ │ │ │ ├── Media.java │ │ │ │ │ ├── Namespace.java │ │ │ │ │ ├── Ornaments.java │ │ │ │ │ ├── Page.java │ │ │ │ │ ├── RightBottom.java │ │ │ │ │ ├── RightMiddle.java │ │ │ │ │ ├── RightTop.java │ │ │ │ │ ├── Styleset.java │ │ │ │ │ ├── Stylistic.java │ │ │ │ │ ├── Supports.java │ │ │ │ │ ├── Swash.java │ │ │ │ │ ├── TopCenter.java │ │ │ │ │ ├── TopLeft.java │ │ │ │ │ ├── TopLeftCorner.java │ │ │ │ │ ├── TopRight.java │ │ │ │ │ ├── TopRightCorner.java │ │ │ │ │ ├── Viewport.java │ │ │ │ │ └── package-info.java │ │ │ ├── function │ │ │ │ ├── StandardFunction.java │ │ │ │ ├── StandardFunctionFactory.java │ │ │ │ ├── UnknownFunction.java │ │ │ │ ├── package-info.java │ │ │ │ └── standard │ │ │ │ │ ├── Alpha.java │ │ │ │ │ ├── Annotation.java │ │ │ │ │ ├── Attr.java │ │ │ │ │ ├── Basicimage.java │ │ │ │ │ ├── Blendtrans.java │ │ │ │ │ ├── Blur.java │ │ │ │ │ ├── Brightness.java │ │ │ │ │ ├── Calc.java │ │ │ │ │ ├── CharacterVariant.java │ │ │ │ │ ├── Chroma.java │ │ │ │ │ ├── Circle.java │ │ │ │ │ ├── ColorStop.java │ │ │ │ │ ├── Compositor.java │ │ │ │ │ ├── ConicGradient.java │ │ │ │ │ ├── Contrast.java │ │ │ │ │ ├── Counter.java │ │ │ │ │ ├── Counters.java │ │ │ │ │ ├── CrossFade.java │ │ │ │ │ ├── CubicBezier.java │ │ │ │ │ ├── Domain.java │ │ │ │ │ ├── DropShadow.java │ │ │ │ │ ├── Ease.java │ │ │ │ │ ├── EaseIn.java │ │ │ │ │ ├── EaseInOut.java │ │ │ │ │ ├── EaseOut.java │ │ │ │ │ ├── Element.java │ │ │ │ │ ├── Ellipse.java │ │ │ │ │ ├── Emboss.java │ │ │ │ │ ├── Engrave.java │ │ │ │ │ ├── Expression.java │ │ │ │ │ ├── FitContent.java │ │ │ │ │ ├── Fliph.java │ │ │ │ │ ├── Flipv.java │ │ │ │ │ ├── Format.java │ │ │ │ │ ├── From.java │ │ │ │ │ ├── Glow.java │ │ │ │ │ ├── Gray.java │ │ │ │ │ ├── Grayscale.java │ │ │ │ │ ├── Hsl.java │ │ │ │ │ ├── Hsla.java │ │ │ │ │ ├── HueRotate.java │ │ │ │ │ ├── Icmfilter.java │ │ │ │ │ ├── Image.java │ │ │ │ │ ├── ImageSet.java │ │ │ │ │ ├── Inset.java │ │ │ │ │ ├── Invert.java │ │ │ │ │ ├── Light.java │ │ │ │ │ ├── Linear.java │ │ │ │ │ ├── LinearGradient.java │ │ │ │ │ ├── Local.java │ │ │ │ │ ├── MaskFilter.java │ │ │ │ │ ├── Matrix.java │ │ │ │ │ ├── Matrix3d.java │ │ │ │ │ ├── Max.java │ │ │ │ │ ├── Min.java │ │ │ │ │ ├── Minmax.java │ │ │ │ │ ├── Motionblur.java │ │ │ │ │ ├── Opacity.java │ │ │ │ │ ├── Ornaments.java │ │ │ │ │ ├── Perspective.java │ │ │ │ │ ├── Polygon.java │ │ │ │ │ ├── RadialGradient.java │ │ │ │ │ ├── Rect.java │ │ │ │ │ ├── Redirect.java │ │ │ │ │ ├── Regexp.java │ │ │ │ │ ├── RepeatingConicGradient.java │ │ │ │ │ ├── RepeatingLinearGradient.java │ │ │ │ │ ├── RepeatingRadialGradient.java │ │ │ │ │ ├── Revealtrans.java │ │ │ │ │ ├── Rgb.java │ │ │ │ │ ├── Rgba.java │ │ │ │ │ ├── Rotate.java │ │ │ │ │ ├── Rotate3d.java │ │ │ │ │ ├── Rotatex.java │ │ │ │ │ ├── Rotatey.java │ │ │ │ │ ├── Rotatez.java │ │ │ │ │ ├── Running.java │ │ │ │ │ ├── Saturate.java │ │ │ │ │ ├── Scale.java │ │ │ │ │ ├── Scale3d.java │ │ │ │ │ ├── Scalex.java │ │ │ │ │ ├── Scaley.java │ │ │ │ │ ├── Scalez.java │ │ │ │ │ ├── Sepia.java │ │ │ │ │ ├── Shadow.java │ │ │ │ │ ├── Skew.java │ │ │ │ │ ├── Skewx.java │ │ │ │ │ ├── Skewy.java │ │ │ │ │ ├── Snapinterval.java │ │ │ │ │ ├── Snaplist.java │ │ │ │ │ ├── StepEnd.java │ │ │ │ │ ├── StepStart.java │ │ │ │ │ ├── Steps.java │ │ │ │ │ ├── Styleset.java │ │ │ │ │ ├── Stylistic.java │ │ │ │ │ ├── Supports.java │ │ │ │ │ ├── Swash.java │ │ │ │ │ ├── Symbols.java │ │ │ │ │ ├── To.java │ │ │ │ │ ├── Toggle.java │ │ │ │ │ ├── Translate.java │ │ │ │ │ ├── Translate3d.java │ │ │ │ │ ├── Translatex.java │ │ │ │ │ ├── Translatey.java │ │ │ │ │ ├── Translatez.java │ │ │ │ │ ├── Url.java │ │ │ │ │ ├── UrlPrefix.java │ │ │ │ │ ├── Var.java │ │ │ │ │ ├── Wave.java │ │ │ │ │ ├── Xray.java │ │ │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── property │ │ │ │ ├── StandardProperty.java │ │ │ │ ├── StandardPropertyFactory.java │ │ │ │ ├── UnknownProperty.java │ │ │ │ ├── package-info.java │ │ │ │ ├── standard │ │ │ │ │ ├── Accelerator.java │ │ │ │ │ ├── AdditiveSymbols.java │ │ │ │ │ ├── AlignContent.java │ │ │ │ │ ├── AlignItems.java │ │ │ │ │ ├── AlignSelf.java │ │ │ │ │ ├── AlignmentAdjust.java │ │ │ │ │ ├── AlignmentBaseline.java │ │ │ │ │ ├── All.java │ │ │ │ │ ├── Animation.java │ │ │ │ │ ├── AnimationDelay.java │ │ │ │ │ ├── AnimationDirection.java │ │ │ │ │ ├── AnimationDuration.java │ │ │ │ │ ├── AnimationFillMode.java │ │ │ │ │ ├── AnimationIterationCount.java │ │ │ │ │ ├── AnimationName.java │ │ │ │ │ ├── AnimationPlayState.java │ │ │ │ │ ├── AnimationTimingFunction.java │ │ │ │ │ ├── AnyHover.java │ │ │ │ │ ├── AnyPointer.java │ │ │ │ │ ├── Appearance.java │ │ │ │ │ ├── AspectRatio.java │ │ │ │ │ ├── Azimuth.java │ │ │ │ │ ├── BackfaceVisibility.java │ │ │ │ │ ├── Background.java │ │ │ │ │ ├── BackgroundAttachment.java │ │ │ │ │ ├── BackgroundBlendMode.java │ │ │ │ │ ├── BackgroundClip.java │ │ │ │ │ ├── BackgroundColor.java │ │ │ │ │ ├── BackgroundImage.java │ │ │ │ │ ├── BackgroundImageTransform.java │ │ │ │ │ ├── BackgroundOrigin.java │ │ │ │ │ ├── BackgroundPosition.java │ │ │ │ │ ├── BackgroundPositionX.java │ │ │ │ │ ├── BackgroundPositionY.java │ │ │ │ │ ├── BackgroundRepeat.java │ │ │ │ │ ├── BackgroundSize.java │ │ │ │ │ ├── BaselineShift.java │ │ │ │ │ ├── Behavior.java │ │ │ │ │ ├── Binding.java │ │ │ │ │ ├── Bleed.java │ │ │ │ │ ├── BlockProgression.java │ │ │ │ │ ├── BlockSize.java │ │ │ │ │ ├── BookmarkLabel.java │ │ │ │ │ ├── BookmarkLevel.java │ │ │ │ │ ├── BookmarkState.java │ │ │ │ │ ├── Border.java │ │ │ │ │ ├── BorderBlockEnd.java │ │ │ │ │ ├── BorderBlockEndColor.java │ │ │ │ │ ├── BorderBlockEndStyle.java │ │ │ │ │ ├── BorderBlockEndWidth.java │ │ │ │ │ ├── BorderBlockStart.java │ │ │ │ │ ├── BorderBlockStartColor.java │ │ │ │ │ ├── BorderBlockStartStyle.java │ │ │ │ │ ├── BorderBlockStartWidth.java │ │ │ │ │ ├── BorderBottom.java │ │ │ │ │ ├── BorderBottomColor.java │ │ │ │ │ ├── BorderBottomLeftRadius.java │ │ │ │ │ ├── BorderBottomRightRadius.java │ │ │ │ │ ├── BorderBottomStyle.java │ │ │ │ │ ├── BorderBottomWidth.java │ │ │ │ │ ├── BorderBoundary.java │ │ │ │ │ ├── BorderCollapse.java │ │ │ │ │ ├── BorderColor.java │ │ │ │ │ ├── BorderEnd.java │ │ │ │ │ ├── BorderEndColor.java │ │ │ │ │ ├── BorderEndStyle.java │ │ │ │ │ ├── BorderEndWidth.java │ │ │ │ │ ├── BorderImage.java │ │ │ │ │ ├── BorderImageOutset.java │ │ │ │ │ ├── BorderImageRepeat.java │ │ │ │ │ ├── BorderImageSlice.java │ │ │ │ │ ├── BorderImageSource.java │ │ │ │ │ ├── BorderImageWidth.java │ │ │ │ │ ├── BorderInlineEnd.java │ │ │ │ │ ├── BorderInlineEndColor.java │ │ │ │ │ ├── BorderInlineEndStyle.java │ │ │ │ │ ├── BorderInlineEndWidth.java │ │ │ │ │ ├── BorderInlineStart.java │ │ │ │ │ ├── BorderInlineStartColor.java │ │ │ │ │ ├── BorderInlineStartStyle.java │ │ │ │ │ ├── BorderInlineStartWidth.java │ │ │ │ │ ├── BorderLeft.java │ │ │ │ │ ├── BorderLeftColor.java │ │ │ │ │ ├── BorderLeftStyle.java │ │ │ │ │ ├── BorderLeftWidth.java │ │ │ │ │ ├── BorderRadius.java │ │ │ │ │ ├── BorderRight.java │ │ │ │ │ ├── BorderRightColor.java │ │ │ │ │ ├── BorderRightStyle.java │ │ │ │ │ ├── BorderRightWidth.java │ │ │ │ │ ├── BorderSpacing.java │ │ │ │ │ ├── BorderStart.java │ │ │ │ │ ├── BorderStartColor.java │ │ │ │ │ ├── BorderStartStyle.java │ │ │ │ │ ├── BorderStartWidth.java │ │ │ │ │ ├── BorderStyle.java │ │ │ │ │ ├── BorderTop.java │ │ │ │ │ ├── BorderTopColor.java │ │ │ │ │ ├── BorderTopLeftRadius.java │ │ │ │ │ ├── BorderTopRightRadius.java │ │ │ │ │ ├── BorderTopStyle.java │ │ │ │ │ ├── BorderTopWidth.java │ │ │ │ │ ├── BorderWidth.java │ │ │ │ │ ├── Bottom.java │ │ │ │ │ ├── BoxAlign.java │ │ │ │ │ ├── BoxDecorationBreak.java │ │ │ │ │ ├── BoxDirection.java │ │ │ │ │ ├── BoxFlex.java │ │ │ │ │ ├── BoxFlexGroup.java │ │ │ │ │ ├── BoxLines.java │ │ │ │ │ ├── BoxOrdinalGroup.java │ │ │ │ │ ├── BoxOrient.java │ │ │ │ │ ├── BoxPack.java │ │ │ │ │ ├── BoxShadow.java │ │ │ │ │ ├── BoxSizing.java │ │ │ │ │ ├── BoxSnap.java │ │ │ │ │ ├── BoxSuppress.java │ │ │ │ │ ├── BreakAfter.java │ │ │ │ │ ├── BreakBefore.java │ │ │ │ │ ├── BreakInside.java │ │ │ │ │ ├── CaptionSide.java │ │ │ │ │ ├── Caret.java │ │ │ │ │ ├── CaretColor.java │ │ │ │ │ ├── CaretShape.java │ │ │ │ │ ├── Clear.java │ │ │ │ │ ├── Clip.java │ │ │ │ │ ├── ClipPath.java │ │ │ │ │ ├── ClipRule.java │ │ │ │ │ ├── Color.java │ │ │ │ │ ├── ColorGamut.java │ │ │ │ │ ├── ColorIndex.java │ │ │ │ │ ├── ColorInterpolation.java │ │ │ │ │ ├── ColorInterpolationFilters.java │ │ │ │ │ ├── ColorRendering.java │ │ │ │ │ ├── ColumnCount.java │ │ │ │ │ ├── ColumnFill.java │ │ │ │ │ ├── ColumnGap.java │ │ │ │ │ ├── ColumnRule.java │ │ │ │ │ ├── ColumnRuleColor.java │ │ │ │ │ ├── ColumnRuleStyle.java │ │ │ │ │ ├── ColumnRuleWidth.java │ │ │ │ │ ├── ColumnSpan.java │ │ │ │ │ ├── ColumnWidth.java │ │ │ │ │ ├── Columns.java │ │ │ │ │ ├── Content.java │ │ │ │ │ ├── ContentZoomChaining.java │ │ │ │ │ ├── ContentZoomLimit.java │ │ │ │ │ ├── ContentZoomLimitMax.java │ │ │ │ │ ├── ContentZoomLimitMin.java │ │ │ │ │ ├── ContentZoomSnap.java │ │ │ │ │ ├── ContentZoomSnapPoints.java │ │ │ │ │ ├── ContentZoomSnapType.java │ │ │ │ │ ├── ContentZooming.java │ │ │ │ │ ├── CounterIncrement.java │ │ │ │ │ ├── CounterReset.java │ │ │ │ │ ├── CounterSet.java │ │ │ │ │ ├── Cue.java │ │ │ │ │ ├── CueAfter.java │ │ │ │ │ ├── CueBefore.java │ │ │ │ │ ├── Cursor.java │ │ │ │ │ ├── DeviceAspectRatio.java │ │ │ │ │ ├── DeviceHeight.java │ │ │ │ │ ├── DevicePixelRatio.java │ │ │ │ │ ├── DeviceWidth.java │ │ │ │ │ ├── Direction.java │ │ │ │ │ ├── Display.java │ │ │ │ │ ├── DominantBaseline.java │ │ │ │ │ ├── DropInitialAfterAdjust.java │ │ │ │ │ ├── DropInitialAfterAlign.java │ │ │ │ │ ├── DropInitialBeforeAdjust.java │ │ │ │ │ ├── DropInitialBeforeAlign.java │ │ │ │ │ ├── DropInitialSize.java │ │ │ │ │ ├── DropInitialValue.java │ │ │ │ │ ├── Elevation.java │ │ │ │ │ ├── EmptyCells.java │ │ │ │ │ ├── EnableBackground.java │ │ │ │ │ ├── Fallback.java │ │ │ │ │ ├── Fill.java │ │ │ │ │ ├── FillOpacity.java │ │ │ │ │ ├── FillRule.java │ │ │ │ │ ├── Filter.java │ │ │ │ │ ├── Fit.java │ │ │ │ │ ├── FitPosition.java │ │ │ │ │ ├── Flex.java │ │ │ │ │ ├── FlexBasis.java │ │ │ │ │ ├── FlexDirection.java │ │ │ │ │ ├── FlexFlow.java │ │ │ │ │ ├── FlexGrow.java │ │ │ │ │ ├── FlexShrink.java │ │ │ │ │ ├── FlexWrap.java │ │ │ │ │ ├── Float.java │ │ │ │ │ ├── FloatDefer.java │ │ │ │ │ ├── FloatOffset.java │ │ │ │ │ ├── FloatReference.java │ │ │ │ │ ├── FloodColor.java │ │ │ │ │ ├── FloodOpacity.java │ │ │ │ │ ├── FlowFrom.java │ │ │ │ │ ├── FlowInto.java │ │ │ │ │ ├── Font.java │ │ │ │ │ ├── FontFamily.java │ │ │ │ │ ├── FontFeatureSettings.java │ │ │ │ │ ├── FontKerning.java │ │ │ │ │ ├── FontLanguageOverride.java │ │ │ │ │ ├── FontSize.java │ │ │ │ │ ├── FontSizeAdjust.java │ │ │ │ │ ├── FontStretch.java │ │ │ │ │ ├── FontStyle.java │ │ │ │ │ ├── FontSynthesis.java │ │ │ │ │ ├── FontVariant.java │ │ │ │ │ ├── FontVariantAlternates.java │ │ │ │ │ ├── FontVariantCaps.java │ │ │ │ │ ├── FontVariantEastAsian.java │ │ │ │ │ ├── FontVariantLigatures.java │ │ │ │ │ ├── FontVariantNumeric.java │ │ │ │ │ ├── FontVariantPosition.java │ │ │ │ │ ├── FontWeight.java │ │ │ │ │ ├── FootnoteDisplay.java │ │ │ │ │ ├── FootnotePolicy.java │ │ │ │ │ ├── GlyphOrientationHorizontal.java │ │ │ │ │ ├── GlyphOrientationVertical.java │ │ │ │ │ ├── Grid.java │ │ │ │ │ ├── GridArea.java │ │ │ │ │ ├── GridAutoColumns.java │ │ │ │ │ ├── GridAutoFlow.java │ │ │ │ │ ├── GridAutoRows.java │ │ │ │ │ ├── GridCellStacking.java │ │ │ │ │ ├── GridColumn.java │ │ │ │ │ ├── GridColumnAlign.java │ │ │ │ │ ├── GridColumnEnd.java │ │ │ │ │ ├── GridColumnGap.java │ │ │ │ │ ├── GridColumnSizing.java │ │ │ │ │ ├── GridColumnSpan.java │ │ │ │ │ ├── GridColumnStart.java │ │ │ │ │ ├── GridColumns.java │ │ │ │ │ ├── GridFlow.java │ │ │ │ │ ├── GridGap.java │ │ │ │ │ ├── GridLayer.java │ │ │ │ │ ├── GridRow.java │ │ │ │ │ ├── GridRowAlign.java │ │ │ │ │ ├── GridRowEnd.java │ │ │ │ │ ├── GridRowGap.java │ │ │ │ │ ├── GridRowSizing.java │ │ │ │ │ ├── GridRowSpan.java │ │ │ │ │ ├── GridRowStart.java │ │ │ │ │ ├── GridRows.java │ │ │ │ │ ├── GridTemplate.java │ │ │ │ │ ├── GridTemplateAreas.java │ │ │ │ │ ├── GridTemplateColumns.java │ │ │ │ │ ├── GridTemplateRows.java │ │ │ │ │ ├── HangingPunctuation.java │ │ │ │ │ ├── Height.java │ │ │ │ │ ├── HighContrast.java │ │ │ │ │ ├── HighContrastAdjust.java │ │ │ │ │ ├── Hover.java │ │ │ │ │ ├── HyphenateAfter.java │ │ │ │ │ ├── HyphenateBefore.java │ │ │ │ │ ├── HyphenateCharacter.java │ │ │ │ │ ├── HyphenateLimitChars.java │ │ │ │ │ ├── HyphenateLimitLast.java │ │ │ │ │ ├── HyphenateLimitLines.java │ │ │ │ │ ├── HyphenateLimitZone.java │ │ │ │ │ ├── HyphenateLines.java │ │ │ │ │ ├── HyphenateResource.java │ │ │ │ │ ├── Hyphens.java │ │ │ │ │ ├── ImageOrientation.java │ │ │ │ │ ├── ImageRendering.java │ │ │ │ │ ├── ImageResolution.java │ │ │ │ │ ├── ImeMode.java │ │ │ │ │ ├── InitialLetter.java │ │ │ │ │ ├── InitialLetterAlign.java │ │ │ │ │ ├── InitialLetterWrap.java │ │ │ │ │ ├── InlineBoxAlign.java │ │ │ │ │ ├── InlineSize.java │ │ │ │ │ ├── Isolation.java │ │ │ │ │ ├── JustifyContent.java │ │ │ │ │ ├── JustifyItems.java │ │ │ │ │ ├── JustifySelf.java │ │ │ │ │ ├── Kerning.java │ │ │ │ │ ├── LayoutFlow.java │ │ │ │ │ ├── LayoutGrid.java │ │ │ │ │ ├── LayoutGridChar.java │ │ │ │ │ ├── LayoutGridLine.java │ │ │ │ │ ├── LayoutGridMode.java │ │ │ │ │ ├── LayoutGridType.java │ │ │ │ │ ├── Left.java │ │ │ │ │ ├── LetterSpacing.java │ │ │ │ │ ├── LightingColor.java │ │ │ │ │ ├── LineBreak.java │ │ │ │ │ ├── LineGrid.java │ │ │ │ │ ├── LineHeight.java │ │ │ │ │ ├── LineSnap.java │ │ │ │ │ ├── LineStacking.java │ │ │ │ │ ├── LineStackingRuby.java │ │ │ │ │ ├── LineStackingShift.java │ │ │ │ │ ├── LineStackingStrategy.java │ │ │ │ │ ├── ListStyle.java │ │ │ │ │ ├── ListStyleImage.java │ │ │ │ │ ├── ListStylePosition.java │ │ │ │ │ ├── ListStyleType.java │ │ │ │ │ ├── Margin.java │ │ │ │ │ ├── MarginBlockEnd.java │ │ │ │ │ ├── MarginBlockStart.java │ │ │ │ │ ├── MarginBottom.java │ │ │ │ │ ├── MarginEnd.java │ │ │ │ │ ├── MarginInlineEnd.java │ │ │ │ │ ├── MarginInlineStart.java │ │ │ │ │ ├── MarginLeft.java │ │ │ │ │ ├── MarginRight.java │ │ │ │ │ ├── MarginStart.java │ │ │ │ │ ├── MarginTop.java │ │ │ │ │ ├── Marker.java │ │ │ │ │ ├── MarkerEnd.java │ │ │ │ │ ├── MarkerMid.java │ │ │ │ │ ├── MarkerSide.java │ │ │ │ │ ├── MarkerStart.java │ │ │ │ │ ├── Marks.java │ │ │ │ │ ├── Marquee.java │ │ │ │ │ ├── MarqueeDir.java │ │ │ │ │ ├── MarqueeDirection.java │ │ │ │ │ ├── MarqueeIncrement.java │ │ │ │ │ ├── MarqueeLoop.java │ │ │ │ │ ├── MarqueePlayCount.java │ │ │ │ │ ├── MarqueeRepetition.java │ │ │ │ │ ├── MarqueeSpeed.java │ │ │ │ │ ├── MarqueeStyle.java │ │ │ │ │ ├── Mask.java │ │ │ │ │ ├── MaskBorder.java │ │ │ │ │ ├── MaskBorderMode.java │ │ │ │ │ ├── MaskBorderOutset.java │ │ │ │ │ ├── MaskBorderRepeat.java │ │ │ │ │ ├── MaskBorderSlice.java │ │ │ │ │ ├── MaskBorderSource.java │ │ │ │ │ ├── MaskBorderWidth.java │ │ │ │ │ ├── MaskClip.java │ │ │ │ │ ├── MaskComposite.java │ │ │ │ │ ├── MaskImage.java │ │ │ │ │ ├── MaskMode.java │ │ │ │ │ ├── MaskOrigin.java │ │ │ │ │ ├── MaskPosition.java │ │ │ │ │ ├── MaskRepeat.java │ │ │ │ │ ├── MaskSize.java │ │ │ │ │ ├── MaskType.java │ │ │ │ │ ├── MaxBlockSize.java │ │ │ │ │ ├── MaxDevicePixelRatio.java │ │ │ │ │ ├── MaxHeight.java │ │ │ │ │ ├── MaxInlineSize.java │ │ │ │ │ ├── MaxLines.java │ │ │ │ │ ├── MaxWidth.java │ │ │ │ │ ├── MaxZoom.java │ │ │ │ │ ├── MinBlockSize.java │ │ │ │ │ ├── MinDevicePixelRatio.java │ │ │ │ │ ├── MinHeight.java │ │ │ │ │ ├── MinInlineSize.java │ │ │ │ │ ├── MinWidth.java │ │ │ │ │ ├── MinZoom.java │ │ │ │ │ ├── MixBlendMode.java │ │ │ │ │ ├── Monochrome.java │ │ │ │ │ ├── Motion.java │ │ │ │ │ ├── MotionOffset.java │ │ │ │ │ ├── MotionPath.java │ │ │ │ │ ├── MotionRotation.java │ │ │ │ │ ├── MoveTo.java │ │ │ │ │ ├── NavDown.java │ │ │ │ │ ├── NavIndex.java │ │ │ │ │ ├── NavLeft.java │ │ │ │ │ ├── NavRight.java │ │ │ │ │ ├── NavUp.java │ │ │ │ │ ├── Negative.java │ │ │ │ │ ├── ObjectFit.java │ │ │ │ │ ├── ObjectPosition.java │ │ │ │ │ ├── OffsetAfter.java │ │ │ │ │ ├── OffsetAnchor.java │ │ │ │ │ ├── OffsetBefore.java │ │ │ │ │ ├── OffsetBlockEnd.java │ │ │ │ │ ├── OffsetBlockStart.java │ │ │ │ │ ├── OffsetDistance.java │ │ │ │ │ ├── OffsetEnd.java │ │ │ │ │ ├── OffsetInlineEnd.java │ │ │ │ │ ├── OffsetInlineStart.java │ │ │ │ │ ├── OffsetOrigin.java │ │ │ │ │ ├── OffsetPath.java │ │ │ │ │ ├── OffsetRotation.java │ │ │ │ │ ├── OffsetStart.java │ │ │ │ │ ├── Opacity.java │ │ │ │ │ ├── Order.java │ │ │ │ │ ├── Orientation.java │ │ │ │ │ ├── Orphans.java │ │ │ │ │ ├── Outline.java │ │ │ │ │ ├── OutlineColor.java │ │ │ │ │ ├── OutlineOffset.java │ │ │ │ │ ├── OutlineStyle.java │ │ │ │ │ ├── OutlineWidth.java │ │ │ │ │ ├── Overflow.java │ │ │ │ │ ├── OverflowBlock.java │ │ │ │ │ ├── OverflowInline.java │ │ │ │ │ ├── OverflowStyle.java │ │ │ │ │ ├── OverflowWrap.java │ │ │ │ │ ├── OverflowX.java │ │ │ │ │ ├── OverflowY.java │ │ │ │ │ ├── Pad.java │ │ │ │ │ ├── Padding.java │ │ │ │ │ ├── PaddingBlockEnd.java │ │ │ │ │ ├── PaddingBlockStart.java │ │ │ │ │ ├── PaddingBottom.java │ │ │ │ │ ├── PaddingEnd.java │ │ │ │ │ ├── PaddingInlineEnd.java │ │ │ │ │ ├── PaddingInlineStart.java │ │ │ │ │ ├── PaddingLeft.java │ │ │ │ │ ├── PaddingRight.java │ │ │ │ │ ├── PaddingStart.java │ │ │ │ │ ├── PaddingTop.java │ │ │ │ │ ├── Page.java │ │ │ │ │ ├── PageBreakAfter.java │ │ │ │ │ ├── PageBreakBefore.java │ │ │ │ │ ├── PageBreakInside.java │ │ │ │ │ ├── PagePolicy.java │ │ │ │ │ ├── Pause.java │ │ │ │ │ ├── PauseAfter.java │ │ │ │ │ ├── PauseBefore.java │ │ │ │ │ ├── Perspective.java │ │ │ │ │ ├── PerspectiveOrigin.java │ │ │ │ │ ├── Phonemes.java │ │ │ │ │ ├── Pitch.java │ │ │ │ │ ├── PitchRange.java │ │ │ │ │ ├── PlayDuring.java │ │ │ │ │ ├── Pointer.java │ │ │ │ │ ├── PointerEvents.java │ │ │ │ │ ├── Position.java │ │ │ │ │ ├── Prefix.java │ │ │ │ │ ├── PresentationLevel.java │ │ │ │ │ ├── ProgressAppearance.java │ │ │ │ │ ├── PunctuationTrim.java │ │ │ │ │ ├── Quotes.java │ │ │ │ │ ├── Range.java │ │ │ │ │ ├── RegionFragment.java │ │ │ │ │ ├── Resize.java │ │ │ │ │ ├── Resolution.java │ │ │ │ │ ├── Rest.java │ │ │ │ │ ├── RestAfter.java │ │ │ │ │ ├── RestBefore.java │ │ │ │ │ ├── Richness.java │ │ │ │ │ ├── Right.java │ │ │ │ │ ├── Rotation.java │ │ │ │ │ ├── RotationPoint.java │ │ │ │ │ ├── RubyAlign.java │ │ │ │ │ ├── RubyMerge.java │ │ │ │ │ ├── RubyOverhang.java │ │ │ │ │ ├── RubyPosition.java │ │ │ │ │ ├── RubySpan.java │ │ │ │ │ ├── Scan.java │ │ │ │ │ ├── Scollbar3dlightColor.java │ │ │ │ │ ├── ScollbarArrowColor.java │ │ │ │ │ ├── ScollbarBaseColor.java │ │ │ │ │ ├── ScollbarDarkShadowColor.java │ │ │ │ │ ├── Scripting.java │ │ │ │ │ ├── ScrollBehavior.java │ │ │ │ │ ├── ScrollChaining.java │ │ │ │ │ ├── ScrollLimit.java │ │ │ │ │ ├── ScrollLimitXMax.java │ │ │ │ │ ├── ScrollLimitXMin.java │ │ │ │ │ ├── ScrollLimitYMax.java │ │ │ │ │ ├── ScrollLimitYMin.java │ │ │ │ │ ├── ScrollRails.java │ │ │ │ │ ├── ScrollSnapAlign.java │ │ │ │ │ ├── ScrollSnapMargin.java │ │ │ │ │ ├── ScrollSnapMarginBlock.java │ │ │ │ │ ├── ScrollSnapMarginBlockEnd.java │ │ │ │ │ ├── ScrollSnapMarginBlockStart.java │ │ │ │ │ ├── ScrollSnapMarginBottom.java │ │ │ │ │ ├── ScrollSnapMarginInline.java │ │ │ │ │ ├── ScrollSnapMarginInlineEnd.java │ │ │ │ │ ├── ScrollSnapMarginInlineStart.java │ │ │ │ │ ├── ScrollSnapMarginLeft.java │ │ │ │ │ ├── ScrollSnapMarginRight.java │ │ │ │ │ ├── ScrollSnapMarginTop.java │ │ │ │ │ ├── ScrollSnapPadding.java │ │ │ │ │ ├── ScrollSnapPaddingBlock.java │ │ │ │ │ ├── ScrollSnapPaddingBlockEnd.java │ │ │ │ │ ├── ScrollSnapPaddingBlockStart.java │ │ │ │ │ ├── ScrollSnapPaddingBottom.java │ │ │ │ │ ├── ScrollSnapPaddingInline.java │ │ │ │ │ ├── ScrollSnapPaddingInlineEnd.java │ │ │ │ │ ├── ScrollSnapPaddingInlineStart.java │ │ │ │ │ ├── ScrollSnapPaddingLeft.java │ │ │ │ │ ├── ScrollSnapPaddingRight.java │ │ │ │ │ ├── ScrollSnapPaddingTop.java │ │ │ │ │ ├── ScrollSnapPointsX.java │ │ │ │ │ ├── ScrollSnapPointsY.java │ │ │ │ │ ├── ScrollSnapStop.java │ │ │ │ │ ├── ScrollSnapType.java │ │ │ │ │ ├── ScrollSnapX.java │ │ │ │ │ ├── ScrollSnapY.java │ │ │ │ │ ├── ScrollTranslation.java │ │ │ │ │ ├── Scrollbar3dlightColor.java │ │ │ │ │ ├── ScrollbarDarkshadowColor.java │ │ │ │ │ ├── ScrollbarFaceColor.java │ │ │ │ │ ├── ScrollbarHighlightColor.java │ │ │ │ │ ├── ScrollbarShadowColor.java │ │ │ │ │ ├── ScrollbarTrackColor.java │ │ │ │ │ ├── Shape.java │ │ │ │ │ ├── ShapeImageThreshold.java │ │ │ │ │ ├── ShapeInside.java │ │ │ │ │ ├── ShapeMargin.java │ │ │ │ │ ├── ShapeOutside.java │ │ │ │ │ ├── ShapeRendering.java │ │ │ │ │ ├── Size.java │ │ │ │ │ ├── Speak.java │ │ │ │ │ ├── SpeakAs.java │ │ │ │ │ ├── SpeakHeader.java │ │ │ │ │ ├── SpeakNumeral.java │ │ │ │ │ ├── SpeakPunctuation.java │ │ │ │ │ ├── SpeechRate.java │ │ │ │ │ ├── Src.java │ │ │ │ │ ├── StopColor.java │ │ │ │ │ ├── StopOpacity.java │ │ │ │ │ ├── Stress.java │ │ │ │ │ ├── StringSet.java │ │ │ │ │ ├── Stroke.java │ │ │ │ │ ├── StrokeDasharray.java │ │ │ │ │ ├── StrokeDashoffset.java │ │ │ │ │ ├── StrokeLinecap.java │ │ │ │ │ ├── StrokeLinejoin.java │ │ │ │ │ ├── StrokeMiterlimit.java │ │ │ │ │ ├── StrokeOpacity.java │ │ │ │ │ ├── StrokeWidth.java │ │ │ │ │ ├── Suffix.java │ │ │ │ │ ├── Symbols.java │ │ │ │ │ ├── System.java │ │ │ │ │ ├── TabSize.java │ │ │ │ │ ├── TableLayout.java │ │ │ │ │ ├── Target.java │ │ │ │ │ ├── TargetName.java │ │ │ │ │ ├── TargetNew.java │ │ │ │ │ ├── TargetPosition.java │ │ │ │ │ ├── TextAlign.java │ │ │ │ │ ├── TextAlignAll.java │ │ │ │ │ ├── TextAlignLast.java │ │ │ │ │ ├── TextAnchor.java │ │ │ │ │ ├── TextAutoSpace.java │ │ │ │ │ ├── TextCombineHorizontal.java │ │ │ │ │ ├── TextCombineUpright.java │ │ │ │ │ ├── TextDecoration.java │ │ │ │ │ ├── TextDecorationColor.java │ │ │ │ │ ├── TextDecorationLine.java │ │ │ │ │ ├── TextDecorationSkip.java │ │ │ │ │ ├── TextDecorationStyle.java │ │ │ │ │ ├── TextEmphasis.java │ │ │ │ │ ├── TextEmphasisColor.java │ │ │ │ │ ├── TextEmphasisPosition.java │ │ │ │ │ ├── TextEmphasisStyle.java │ │ │ │ │ ├── TextHeight.java │ │ │ │ │ ├── TextIndent.java │ │ │ │ │ ├── TextJustify.java │ │ │ │ │ ├── TextKashidaSpace.java │ │ │ │ │ ├── TextOrientation.java │ │ │ │ │ ├── TextOutline.java │ │ │ │ │ ├── TextOverflow.java │ │ │ │ │ ├── TextRendering.java │ │ │ │ │ ├── TextShadow.java │ │ │ │ │ ├── TextSizeAdjust.java │ │ │ │ │ ├── TextSpaceCollapse.java │ │ │ │ │ ├── TextSpaceTrim.java │ │ │ │ │ ├── TextSpacing.java │ │ │ │ │ ├── TextStroke.java │ │ │ │ │ ├── TextTransform.java │ │ │ │ │ ├── TextUnderlinePosition.java │ │ │ │ │ ├── TextWrap.java │ │ │ │ │ ├── Top.java │ │ │ │ │ ├── TouchAction.java │ │ │ │ │ ├── Transform.java │ │ │ │ │ ├── TransformBox.java │ │ │ │ │ ├── TransformOrigin.java │ │ │ │ │ ├── TransformStyle.java │ │ │ │ │ ├── Transition.java │ │ │ │ │ ├── TransitionDelay.java │ │ │ │ │ ├── TransitionDuration.java │ │ │ │ │ ├── TransitionProperty.java │ │ │ │ │ ├── TransitionTimingFunction.java │ │ │ │ │ ├── UnicodeBidi.java │ │ │ │ │ ├── UnicodeRange.java │ │ │ │ │ ├── Update.java │ │ │ │ │ ├── UserModify.java │ │ │ │ │ ├── UserSelect.java │ │ │ │ │ ├── UserZoom.java │ │ │ │ │ ├── VerticalAlign.java │ │ │ │ │ ├── ViewState.java │ │ │ │ │ ├── ViewportFit.java │ │ │ │ │ ├── Visibility.java │ │ │ │ │ ├── VoiceBalance.java │ │ │ │ │ ├── VoiceDuration.java │ │ │ │ │ ├── VoiceFamily.java │ │ │ │ │ ├── VoicePitch.java │ │ │ │ │ ├── VoiceRange.java │ │ │ │ │ ├── VoiceRate.java │ │ │ │ │ ├── VoiceStress.java │ │ │ │ │ ├── VoiceVolume.java │ │ │ │ │ ├── Volume.java │ │ │ │ │ ├── WhiteSpace.java │ │ │ │ │ ├── WhiteSpaceCollapse.java │ │ │ │ │ ├── Widows.java │ │ │ │ │ ├── Width.java │ │ │ │ │ ├── WillChange.java │ │ │ │ │ ├── WordBreak.java │ │ │ │ │ ├── WordSpacing.java │ │ │ │ │ ├── WordWrap.java │ │ │ │ │ ├── WrapAfter.java │ │ │ │ │ ├── WrapBefore.java │ │ │ │ │ ├── WrapFlow.java │ │ │ │ │ ├── WrapInside.java │ │ │ │ │ ├── WrapMargin.java │ │ │ │ │ ├── WrapThrough.java │ │ │ │ │ ├── WritingMode.java │ │ │ │ │ ├── ZIndex.java │ │ │ │ │ ├── Zoom.java │ │ │ │ │ └── package-info.java │ │ │ │ └── validator │ │ │ │ │ ├── HashMultiplierValidator.java │ │ │ │ │ ├── MultiplierValidator.java │ │ │ │ │ ├── PlusMultiplierValidator.java │ │ │ │ │ ├── Validator.java │ │ │ │ │ ├── ValidatorFactory.java │ │ │ │ │ ├── ValueElementListValidator.java │ │ │ │ │ ├── ValueElementMultiValidator.java │ │ │ │ │ ├── ValueElementValidator.java │ │ │ │ │ ├── ValueValidator.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ ├── property │ │ │ │ │ ├── CounterValidator.java │ │ │ │ │ ├── CuePropertyValidator.java │ │ │ │ │ ├── CursorValidator.java │ │ │ │ │ ├── FilterValidator.java │ │ │ │ │ ├── FlexFlowValidator.java │ │ │ │ │ ├── FontFamilyValidator.java │ │ │ │ │ ├── FontSynthesisValidator.java │ │ │ │ │ ├── HangingPunctuationValidator.java │ │ │ │ │ ├── NavValidator.java │ │ │ │ │ ├── OutlineValidator.java │ │ │ │ │ ├── PausePropertyValidator.java │ │ │ │ │ ├── QuotesValidator.java │ │ │ │ │ ├── ShapeOutsideValidator.java │ │ │ │ │ ├── TextCombineUprightValidator.java │ │ │ │ │ ├── TextDecorationLineValidator.java │ │ │ │ │ ├── TextDecorationSkipValidator.java │ │ │ │ │ ├── TextEmphasisPositionValidator.java │ │ │ │ │ ├── TextIndentValidator.java │ │ │ │ │ ├── TextUnderlinePositionValidator.java │ │ │ │ │ ├── TouchActionValidator.java │ │ │ │ │ ├── TransformValidator.java │ │ │ │ │ ├── animation │ │ │ │ │ │ ├── AnimationDelayValidator.java │ │ │ │ │ │ ├── AnimationDirectionValidator.java │ │ │ │ │ │ ├── AnimationDurationValidator.java │ │ │ │ │ │ ├── AnimationFillModeValidator.java │ │ │ │ │ │ ├── AnimationIterationCountValidator.java │ │ │ │ │ │ ├── AnimationNameValidator.java │ │ │ │ │ │ ├── AnimationPlayStateValidator.java │ │ │ │ │ │ ├── AnimationTimingFunctionValidator.java │ │ │ │ │ │ ├── AnimationValidator.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── background │ │ │ │ │ │ ├── BackgroundAttachmentValidator.java │ │ │ │ │ │ ├── BackgroundClipValidator.java │ │ │ │ │ │ ├── BackgroundImageValidator.java │ │ │ │ │ │ ├── BackgroundOriginValidator.java │ │ │ │ │ │ ├── BackgroundPositionValidator.java │ │ │ │ │ │ ├── BackgroundRepeatValidator.java │ │ │ │ │ │ ├── BackgroundSizeValidator.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── border │ │ │ │ │ │ ├── BorderPropertyValidator.java │ │ │ │ │ │ ├── BorderRadiusPropertyValidator.java │ │ │ │ │ │ ├── BorderRadiusValidator.java │ │ │ │ │ │ ├── BorderSpacingValidator.java │ │ │ │ │ │ ├── BorderValidator.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── liststyle │ │ │ │ │ │ ├── ListStyleImageValidator.java │ │ │ │ │ │ ├── ListStylePositionValidator.java │ │ │ │ │ │ ├── ListStyleTypeValidator.java │ │ │ │ │ │ ├── ListStyleValidator.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── package-info.java │ │ │ │ │ └── valueelement │ │ │ │ │ ├── AutoValidator.java │ │ │ │ │ ├── BlendModeValidator.java │ │ │ │ │ ├── BorderStyleValidator.java │ │ │ │ │ ├── BorderWidthValidator.java │ │ │ │ │ ├── BoxValidator.java │ │ │ │ │ ├── ColorValidator.java │ │ │ │ │ ├── CueValidator.java │ │ │ │ │ ├── DelimiterValidator.java │ │ │ │ │ ├── HashValidator.java │ │ │ │ │ ├── IdentifierValidator.java │ │ │ │ │ ├── ImageValidator.java │ │ │ │ │ ├── MarginWidthValidator.java │ │ │ │ │ ├── MaxWidthHeightValidator.java │ │ │ │ │ ├── MinWidthHeightValidator.java │ │ │ │ │ ├── NoneValidator.java │ │ │ │ │ ├── OutlineColorValidator.java │ │ │ │ │ ├── OutlineStyleValidator.java │ │ │ │ │ ├── OutlineWidthValidator.java │ │ │ │ │ ├── OverflowValidator.java │ │ │ │ │ ├── PaddingWidthValidator.java │ │ │ │ │ ├── PauseValidator.java │ │ │ │ │ ├── RadiusValidator.java │ │ │ │ │ ├── ShapeBoxValidator.java │ │ │ │ │ ├── SizeValidator.java │ │ │ │ │ ├── StringValidator.java │ │ │ │ │ ├── TextDecorationStyleValidator.java │ │ │ │ │ ├── UriValidator.java │ │ │ │ │ ├── WidthHeightValidator.java │ │ │ │ │ ├── ZoomValidator.java │ │ │ │ │ ├── dimension │ │ │ │ │ ├── AngleValidator.java │ │ │ │ │ ├── DimensionValidator.java │ │ │ │ │ ├── FrequencyValidator.java │ │ │ │ │ ├── LengthValidator.java │ │ │ │ │ ├── ResolutionValidator.java │ │ │ │ │ ├── TimeValidator.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── flex │ │ │ │ │ ├── FlexBasisValidator.java │ │ │ │ │ ├── FlexDirectionValidator.java │ │ │ │ │ ├── FlexGrowValidator.java │ │ │ │ │ ├── FlexShrinkValidator.java │ │ │ │ │ ├── FlexWrapValidator.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── function │ │ │ │ │ ├── BasicShapeValidator.java │ │ │ │ │ ├── FunctionValidator.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── numeric │ │ │ │ │ ├── IntegerRangeValidator.java │ │ │ │ │ ├── IntegerSetValidator.java │ │ │ │ │ ├── IntegerValidator.java │ │ │ │ │ ├── NumberRangeValidator.java │ │ │ │ │ ├── NumberValidator.java │ │ │ │ │ ├── PercentageValidator.java │ │ │ │ │ └── package-info.java │ │ │ │ │ └── package-info.java │ │ │ └── pseudo │ │ │ │ ├── StandardPseudoComponent.java │ │ │ │ ├── StandardPseudoComponentFactory.java │ │ │ │ ├── package-info.java │ │ │ │ ├── pseudofunction │ │ │ │ ├── StandardPseudoFunction.java │ │ │ │ ├── StandardPseudoFunctionFactory.java │ │ │ │ ├── UnknownPseudoFunction.java │ │ │ │ ├── package-info.java │ │ │ │ └── standard │ │ │ │ │ ├── Any.java │ │ │ │ │ ├── Current.java │ │ │ │ │ ├── Dir.java │ │ │ │ │ ├── Drop.java │ │ │ │ │ ├── Has.java │ │ │ │ │ ├── Lang.java │ │ │ │ │ ├── Matches.java │ │ │ │ │ ├── Not.java │ │ │ │ │ ├── NthChild.java │ │ │ │ │ ├── NthColumn.java │ │ │ │ │ ├── NthLastChild.java │ │ │ │ │ ├── NthLastColumn.java │ │ │ │ │ ├── NthLastOfType.java │ │ │ │ │ ├── NthOfType.java │ │ │ │ │ └── package-info.java │ │ │ │ └── pseudoidentifier │ │ │ │ ├── StandardPseudoIdentifier.java │ │ │ │ ├── StandardPseudoIdentifierFactory.java │ │ │ │ ├── UnknownPseudoIdentifier.java │ │ │ │ ├── package-info.java │ │ │ │ └── standard │ │ │ │ ├── Active.java │ │ │ │ ├── After.java │ │ │ │ ├── AnyLink.java │ │ │ │ ├── Backdrop.java │ │ │ │ ├── Before.java │ │ │ │ ├── Blank.java │ │ │ │ ├── Checked.java │ │ │ │ ├── Current.java │ │ │ │ ├── Default.java │ │ │ │ ├── Disabled.java │ │ │ │ ├── Drop.java │ │ │ │ ├── Empty.java │ │ │ │ ├── Enabled.java │ │ │ │ ├── First.java │ │ │ │ ├── FirstChild.java │ │ │ │ ├── FirstLetter.java │ │ │ │ ├── FirstLine.java │ │ │ │ ├── FirstOfType.java │ │ │ │ ├── Focus.java │ │ │ │ ├── FocusWithin.java │ │ │ │ ├── Fullscreen.java │ │ │ │ ├── Future.java │ │ │ │ ├── GrammarError.java │ │ │ │ ├── Hover.java │ │ │ │ ├── InRange.java │ │ │ │ ├── InactiveSelection.java │ │ │ │ ├── Indeterminate.java │ │ │ │ ├── Invalid.java │ │ │ │ ├── LastChild.java │ │ │ │ ├── LastOfType.java │ │ │ │ ├── Left.java │ │ │ │ ├── Link.java │ │ │ │ ├── Marker.java │ │ │ │ ├── OnlyChild.java │ │ │ │ ├── OnlyOfType.java │ │ │ │ ├── Optional.java │ │ │ │ ├── OutOfRange.java │ │ │ │ ├── Past.java │ │ │ │ ├── Paused.java │ │ │ │ ├── Placeholder.java │ │ │ │ ├── PlaceholderShown.java │ │ │ │ ├── Playing.java │ │ │ │ ├── ReadOnly.java │ │ │ │ ├── ReadWrite.java │ │ │ │ ├── Required.java │ │ │ │ ├── Right.java │ │ │ │ ├── Root.java │ │ │ │ ├── Scope.java │ │ │ │ ├── Selection.java │ │ │ │ ├── SpellingError.java │ │ │ │ ├── Target.java │ │ │ │ ├── UserInvalid.java │ │ │ │ ├── Valid.java │ │ │ │ ├── Visited.java │ │ │ │ └── package-info.java │ │ ├── package-info.java │ │ ├── parser │ │ │ ├── CssGrammar.java │ │ │ ├── CssLexicalGrammar.java │ │ │ ├── CssNodeBuilder.java │ │ │ ├── CssParserBuilder.java │ │ │ ├── TreeFactory.java │ │ │ └── package-info.java │ │ ├── tree │ │ │ └── impl │ │ │ │ ├── AtKeywordTreeImpl.java │ │ │ │ ├── AtRuleBlockTreeImpl.java │ │ │ │ ├── AtRuleTreeImpl.java │ │ │ │ ├── AttributeMatcherExpressionTreeImpl.java │ │ │ │ ├── AttributeMatcherTreeImpl.java │ │ │ │ ├── AttributeSelectorTreeImpl.java │ │ │ │ ├── BracketBlockTreeImpl.java │ │ │ │ ├── CaseInsensitiveFlagTreeImpl.java │ │ │ │ ├── ClassSelectorTreeImpl.java │ │ │ │ ├── CompoundSelectorTreeImpl.java │ │ │ │ ├── CssTree.java │ │ │ │ ├── DeclarationsTreeImpl.java │ │ │ │ ├── DelimiterTreeImpl.java │ │ │ │ ├── DimensionTreeImpl.java │ │ │ │ ├── FunctionTreeImpl.java │ │ │ │ ├── HashTreeImpl.java │ │ │ │ ├── IdSelectorTreeImpl.java │ │ │ │ ├── IdentifierTreeImpl.java │ │ │ │ ├── ImportantTreeImpl.java │ │ │ │ ├── InternalSyntaxSpacing.java │ │ │ │ ├── InternalSyntaxToken.java │ │ │ │ ├── InternalSyntaxTrivia.java │ │ │ │ ├── KeyframesSelectorTreeImpl.java │ │ │ │ ├── LiteralTreeImpl.java │ │ │ │ ├── NamespaceTreeImpl.java │ │ │ │ ├── NumberTreeImpl.java │ │ │ │ ├── ParenthesisBlockTreeImpl.java │ │ │ │ ├── PercentageTreeImpl.java │ │ │ │ ├── PropertyDeclarationTreeImpl.java │ │ │ │ ├── PropertyTreeImpl.java │ │ │ │ ├── PseudoFunctionTreeImpl.java │ │ │ │ ├── PseudoIdentifierTreeImpl.java │ │ │ │ ├── PseudoSelectorTreeImpl.java │ │ │ │ ├── RulesetBlockTreeImpl.java │ │ │ │ ├── RulesetTreeImpl.java │ │ │ │ ├── SelectorCombinationList.java │ │ │ │ ├── SelectorCombinatorTreeImpl.java │ │ │ │ ├── SelectorTreeImpl.java │ │ │ │ ├── SelectorsTreeImpl.java │ │ │ │ ├── StringTreeImpl.java │ │ │ │ ├── StyleSheetTreeImpl.java │ │ │ │ ├── SyntaxList.java │ │ │ │ ├── TypeSelectorTreeImpl.java │ │ │ │ ├── UnicodeRangeTreeImpl.java │ │ │ │ ├── UnitTreeImpl.java │ │ │ │ ├── UriContentTreeImpl.java │ │ │ │ ├── UriTreeImpl.java │ │ │ │ ├── ValueTreeImpl.java │ │ │ │ ├── VariableDeclarationTreeImpl.java │ │ │ │ ├── VariableTreeImpl.java │ │ │ │ └── package-info.java │ │ └── visitors │ │ │ ├── CharsetAwareVisitor.java │ │ │ ├── CssVisitorContext.java │ │ │ ├── Issues.java │ │ │ ├── cpd │ │ │ ├── CpdVisitor.java │ │ │ └── package-info.java │ │ │ ├── highlighter │ │ │ ├── SyntaxHighlighterVisitor.java │ │ │ └── package-info.java │ │ │ ├── metrics │ │ │ ├── CommentLinesVisitor.java │ │ │ ├── ComplexityInFunctionsVisitor.java │ │ │ ├── ComplexityVisitor.java │ │ │ ├── CssCommentAnalyser.java │ │ │ ├── FunctionsVisitor.java │ │ │ ├── LinesOfCodeVisitor.java │ │ │ ├── MetricsVisitor.java │ │ │ ├── StatementsVisitor.java │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ └── plugins │ │ └── css │ │ └── api │ │ ├── CssCheck.java │ │ ├── CustomCssRulesDefinition.java │ │ ├── package-info.java │ │ ├── tree │ │ ├── AtKeywordTree.java │ │ ├── AtRuleBlockTree.java │ │ ├── AtRuleTree.java │ │ ├── AttributeMatcherExpressionTree.java │ │ ├── AttributeMatcherTree.java │ │ ├── AttributeSelectorTree.java │ │ ├── BracketBlockTree.java │ │ ├── CaseInsensitiveFlagTree.java │ │ ├── ClassSelectorTree.java │ │ ├── CompoundSelectorTree.java │ │ ├── DeclarationTree.java │ │ ├── DeclarationsTree.java │ │ ├── DelimiterTree.java │ │ ├── DimensionTree.java │ │ ├── FunctionTree.java │ │ ├── HashTree.java │ │ ├── IdSelectorTree.java │ │ ├── IdentifierTree.java │ │ ├── ImportantTree.java │ │ ├── KeyframesSelectorTree.java │ │ ├── LiteralTree.java │ │ ├── NamespaceTree.java │ │ ├── NumberTree.java │ │ ├── ParenthesisBlockTree.java │ │ ├── PercentageTree.java │ │ ├── PropertyDeclarationTree.java │ │ ├── PropertyTree.java │ │ ├── PseudoComponentTree.java │ │ ├── PseudoFunctionTree.java │ │ ├── PseudoIdentifierTree.java │ │ ├── PseudoSelectorTree.java │ │ ├── RulesetBlockTree.java │ │ ├── RulesetTree.java │ │ ├── SelectorCombinatorTree.java │ │ ├── SelectorTree.java │ │ ├── SelectorsTree.java │ │ ├── SimpleSelectorTree.java │ │ ├── StatementTree.java │ │ ├── StringTree.java │ │ ├── StyleSheetTree.java │ │ ├── SyntaxSpacing.java │ │ ├── SyntaxToken.java │ │ ├── SyntaxTrivia.java │ │ ├── Tree.java │ │ ├── TypeSelectorTree.java │ │ ├── UnicodeRangeTree.java │ │ ├── UnitTree.java │ │ ├── UriContentTree.java │ │ ├── UriTree.java │ │ ├── ValueTree.java │ │ ├── VariableDeclarationTree.java │ │ ├── VariableTree.java │ │ └── package-info.java │ │ └── visitors │ │ ├── DoubleDispatchVisitor.java │ │ ├── DoubleDispatchVisitorCheck.java │ │ ├── SubscriptionVisitor.java │ │ ├── SubscriptionVisitorCheck.java │ │ ├── TreeVisitor.java │ │ ├── TreeVisitorContext.java │ │ └── issue │ │ ├── FileIssue.java │ │ ├── Issue.java │ │ ├── IssueLocation.java │ │ ├── LineIssue.java │ │ ├── PreciseIssue.java │ │ └── package-info.java │ └── test │ ├── java │ └── org │ │ └── sonar │ │ └── css │ │ ├── CustomCssRulesDefinitionTest.java │ │ ├── model │ │ ├── ColorTest.java │ │ ├── atrule │ │ │ └── StandardAtRuleFactoryTest.java │ │ ├── function │ │ │ └── StandardFunctionFactoryTest.java │ │ ├── property │ │ │ └── StandardPropertyFactoryTest.java │ │ └── pseudo │ │ │ ├── StandardPseudoComponentFactoryTest.java │ │ │ ├── pseudofunction │ │ │ └── StandardPseudoFunctionFactoryTest.java │ │ │ └── pseudoidentifier │ │ │ └── StandardPseudoIdentifierFactoryTest.java │ │ ├── parser │ │ ├── AtKeywordTreeTest.java │ │ ├── AtRuleBlockTreeTest.java │ │ ├── AtRuleTreeTest.java │ │ ├── AttributeMatcherExpressionTreeTest.java │ │ ├── AttributeMatcherTreeTest.java │ │ ├── AttributeSelectorTreeTest.java │ │ ├── BOMTreeTest.java │ │ ├── BracketBlockTreeTest.java │ │ ├── CaseInsensitiveFlagTreeTest.java │ │ ├── ClassSelectorTreeTest.java │ │ ├── CommentTreeTest.java │ │ ├── CompoundSelectorTreeTest.java │ │ ├── DeclarationTreeTest.java │ │ ├── DeclarationsTreeTest.java │ │ ├── DimensionTreeTest.java │ │ ├── FunctionTreeTest.java │ │ ├── HashTreeTest.java │ │ ├── IdSelectorTreeTest.java │ │ ├── IdentifierTreeTest.java │ │ ├── ImportantTreeTest.java │ │ ├── KeyframesSelectorTreeTest.java │ │ ├── NamespaceTreeTest.java │ │ ├── NumberTreeTest.java │ │ ├── ParenthesisBlockTreeTest.java │ │ ├── PercentageTreeTest.java │ │ ├── PropertyDeclarationTreeTest.java │ │ ├── PropertyTreeTest.java │ │ ├── PseudoFunctionTreeTest.java │ │ ├── PseudoIdentifierTreeTest.java │ │ ├── PseudoSelectorTreeTest.java │ │ ├── RulesetBlockTreeTest.java │ │ ├── RulesetTreeTest.java │ │ ├── SelectorCombinatorTreeTest.java │ │ ├── SelectorTreeTest.java │ │ ├── SelectorsTreeTest.java │ │ ├── StringTreeTest.java │ │ ├── StyleSheetTreeTest.java │ │ ├── TreeTest.java │ │ ├── TypeSelectorTreeTest.java │ │ ├── UnitTreeTest.java │ │ ├── UriContentTreeTest.java │ │ ├── UriTreeTest.java │ │ ├── ValueTreeTest.java │ │ ├── VariableDeclarationTreeTest.java │ │ └── VariableTreeTest.java │ │ └── visitors │ │ ├── cpd │ │ └── CpdVisitorTest.java │ │ ├── highlighter │ │ └── SyntaxHighlighterVisitorTest.java │ │ └── metrics │ │ ├── CssCommentAnalyserTest.java │ │ └── MetricsVisitorTest.java │ └── resources │ ├── animate.css │ ├── animate.min.css │ ├── demo.autoprefixed.css │ ├── effeckt.autoprefixed.css │ ├── form-elements.css │ ├── metrics │ ├── complexity.css │ └── metrics.css │ ├── normalize.css │ └── starting-with-bom.css ├── its └── plugin │ ├── pom.xml │ ├── projects │ └── metrics │ │ └── src │ │ ├── source1.css │ │ └── source2.css │ └── src │ └── test │ ├── java │ └── com │ │ └── sonar │ │ └── it │ │ └── css │ │ ├── IssueTest.java │ │ ├── MetricsTest.java │ │ └── Tests.java │ └── resources │ └── com │ └── sonar │ └── it │ └── css │ ├── empty-profile.xml │ └── it-profile.xml ├── pom.xml └── sonar-css-plugin ├── pom.xml └── src ├── main └── java │ └── org │ └── sonar │ └── plugins │ └── css │ ├── CssChecks.java │ ├── CssLanguage.java │ ├── CssPlugin.java │ ├── CssProfile.java │ ├── CssRulesDefinition.java │ ├── CssSquidSensor.java │ ├── IssueSaver.java │ └── package-info.java └── test ├── java └── org │ └── sonar │ └── plugins │ └── css │ ├── CssLanguageTest.java │ ├── CssPluginTest.java │ ├── CssProfileTest.java │ ├── CssRulesDefinitionTest.java │ └── CssSquidSensorTest.java └── resources ├── issues.css ├── issuesWithBOM.css ├── measures.css ├── measuresWithBOM.css ├── minified ├── test-min.css ├── test.min.css └── testmin.css └── parsingError.css /.gitignore: -------------------------------------------------------------------------------- 1 | # sonar-runner 2 | .sonar/ 3 | 4 | # Maven 5 | target/ 6 | *.versionsBackup 7 | 8 | # IntelliJ IDEA 9 | *.iws 10 | *.iml 11 | *.ipr 12 | .idea/ 13 | 14 | # Eclipse 15 | .classpath 16 | .project 17 | .settings 18 | 19 | # ---- Mac OS X 20 | .DS_Store 21 | Icon? 22 | # Thumbnails 23 | ._* 24 | # Files that might appear on external disk 25 | .Spotlight-V100 26 | .Trashes 27 | 28 | # ---- Windows 29 | # Windows image file caches 30 | Thumbs.db 31 | # Folder config file 32 | Desktop.ini 33 | 34 | log.txt 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SonarQube CSS Plugin 2 | ==================== 3 | 4 | **Repository moved to https://github.com/racodond/sonar-css-plugin** 5 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/S1131.html: -------------------------------------------------------------------------------- 1 |

2 | Trailing whitespaces are simply useless and should not stay in code. They may generate noise when comparing 3 | different versions of the same file. If you encounter issues from this rule, this probably means that you are not 4 | using an automated code formatter - which you should if you have the opportunity to do so. 5 |

6 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/S1134.html: -------------------------------------------------------------------------------- 1 |

2 | FIXME tags are commonly used to mark places where a bug is suspected, but which the developer wants to 3 | deal with later. Sometimes the developer will not have the time or will simply forget to get back to that tag. This 4 | rule is meant to track those tags, and ensure that they do not go unnoticed. 5 |

6 | 7 |

Noncompliant Code Example

8 |
 9 | /* FIXME: blabla */
10 | h1 {
11 |   color: green;
12 | }
13 | 
14 | h1 {
15 |   color: green; /* FIXME: blabla */
16 | }
17 | 
18 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/S1135.html: -------------------------------------------------------------------------------- 1 |

2 | TODO tags are commonly used to mark places where some more code is required, but which the developer 3 | wants to implement later. Sometimes the developer will not have the time or will simply forget to get back to that 4 | tag. This rule is meant to track those tags, and ensure that they do not go unnoticed. 5 |

6 | 7 |

Noncompliant Code Example

8 |
 9 | /* TODO: blabla */
10 | h1 {
11 |   color: green;
12 | }
13 | 
14 | h1 {
15 |   color: green; /* TODO: blabla */
16 | }
17 | 
18 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/S2260.html: -------------------------------------------------------------------------------- 1 |

2 | When the parser fails, it is possible to record the failure as an issue on the file. This way, not only is it 3 | possible to track the number of files that do not parse but also to easily find out why they do not parse. 4 |

5 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/S2732.html: -------------------------------------------------------------------------------- 1 |

2 | Because of the way it's architected, Internet Explorer has hard limits on the size and complexity of the stylesheets 3 | it can support. Each sheet may only contain up to 4,095 selectors. Anything beyond those limits won't be 4 | supported. 5 |

6 | 7 |

See

8 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/S2735.html: -------------------------------------------------------------------------------- 1 |

2 | Because of the way it's architected, Internet Explorer has hard limits on the size and complexity of the stylesheets 3 | it can support. Each sheet may only @import 31 other sheets. Anything beyond those limits won't be supported. 4 |

5 | 6 |

See

7 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/bom-utf8-files.html: -------------------------------------------------------------------------------- 1 |

As stated in the Unicode specifications, use of a BOM is neither required nor recommended for UTF-8 files.

2 | 3 |

See

4 | 8 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/case-insensitive-flag.html: -------------------------------------------------------------------------------- 1 |

2 | The case-insensitive flag is not currently supported by all browsers (Internet Explorer and Edge for instance). Thus, it 3 | should not be used. 4 |

5 | 6 |

Noncompliant Code Example

7 |
 8 | [frame=hsides i] {
 9 |   border-style: solid none;
10 | }
11 | 
12 | 13 |

See

14 | 18 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/case.html: -------------------------------------------------------------------------------- 1 |

2 | Even though CSS syntax is case-insensitive (except for variables), sharing some style conventions is a key point to 3 | make it possible for a team to efficiently collaborate. 4 |

5 |

This rule allows to check that all properties, functions and variables are written in lowercase.

6 | 7 |

Noncompliant Code Example

8 |
 9 | .mybox {
10 |   COLOR: blue; /* Noncompliant */
11 | }
12 | 
13 | .mybox {
14 |   color: RGB(255,255,255); /* Noncompliant */
15 | }
16 | 
17 | :root {
18 |   --MyVar: red; /* Noncompliant */;
19 | }
20 | 
21 | 22 |

Compliant Solution

23 |
24 | .mybox {
25 |   color: blue;
26 | }
27 | 
28 | .mybox {
29 |   color: rgb(255,255,255);
30 | }
31 | 
32 | :root {
33 |   --myvar: red;
34 | }
35 | 
36 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/charset-first.html: -------------------------------------------------------------------------------- 1 |

2 | The @charset rule is invalid if it is not the first element in the style sheet or if it is preceded by 3 | any character including whitespace. 4 |

5 | 6 |

Noncompliant Code Example

7 |
 8 | @charset "UTF-8" /* Noncompliant: preceding whitespaces */
 9 | 
10 | 11 |

See

12 | 17 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/comment-regular-expression.html: -------------------------------------------------------------------------------- 1 |

2 | This rule template can be used to create rules which will be triggered when a comment matches a given regular 3 | expression. 4 |

5 |

6 | For example, one can create a rule with the regular expression ".*WTF.*" to match all comment 7 | containing 8 | "WTF". 9 |

10 |

11 | Note that, in order to match WTF regardless of the case, the "(?i)" modifier can be prepended to the 12 | expression, as in "(?i).*WTF.*". 13 |

14 | 15 |

16 | See Java 17 | documentation for detailed regular expression syntax. 18 |

19 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/deprecated-ie-static-filters.html: -------------------------------------------------------------------------------- 1 |

Static filters are deprecated since Internet Explorer 9 and should not be used anymore.

2 | 3 |

Noncompliant Code Example

4 |
 5 | img {
 6 |   filter: alpha(opacity=40); /* Noncompliant: 'alpha' is an Internet Explorer static filter */
 7 | }
 8 | 
9 |

See

10 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/deprecated-system-colors.html: -------------------------------------------------------------------------------- 1 |

System colors are deprecated and should not be used anymore.

2 | 3 |

Noncompliant Code Example

4 |
 5 | .mybox {
 6 |   color: ActiveBorder;
 7 | }
 8 | 
9 | 10 |

See

11 | 14 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/empty-declaration.html: -------------------------------------------------------------------------------- 1 |

Empty declarations are useless and should be removed to avoid confusing developers.

2 | 3 |

Noncompliant Code Example

4 |
 5 | .foo { ; }      /* Noncompliant */
 6 | 
 7 | .foo {
 8 |   ;             /* Noncompliant */
 9 |   color: green;
10 | }
11 | 
12 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/empty-rules.html: -------------------------------------------------------------------------------- 1 |

2 | An empty rule is one that doesn't contain any properties or variable declarations. A lot of times, empty rules 3 | appear as a result of refactoring without further cleanup. Eliminating empty rules results in smaller file sizes and 4 | less style information for the browser to deal with. 5 |

6 | 7 |

Noncompliant Code Example

8 |
 9 | .foo {
10 | }
11 | 
12 | .foo {
13 |   /* blabla */
14 | }
15 | 
16 | @font-face {
17 | }
18 | 
19 | 20 |

See

21 | 24 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/experimental-selector-combinator-usage.html: -------------------------------------------------------------------------------- 1 |

2 | Experimental column combinator (||) and descendant combinator (>>) should not be used in 3 | production code. 4 |

5 | 6 |

Noncompliant Code Example

7 |
 8 | div >> p {
 9 | }
10 | 
11 | col.selected || td {
12 | }
13 | 
14 | 15 |

See

16 | 22 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/font-faces.html: -------------------------------------------------------------------------------- 1 |

2 | Web fonts are growing in popularity and use of @font-face is on the rise. However, using web fonts 3 | comes with performance implications as font files can be quite large and some browsers block rendering while 4 | downloading them. 5 |

6 | 7 |

See

8 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/important-position.html: -------------------------------------------------------------------------------- 1 |

2 | The !important statement must be placed at the end of the line, immediately before the semicolon, 3 | otherwise it will not be taken into account by the browser. 4 |

5 | 6 |

Noncompliant Code Example

7 |
 8 | .mybox {
 9 |   width: !important 100px;             /* Noncompliant */
10 |   border: 1px solid !important black;  /* Noncompliant */
11 | }
12 | 
13 | 14 |

Compliant Solution

15 |
16 | .mybox {
17 |   width: 100px !important;             /* Compliant */
18 |   border: 1px solid black !important;  /* Compliant */
19 | }
20 | 
21 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/important.html: -------------------------------------------------------------------------------- 1 |

2 | The !important annotation is used to artificially increase the specificity of a given property value in 3 | a rule. This is usually an indication that the specificity of the entire CSS has gotten a bit out of control and 4 | needs to be refactored. The more frequently !important is found in CSS, the more likely it is that 5 | developers are having trouble styling parts of a page effectively. 6 |

7 | 8 |

Noncompliant Code Example

9 |
10 | .mybox {
11 |   color: red !important;
12 | }
13 | 
14 | 15 |

See

16 | 19 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/inlining-font-files.html: -------------------------------------------------------------------------------- 1 |

2 | Inlining fonts avoids the overhead of an HTTP request, but that advantage may not outweigh the many downsides. It’ll 3 | affect your actual and perceived performance, thereby making your site load slower. It also disables font 4 | format negotiation, progressive rendering, parallel downloading, and lazy loading. 5 |

6 | 7 |

Noncompliant Code Example

8 |
 9 | @font-face {
10 |   font-family: MyFontFamily;
11 |   src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAFhIABAAAAAAm0wAAQAAAAA...):
12 | }
13 | 
14 | 15 |

See

16 | 20 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/leading-zeros.html: -------------------------------------------------------------------------------- 1 |

For readability reasons, remove the leading zeros of declaration values.

2 | 3 |

Noncompliant Code Example

4 |
 5 | h1 {
 6 |  font-size: 0.9em;
 7 | }
 8 | 
9 | 10 |

Compliant Solution

11 |
12 | h1 {
13 |  font-size: .9em;
14 | }
15 | 
-------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/line-length.html: -------------------------------------------------------------------------------- 1 |

Having to scroll horizontally makes it harder to get a quick overview and understanding of any piece of code.

2 | 3 |

Noncompliant Code Example

4 | With maximum length set to 50: 5 |
 6 | /* Noncompliant: split this comment into several lines blabla blabla blabla blabla blabla blabla */
 7 | .mybox {
 8 |   color: red; background-color: red; color: red; background-color: red; /* Noncompliant */
 9 | }
10 | 
11 | 12 |

Compliant Solution

13 | With maximum length set to 50: 14 |
15 | /* blabla blabla blabla blabla blabla blabla */
16 | /* blabla blabla blabla blabla blabla blabla */
17 | .mybox {
18 |   color: red;
19 |   background-color: red;
20 |   color: red;
21 |   background-color: red;
22 | }
23 | 
24 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/nosonar.html: -------------------------------------------------------------------------------- 1 |

2 | Any issue to quality rule can be deactivated with the NOSONAR marker. This marker is pretty useful to 3 | exclude false-positive results but it can also be used abusively to hide real quality flaws. 4 |

5 |

This rule raises an issue when NOSONAR is used.

6 | 7 |

Noncompliant Code Example

8 |
 9 | h1 { /* NOSONAR: blabla */
10 | }
11 | 
12 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/one-declaration-per-line.html: -------------------------------------------------------------------------------- 1 |

For readability reasons, each declaration should be defined on a separate line.

2 | 3 |

Noncompliant Code Example

4 |
 5 | .mybox {
 6 |   background-color: blue;
 7 |   color: red; border-color: green;
 8 | }
 9 | 
10 | 11 |

Compliant Solution

12 |
13 | .mybox {
14 |   background-color: blue;
15 |   color: red;
16 |   border-color: green;
17 | }
18 | 
19 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/overspecific-selectors.html: -------------------------------------------------------------------------------- 1 |

2 | Avoid using too specific selectors. This means that when you have any style you want that is an exception from the 3 | common styling, it will be easier to implement it and override the default applied styling. 4 |

5 | 6 |

Noncompliant Code Example

7 | With a maximum depth of 3: 8 |
 9 | div#container div#header ul#navigation li{
10 |   float: left;
11 | }
12 | 
13 | 14 |

Compliant Code Example

15 | With a maximum depth of 3: 16 |
17 | #navigation li{
18 |   float: left;
19 | }
20 | 
21 | 22 |

See

23 | 27 | 28 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/sheet-too-many-rules.html: -------------------------------------------------------------------------------- 1 |

2 | A stylesheet that grows too much becomes harder to understand and therefore to maintain. Above a specific threshold, 3 | it is strongly advised to refactor it into smaller stylesheets which focus on well defined scopes. 4 |

5 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/tab-character.html: -------------------------------------------------------------------------------- 1 |

2 | Developers should not need to configure the tab width of their text editors in order to be able to read source code. 3 | So the use of tabulation character must be banned. 4 |

5 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/template/experimental-identifier-usage.html: -------------------------------------------------------------------------------- 1 |

2 | Even though vendor-specific identifiers are guaranteed not to cause conflicts, it should be recognized that these 3 | extensions may also be subject to change at the vendor’s whim, as they don’t form part of the CSS specifications, 4 | even though they often mimic the proposed behavior of existing or forthcoming CSS identifiers. Thus, it is not 5 | recommended to use them in production code. 6 |

7 | 8 |

The rule raises an issue when one of the following prefixes is found:

9 | [[vendors]] 10 | 11 |

Noncompliant Code Example

12 |
13 | .mybox {
14 |   display: flex;
15 |   display: -ms-flexbox; /* Noncompliant */
16 | }
17 | 
18 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/template/obsolete-functions.html: -------------------------------------------------------------------------------- 1 |

To make sure that your code will keep working as expected in the future, do not use obsolete functions:

2 | 6 | 7 |

Noncompliant Code Example

8 |
 9 | .mybox {
10 |   font-size: min(10px, 3em); /* Noncompliant */
11 |   font-size: max(10px, 3em); /* Noncompliant */
12 | }
13 | 
14 | 15 |

Obsolete Functions

16 | [[obsoleteFunctions]] 17 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/template/obsolete-properties.html: -------------------------------------------------------------------------------- 1 |

To make sure that your code will keep working as expected in the future, do not use obsolete properties:

2 | 6 | 7 |

Noncompliant Code Example

8 |
 9 | .mybox {
10 |   azimuth: 30deg; /* Noncompliant */
11 |   appearance: normal; /* Noncompliant */
12 | }
13 | 
14 | 15 |

Obsolete Properties

16 | [[obsoleteProperties]] 17 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/template/obsolete-pseudos.html: -------------------------------------------------------------------------------- 1 |

To make sure that your code will keep working as expected in the future, do not use obsolete peudo-elements and pseudo-classes:

2 | 6 | 7 |

Noncompliant Code Example

8 |
 9 | :any(ol, ul, menu, dir) {
10 |   list-style-type: square;
11 | }
12 | 
13 | 14 |

Obsolete Pseudo-Elements and Pseudo-Classes

15 | [[obsoletePseudos]] 16 | -------------------------------------------------------------------------------- /css-checks/src/main/resources/org/sonar/l10n/css/rules/css/template/unknown-at-rules.html: -------------------------------------------------------------------------------- 1 |

2 | The list of supported CSS @-rules is growing quite large, and it's very easy to miss a typo. 3 |

4 |

5 | This rule checks each @-rule name to make sure that it is a known CSS @-rule. All vendor-prefixed @-rules are 6 | ignored because vendors may add in their own @-rules at any point in time. 7 |

8 | 9 |

Noncompliant Code Example

10 |
11 | @abc { /* Noncompliant: 'abc' isn't a known @-rule */
12 |   color: red;
13 | }
14 | 
15 | 16 |

Compliant Solution

17 |
18 | @import url("styles.css"); /* Compliant: 'import' is a known @-rule */
19 | 
20 | @-moz-vendoratrule {} /* Compliant: '-moz-vendoratrule is a vendor @-rule */
21 | 
22 | 23 |

List of Known @-rules

24 | [[allAtRules]] 25 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/caseInsensitiveFlag.css: -------------------------------------------------------------------------------- 1 | [frame=hsides i] { /* Noncompliant ![sc=15;ec=16;el=+0]! !{Remove this usage of the case-insensitive flag.}! */ 2 | border-style: solid none; 3 | } 4 | 5 | [frame=hsides] { 6 | border-style: solid none; 7 | } 8 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/charset/charsetFirst.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/charset/charsetFirstWithBOM.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/charset/charsetNotFirst.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; /* Noncompliant ![sc=2;ec=10;el=+0]! !{Move the @charset rule to the very beginning of the style sheet.}! */ 2 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/commentRegularExpression.css: -------------------------------------------------------------------------------- 1 | /* wtf*/ 2 | .mybox { 3 | color: red; /* WTF! */ 4 | color: red; /* wtf */ 5 | } -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/custom/forbiddenProperties.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | color: green; 3 | } 4 | 5 | .mybox2 { 6 | background-color: blue; 7 | color: red; 8 | background-image: url("paper.gif"); 9 | } 10 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/custom/forbiddenUrl.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | color: green; 3 | background-image: url(paper.gif); /* Noncompliant ![sc=25;ec=34]! !{Remove this usage of the forbidden "paper.gif" URL.}! */ 4 | 5 | } 6 | 7 | .mybox2 { 8 | background-color: blue; 9 | color: red; 10 | background-image: url("paper.gif"); /* Noncompliant ![sc=25;ec=36]! !{Remove this usage of the forbidden "paper.gif" URL.}! */ 11 | background-image: url("blabla.gif"); 12 | } 13 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/doNotUseShorthandProperties.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | margin: 10px 5px; /* Noncompliant ![sc=3;ec=9;el=+0]! !{Replace this "margin" shorthand property with its longhand properties: margin-bottom, margin-left, margin-right, margin-top}! */ 3 | padding: 10px 5px; /* Noncompliant */ 4 | *margin: 10px 5px; /* Noncompliant */ 5 | *padding: 10px 5px; /* Noncompliant */ 6 | Margin: 10px 5px; /* Noncompliant */ 7 | Padding: 10px 5px; /* Noncompliant */ 8 | margin: 10px; /* Compliant: value is one single element */ 9 | padding: 10px; /* Compliant: value is one single element */ 10 | color: red; 11 | } 12 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/experimentalIdentifierUsage.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | display: flex; 3 | -ms-display: flex; 4 | display: -aa-flex; 5 | display: -moz-flex !important; /* Noncompliant ![sc=12;ec=21;el=+0]! !{Remove this usage of the experimental "-moz-flex" identifier.}! */ 6 | display: -MS-flex; /* Noncompliant ![sc=12;ec=20;el=+0]! !{Remove this usage of the experimental "-MS-flex" identifier.}! */ 7 | } 8 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/experimentalPseudoUsage.css: -------------------------------------------------------------------------------- 1 | #fullscreen:fullscreen > h1 { /* Noncompliant ![sc=13;ec=23;el=+0]! !{Remove this usage of the experimental "fullscreen" pseudo.}! */ 2 | color: red; 3 | } 4 | 5 | #id:-moz-abc { /* Noncompliant ![sc=5;ec=13;el=+0]! !{Remove this usage of the experimental "abc" pseudo.}! */ 6 | color: red; 7 | } 8 | 9 | p:dir(ltr) { /* Noncompliant ![sc=3;ec=6;el=+0]! !{Remove this usage of the experimental "dir" pseudo.}! */ 10 | color: red; 11 | } 12 | 13 | p:-moz-abc(ltr) { /* Noncompliant ![sc=3;ec=11;el=+0]! !{Remove this usage of the experimental "abc" pseudo.}! */ 14 | color: red; 15 | } 16 | 17 | p:empty { 18 | color: red; 19 | } 20 | 21 | p:not(.mybox) { 22 | color: red; 23 | } 24 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/experimentalSelectorCombinatorUsage.css: -------------------------------------------------------------------------------- 1 | div >> p { /* Noncompliant ![sc=5;ec=7;el=+0]! !{Remove this experimental selector combinator.}! */ 2 | 3 | } 4 | 5 | col.selected || td { /* Noncompliant ![sc=14;ec=16;el=+0]! !{Remove this experimental selector combinator.}! */ 6 | } 7 | 8 | div p { 9 | } 10 | 11 | div + p { 12 | } 13 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/fixmeTagPresence.css: -------------------------------------------------------------------------------- 1 | /* FIXME: blabla */ /* Noncompliant */ 2 | h1 { 3 | color: green; 4 | } 5 | 6 | /* [FIXME] blabla */ /* Noncompliant */ 7 | h1 { 8 | color: green; 9 | } 10 | 11 | /* Noncompliant ![sl=12]! */ 12 | /* FIXME: 13 | - blabla 14 | - ... 15 | */ 16 | h1 { 17 | color: green; 18 | } 19 | 20 | /* fixme: blabla */ /* Noncompliant */ 21 | h1 { 22 | color: green; 23 | } 24 | 25 | /* Noncompliant ![sl=+1]! */ 26 | /* fixme: 27 | fixme 28 | */ 29 | h1 { 30 | color: green; 31 | } 32 | 33 | h1 { 34 | color: green; /* FIXME: blabla */ /* Noncompliant */ 35 | } 36 | 37 | /* fixmeforthefirsttime */ 38 | h1 { 39 | color: green; 40 | } 41 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/formatting/important.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | width: 100px !important; 3 | width: 100px ! important; /* Noncompliant ![sc=17;ec=28;el=+0]! !{Remove the whitespaces between "!" and "important".}! */ 4 | width: 100px ! important ; /* Noncompliant ![sc=17;ec=28;el=+0]! !{Remove the whitespaces between "!" and "important".}! */ 5 | width: 100px !important ; 6 | border: 1px solid black !important; 7 | width: !important 100px; 8 | border: ! important 1px solid black; /* Noncompliant ![sc=12;ec=24;el=+0]! !{Remove the whitespaces between "!" and "important".}! */ 9 | border: 1px solid ! important black; /* Noncompliant ![sc=22;ec=34;el=+0]! !{Remove the whitespaces between "!" and "important".}! */ 10 | border: 1px solid black !important 11 | } 12 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/idsinselector.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | display: block; 3 | } 4 | 5 | div { 6 | display: block; 7 | } 8 | 9 | #mybox { /* Noncompliant ![sc=1;ec=7;el=+0]! !{Remove ID "mybox" from this selector.}! */ 10 | display: block; 11 | } 12 | 13 | .mybox #go { /* Noncompliant ![sc=8;ec=11;el=+0]! !{Remove ID "go" from this selector.}! */ 14 | color: red; 15 | } 16 | 17 | .mybox #go, /* Noncompliant ![sc=8;ec=11;el=+0]! !{Remove ID "go" from this selector.}! */ 18 | .mybox2 #abc { /* Noncompliant ![sc=9;ec=13;el=+0]! !{Remove ID "abc" from this selector.}! */ 19 | color: red; 20 | } 21 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/ieStaticFilters.css: -------------------------------------------------------------------------------- 1 | img { 2 | filter: alpha(opacity=40); /* Noncompliant ![sc=11;ec=28;el=+0]! !{Remove this usage of the "alpha" Internet Explorer static filter.}! */ 3 | } 4 | 5 | .mybox { 6 | color: red; 7 | } 8 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/import.css: -------------------------------------------------------------------------------- 1 | @charset UTF-8; 2 | 3 | @import url(more.css); /* Noncompliant ![sc=1;ec=8;el=+0]! !{Remove this @import rule.}! */ 4 | @import url(andmore.css); /* Noncompliant ![sc=1;ec=8;el=+0]! !{Remove this @import rule.}! */ 5 | 6 | a { 7 | color: black; 8 | } 9 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/import/importFirst1.css: -------------------------------------------------------------------------------- 1 | @import "mystyle.css"; 2 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/import/importFirst2.css: -------------------------------------------------------------------------------- 1 | @import "mystyle.css"; 2 | 3 | @keyframes fade {} 4 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/import/importFirst3.css: -------------------------------------------------------------------------------- 1 | @import "mystyle.css"; 2 | @import "mystyle2.css"; 3 | 4 | @keyframes fade {} 5 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/import/importFirst4.css: -------------------------------------------------------------------------------- 1 | @import "mystyle.css"; 2 | @import "mystyle2.css"; 3 | 4 | .mybox { 5 | } 6 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/import/importFirstWithCharset.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8" 2 | 3 | @import "mystyle.css"; 4 | @import "mystyle2.css"; 5 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/import/importNotFirst1.css: -------------------------------------------------------------------------------- 1 | @keyframes fade {} 2 | 3 | @keyframes fade {} 4 | 5 | @import "mystyle.css"; /* Noncompliant ![sc=1;ec=8;el=+0;secondary=1,3]! !{Move this @import rule before all the other at-rules and style rules.}! */ 6 | 7 | @keyframes fade {} 8 | 9 | @import "mystyle2.css"; /* Noncompliant ![sc=1;ec=8;el=+0;secondary=1,3,7]! !{Move this @import rule before all the other at-rules and style rules.}! */ 10 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/import/importNotFirst2.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | } 3 | 4 | { 5 | } 6 | 7 | @import "mystyle.css"; /* Noncompliant ![sc=1;ec=8;el=+0;secondary=1,4]! !{Move this @import rule before all the other at-rules and style rules.}! */ 8 | 9 | .mybox { 10 | } 11 | 12 | @import "mystyle2.css"; /* Noncompliant ![sc=1;ec=8;el=+0;secondary=1,4,9]! !{Move this @import rule before all the other at-rules and style rules.}! */ 13 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/importantPosition.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | width: 100px !important; 3 | width: 100px ! important; 4 | width: 100px ! important ; 5 | width: 100px !important ; 6 | border: 1px solid black !important; 7 | width: !important 100px; /* Noncompliant ![sc=11;ec=21;el=+0]! !{Move the "!important" annotation to the end of the declaration.}! */ 8 | border: ! important 1px solid black; /* Noncompliant ![sc=12;ec=24;el=+0]! !{Move the "!important" annotation to the end of the declaration.}! */ 9 | border: 1px solid ! important black; /* Noncompliant ![sc=22;ec=34;el=+0]! !{Move the "!important" annotation to the end of the declaration.}! */ 10 | border: 1px solid black !important 11 | } 12 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/leadingZeros.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | font-size: 0.9em; /* Noncompliant ![sc=13;ec=16;el=+0]! !{Remove the leading zero.}! */ 3 | } 4 | 5 | /* Compliant */ 6 | h1 { 7 | font-size: .9em; 8 | } 9 | 10 | /* Compliant */ 11 | h1 { 12 | font-size: 0; 13 | } 14 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/lineLength.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | color: red; color: red; color: red; color: red; 3 | color: red; color: red; color: red; 4 | /* blabla blabla blabla blabla blabla */ 5 | } -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/lineLength30.css: -------------------------------------------------------------------------------- 1 | /* Noncompliant ![sl=5]! */ 2 | /* Noncompliant ![sl=6]! */ 3 | /* Noncompliant ![sl=7]! */ 4 | .mybox { 5 | color: red; color: red; color: red; color: red; 6 | color: red; color: red; color: red; 7 | /* blabla blabla blabla blabla blabla */ 8 | } -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/lineLength50.css: -------------------------------------------------------------------------------- 1 | /* Noncompliant ![sl=3]! */ 2 | .mybox { 3 | color: red; color: red; color: red; color: red; 4 | color: red; color: red; color: red; 5 | /* blabla blabla blabla blabla blabla */ 6 | } -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/maximumNumberOfRulesPerSheet10.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color:red; 3 | } 4 | h2 { 5 | color:red; 6 | } 7 | h3 { 8 | color:red; 9 | } 10 | h4 { 11 | color:red; 12 | } 13 | h5 { 14 | color:red; 15 | } 16 | h6 { 17 | color:red; 18 | } 19 | a { 20 | color:red; 21 | } 22 | div { 23 | color:red; 24 | } 25 | @font-face { 26 | font-family: 'MyFontFamily'; 27 | } 28 | @font-face { 29 | font-family: 'MyFontFamily2'; 30 | } 31 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/maximumNumberOfRulesPerSheet11.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color:red; 3 | } 4 | h2 { 5 | color:red; 6 | } 7 | h3 { 8 | color:red; 9 | } 10 | h4 { 11 | color:red; 12 | } 13 | h5 { 14 | color:red; 15 | } 16 | h6 { 17 | color:red; 18 | } 19 | a { 20 | color:red; 21 | } 22 | div { 23 | color:red; 24 | } 25 | @font-face { 26 | font-family: 'MyFontFamily'; 27 | } 28 | @font-face { 29 | font-family: 'MyFontFamily2'; 30 | } 31 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/maximumNumberOfRulesPerSheet9.css: -------------------------------------------------------------------------------- 1 | /* Noncompliant ![sl=0;effortToFix=2]! !{Reduce the number of rules. This sheet contains 11 rules, 2 more than the 9 allowed rules.}! */ 2 | h1 { 3 | color:red; 4 | } 5 | h2 { 6 | color:red; 7 | } 8 | h3 { 9 | color:red; 10 | } 11 | h4 { 12 | color:red; 13 | } 14 | h5 { 15 | color:red; 16 | } 17 | h6 { 18 | color:red; 19 | } 20 | a { 21 | color:red; 22 | } 23 | div { 24 | color:red; 25 | } 26 | @font-face { 27 | font-family: 'MyFontFamily'; 28 | } 29 | @font-face { 30 | font-family: 'MyFontFamily2'; 31 | } 32 | @font-face { 33 | font-family: 'MyFontFamily2'; 34 | } 35 | 36 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/noDuplication.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 320px) { 2 | .box1 { 3 | border-color: orange; 4 | } 5 | .box2 { 6 | border-color: orangered; 7 | } 8 | } -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/noParsingError.css: -------------------------------------------------------------------------------- 1 | .heart-icon { 2 | color: red; 3 | } 4 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/nosonarTagPresence.css: -------------------------------------------------------------------------------- 1 | h1 { /* NOSONAR: blabla */ /* Noncompliant */ 2 | color: green; 3 | } 4 | 5 | h1 { 6 | color: green; /* [NOSONAR] blabla */ /* Noncompliant */ 7 | } 8 | 9 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/notabcharacter.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: red; 3 | } 4 | h2 { 5 | color: green; 6 | } 7 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/obsoleteFunctions.css: -------------------------------------------------------------------------------- 1 | p { 2 | font-size: min(10px, 3em); /* Noncompliant ![sc=14;ec=17;el=+0]! !{Remove this usage of the obsolete / not on W3C Standards track "min" function.}! */ 3 | font-size: max(10px, 3em); /* Noncompliant ![sc=14;ec=17;el=+0]! !{Remove this usage of the obsolete / not on W3C Standards track "max" function.}! */ 4 | } 5 | 6 | .mybox { 7 | background-image: -webkit-gradient(linear, left top, right top, from(red), to(#f06d06)); /* Noncompliant */ /* Noncompliant */ 8 | background-image: -webkit-gradient(linear, left top, right top, from(red), color-stop(0%,#9d2d64)); /* Noncompliant */ /* Noncompliant */ 9 | color: expression(); /* Noncompliant */ 10 | } 11 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/obsoleteProperties.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | azimuth: 30deg; /* Noncompliant ![sc=3;ec=10;el=+0]! !{Remove this usage of the obsolete / not on W3C Standards track "azimuth" property.}! */ 3 | Azimuth: 30deg; /* Noncompliant ![sc=3;ec=10;el=+0]! !{Remove this usage of the obsolete / not on W3C Standards track "azimuth" property.}! */ 4 | appearance: normal; /* Noncompliant ![sc=3;ec=13;el=+0]! !{Remove this usage of the obsolete / not on W3C Standards track "appearance" property.}! */ 5 | Appearance: normal; /* Noncompliant ![sc=3;ec=13;el=+0]! !{Remove this usage of the obsolete / not on W3C Standards track "appearance" property.}! */ 6 | background-color: red; 7 | } 8 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/obsoletePseudos.css: -------------------------------------------------------------------------------- 1 | :any(ol, ul, menu, dir) { /* Noncompliant ![sc=2;ec=5;el=+0]! !{Remove this usage of the obsolete / not on W3C Standards track "any" pseudo.}! */ 2 | list-style-type: square; 3 | } 4 | 5 | p:empty { 6 | color: red; 7 | } 8 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/overqualified.css: -------------------------------------------------------------------------------- 1 | div.mybox { /* Noncompliant !{Remove the name of this overqualified element.}! */ 2 | color: red; 3 | } 4 | 5 | .mybox li.active { /* Noncompliant !{Remove the name of this overqualified element.}! */ 6 | background: red; 7 | } 8 | 9 | /* Two different elements in different rules with the same class */ 10 | li.active2 { 11 | color: red; 12 | } 13 | 14 | p.active2 { 15 | color: green; 16 | } 17 | 18 | .button:active,.link-goto:active { 19 | } 20 | 21 | .a-we,.z-b>a,.a-c>a{ 22 | } 23 | 24 | p .test {} 25 | div.test {} /* Noncompliant !{Remove the name of this overqualified element.}! */ 26 | 27 | p.test2 {} 28 | div.test2 {} 29 | 30 | #abc .test3 {} 31 | [target=_blank] .test4 {} 32 | li:hover .test5 {} 33 | 34 | table {} 35 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/overspecselectorCustom.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | color: red !important; 3 | } 4 | 5 | ul l p a { 6 | } 7 | 8 | ul:hover a.id #class a { 9 | } 10 | 11 | ul > div + a +li { 12 | } 13 | 14 | /* Noncompliant ![sl=+1;sc=1;ec=2;el=+2;secondary=+0,+0,+0,+1,+1,+2]! !{Simplify this over-specified selector. Maximum allowed depth: 5. Actual depth: 6}! */ 15 | ul:hover #class a 16 | l p 17 | a { 18 | } 19 | 20 | /* Noncompliant ![sl=+1;sc=1;ec=4;el=+1;secondary=+0,+0,+0,+0,+1,+1]! !{Simplify this over-specified selector. Maximum allowed depth: 5. Actual depth: 6}! */ 21 | ul:hover #class a l 22 | p a { 23 | } 24 | 25 | ul > div +li { 26 | } 27 | 28 | .button.class,.link.class,.button.class2:active,.link.class3:active { 29 | } 30 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/parsingError.css: -------------------------------------------------------------------------------- 1 | /* Noncompliant ![sl=3]! !{Parsing error.}! */ 2 | .heart-icon { 3 | background: ; 4 | } 5 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/properties/accelerator.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | accelerator: inherit; 3 | accelerator: true; 4 | accelerator: false; 5 | accelerator: abc; /* Noncompliant !{Update the invalid value of property "accelerator". Expected format: true | false}! */ 6 | accelerator: 10; /* Noncompliant */ 7 | accelerator: 10px; /* Noncompliant */ 8 | } 9 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/properties/align-content.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | align-content: inherit; 3 | align-content: flex-start; 4 | align-content: flex-end; 5 | align-content: center; 6 | align-content: space-between; 7 | align-content: space-around; 8 | align-content: stretch; 9 | align-content: abc; /* Noncompliant !{Update the invalid value of property "align-content". Expected format: flex-start | flex-end | center | space-between | space-around | stretch}! */ 10 | align-content: 10; /* Noncompliant */ 11 | } -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/properties/align-items.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | align-items: inherit; 3 | align-items: flex-start; 4 | align-items: flex-end; 5 | align-items: center; 6 | align-items: baseline; 7 | align-items: stretch; 8 | align-items: abc; /* Noncompliant !{Update the invalid value of property "align-items". Expected format: flex-start | flex-end | center | baseline | stretch}! */ 9 | align-items: 10; /* Noncompliant */ 10 | } -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/properties/align-self.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | align-self: inherit; 3 | align-self: auto; 4 | align-self: flex-start; 5 | align-self: flex-end; 6 | align-self: center; 7 | align-self: baseline; 8 | align-self: stretch; 9 | align-self: abc; /* Noncompliant !{Update the invalid value of property "align-self". Expected format: auto | flex-start | flex-end | center | baseline | stretch}! */ 10 | align-self: 10; /* Noncompliant */ 11 | } -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/properties/all.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | all: inherit; 3 | all: initial; 4 | all: unset; 5 | all: revert; 6 | all: abc; /* Noncompliant ![sc=3;ec=11;el=+0]! !{Update the invalid value of property "all". Expected format: inherit | initial | unset | revert}! */ 7 | *all: abc; /* Noncompliant */ 8 | _all: abc; /* Noncompliant */ 9 | -moz-all: abc; /* Compliant: vendor-prefix properties are not checked */ 10 | } 11 | -------------------------------------------------------------------------------- /css-checks/src/test/resources/checks/properties/animation-delay.css: -------------------------------------------------------------------------------- 1 | .mybox { 2 | animation-delay: inherit; 3 | animation-delay: 10s; 4 | animation-delay: 0; 5 | animation-delay: -10s; 6 | animation-delay: +10ms; 7 | animation-delay: 10; /* Noncompliant !{Update the invalid value of property "animation-delay". Expected format: