diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..cf6ce25 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.git +Makefile diff --git a/Dockerfile b/Dockerfile index eb18af3..da11f4a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ RUN apk --update add nodejs git ruby ruby-dev ruby-bundler less ruby-nokogiri bu bundle install -j 4 && \ apk del build-base && rm -fr /usr/share/ri -RUN npm install -g codeclimate/csslint.git#27a21742 +RUN npm install -g codeclimate/csslint.git#43d315c2 RUN adduser -u 9000 -D app USER app diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f11fb3d --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +.PHONY: test + +image: + docker build -t codeclimate/codeclimate-csslint . + +test: image + docker run --rm codeclimate/codeclimate-csslint rake diff --git a/circle.yml b/circle.yml index 782f888..403a8a6 100644 --- a/circle.yml +++ b/circle.yml @@ -7,25 +7,21 @@ machine: CODECLIMATE_DOCKER_REGISTRY_USERNAME: circleci CODECLIMATE_DOCKER_REGISTRY_EMAIL: ops@codeclimate.com -dependencies: - override: - - echo $gcloud_json_key_base64 | sed 's/ //g' | base64 -d > /tmp/gcloud_key.json - - curl https://sdk.cloud.google.com | bash - - bundle install - - npm install -g codeclimate/csslint.git#7a3a6be - test: override: - - bundle exec rspec spec - - docker build -t=$registry_root/$CIRCLE_PROJECT_REPONAME:b$CIRCLE_BUILD_NUM . + - make test deployment: registry: branch: master commands: + # GCR for .com + - echo $gcloud_json_key_base64 | sed 's/ //g' | base64 -d > /tmp/gcloud_key.json + - docker tag codeclimate/codeclimate-csslint $registry_root/$CIRCLE_PROJECT_REPONAME:b$CIRCLE_BUILD_NUM - gcloud auth activate-service-account --key-file /tmp/gcloud_key.json - - gcloud docker -a - - docker push $registry_root/$CIRCLE_PROJECT_REPONAME:b$CIRCLE_BUILD_NUM + - gcloud docker push $registry_root/$CIRCLE_PROJECT_REPONAME:b$CIRCLE_BUILD_NUM + + # registry.codeclimate.net for CC:E - docker login --username=$CODECLIMATE_DOCKER_REGISTRY_USERNAME --password=$CODECLIMATE_DOCKER_REGISTRY_PASSWORD --email=$CODECLIMATE_DOCKER_REGISTRY_EMAIL $CODECLIMATE_DOCKER_REGISTRY_HOSTNAME - docker tag $registry_root/$CIRCLE_PROJECT_REPONAME:b$CIRCLE_BUILD_NUM $CODECLIMATE_DOCKER_REGISTRY_HOSTNAME/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:b$CIRCLE_BUILD_NUM - docker push $CODECLIMATE_DOCKER_REGISTRY_HOSTNAME/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:b$CIRCLE_BUILD_NUM diff --git a/lib/cc/engine/csslint.rb b/lib/cc/engine/csslint.rb index 7fa9670..e1aa8b6 100644 --- a/lib/cc/engine/csslint.rb +++ b/lib/cc/engine/csslint.rb @@ -20,7 +20,7 @@ def run next unless node.name == "error" lint = node.attributes - check_name = lint["source"].value + check_name = lint["identifier"].value check_details = CheckDetails.fetch(check_name) issue = { diff --git a/lib/cc/engine/csslint/check_details.rb b/lib/cc/engine/csslint/check_details.rb index 8da929d..04133d5 100644 --- a/lib/cc/engine/csslint/check_details.rb +++ b/lib/cc/engine/csslint/check_details.rb @@ -4,31 +4,31 @@ class CSSlint class CheckDetails ALL_RULES = { # https://github.com/CSSLint/csslint/wiki/Rules - "net.csslint.Bewareofbrokenboxsize" => { categories: "Bug Risk" }, - "net.csslint.Disallow@import" => { categories: "Bug Risk" }, - "net.csslint.Disallowadjoiningclasses" => { categories: "Compatibility" }, - "net.csslint.Disallowduplicatebackgroundimages" => { categories: "Bug Risk" }, - "net.csslint.Disallowduplicateproperties" => { categories: "Bug Risk" }, - "net.csslint.Disallowemptyrules" => { categories: "Bug Risk" }, - "net.csslint.Disallownegativetext-indent" => { categories: "Compatibility" }, - "net.csslint.Disallowoverqualifiedelements" => { categories: "Bug Risk" }, - "net.csslint.Disallowpropertieswithanunderscoreprefix" => { categories: "Compatibility" }, - "net.csslint.Disallowpropertieswithastarprefix" => { categories: "Compatibility" }, - "net.csslint.Disallowselectorsthatlooklikeregexs" => { categories: "Bug Risk" }, - "net.csslint.Disallowunitsfor0values" => { categories: "Bug Risk" }, - "net.csslint.Disallowuniversalselector" => { categories: "Bug Risk" }, - "net.csslint.Disallowunqualifiedattributeselectors" => { categories: "Bug Risk" }, - "net.csslint.Disallowuseofbox-sizing" => { categories: "Compatibility" }, - "net.csslint.Don'tusetoomanywebfonts" => { categories: "Bug Risk" }, - "net.csslint.Headingsshouldonlybedefinedonce" => { categories: "Duplication" }, - "net.csslint.Requireallgradientdefinitions" => { categories: "Compatibility" }, - "net.csslint.Requirecompatiblevendorprefixes" => { categories: "Compatibility" }, - "net.csslint.Requirefallbackcolors" => { categories: "Compatibility" }, - "net.csslint.Requirepropertiesappropriatefordisplay" => { categories: "Bug Risk" }, - "net.csslint.Requireshorthandproperties" => { categories: "Bug Risk" }, - "net.csslint.Requirestandardpropertywithvendorprefix" => { categories: "Compatibility" }, - "net.csslint.Requireuseofknownproperties" => { categories: "Bug Risk" }, - "net.csslint.Usethebulletproof@font-facesyntax" => { categories: "Compatibility" }, + "adjoining-classes" => { categories: "Compatibility" }, + "box-model" => { categories: "Bug Risk" }, + "box-sizing" => { categories: "Compatibility" }, + "bulletproof-font-face" => { categories: "Compatibility" }, + "compatible-vendor-prefixes" => { categories: "Compatibility" }, + "display-property-grouping" => { categories: "Bug Risk" }, + "duplicate-background-images" => { categories: "Bug Risk" }, + "duplicate-properties" => { categories: "Bug Risk" }, + "empty-rules" => { categories: "Bug Risk" }, + "fallback-colors" => { categories: "Compatibility" }, + "font-faces" => { categories: "Bug Risk" }, + "gradients" => { categories: "Compatibility" }, + "import" => { categories: "Bug Risk" }, + "known-properties" => { categories: "Bug Risk" }, + "overqualified-elements" => { categories: "Bug Risk" }, + "regex-selectors" => { categories: "Bug Risk" }, + "shorthand" => { categories: "Bug Risk" }, + "star-property-hack" => { categories: "Compatibility" }, + "text-indent" => { categories: "Compatibility" }, + "underscore-property-hack" => { categories: "Compatibility" }, + "unique-headings" => { categories: "Duplication" }, + "universal-selector" => { categories: "Bug Risk" }, + "unqualified-attributes" => { categories: "Bug Risk" }, + "vendor-prefix" => { categories: "Compatibility" }, + "zero-units" => { categories: "Bug Risk" }, }.freeze DEFAULT_CATEGORY = "Style".freeze diff --git a/spec/cc/engine/csslint/check_details_spec.rb b/spec/cc/engine/csslint/check_details_spec.rb index 2892800..134dbb6 100644 --- a/spec/cc/engine/csslint/check_details_spec.rb +++ b/spec/cc/engine/csslint/check_details_spec.rb @@ -4,7 +4,7 @@ class CC::Engine::CSSlint describe CheckDetails do describe ".fetch" do it "returns details for customized checks" do - details = CheckDetails.fetch("net.csslint.Disallow@import") + details = CheckDetails.fetch("import") expect(details.categories).to eq ["Bug Risk"] expect(details.remediation_points).to eq 50_000