From 6774accea3ae7d8929228cf62f34d293c464e3cd Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Tue, 8 Dec 2015 16:25:12 -0500 Subject: [PATCH 1/3] Bump csslint Adds "identifier" to checkstyle output, which we can use to generate a more friendly check name on our side. https://github.com/codeclimate/csslint/commit/e8b88550e8d4ed85d60c0d89708174eb1dc96c39 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 97e86b7ba775c7064ca2fa7db3830dfec7b91759 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Tue, 8 Dec 2015 16:45:59 -0500 Subject: [PATCH 2/3] Improve build process, run tests via docker --- .dockerignore | 2 ++ Makefile | 7 +++++++ circle.yml | 18 +++++++----------- 3 files changed, 16 insertions(+), 11 deletions(-) create mode 100644 .dockerignore create mode 100644 Makefile 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/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 From c8fd68fa5c226ce38637410339884ec86dd32072 Mon Sep 17 00:00:00 2001 From: patrick brisbin Date: Tue, 8 Dec 2015 16:46:06 -0500 Subject: [PATCH 3/3] Use rule identifier as check name Instead of "net.csslint.Disallow@import" (source, which is a munged rule.name), just use "import" (rule.id). --- lib/cc/engine/csslint.rb | 2 +- lib/cc/engine/csslint/check_details.rb | 50 ++++++++++---------- spec/cc/engine/csslint/check_details_spec.rb | 2 +- 3 files changed, 27 insertions(+), 27 deletions(-) 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