codeclimate-fede 0.85.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/check +18 -0
- data/bin/codeclimate +21 -0
- data/bin/prep-release +45 -0
- data/bin/publish +47 -0
- data/bin/release +41 -0
- data/bin/validate-release +18 -0
- data/config/engines.yml +322 -0
- data/lib/cc/analyzer/bridge.rb +106 -0
- data/lib/cc/analyzer/composite_container_listener.rb +21 -0
- data/lib/cc/analyzer/container/result.rb +74 -0
- data/lib/cc/analyzer/container.rb +208 -0
- data/lib/cc/analyzer/container_listener.rb +9 -0
- data/lib/cc/analyzer/engine.rb +125 -0
- data/lib/cc/analyzer/engine_output.rb +74 -0
- data/lib/cc/analyzer/engine_output_filter.rb +36 -0
- data/lib/cc/analyzer/engine_output_overrider.rb +31 -0
- data/lib/cc/analyzer/filesystem.rb +50 -0
- data/lib/cc/analyzer/formatters/formatter.rb +53 -0
- data/lib/cc/analyzer/formatters/html_formatter.rb +415 -0
- data/lib/cc/analyzer/formatters/json_formatter.rb +38 -0
- data/lib/cc/analyzer/formatters/plain_text_formatter.rb +101 -0
- data/lib/cc/analyzer/formatters/spinner.rb +35 -0
- data/lib/cc/analyzer/formatters.rb +21 -0
- data/lib/cc/analyzer/issue.rb +69 -0
- data/lib/cc/analyzer/issue_sorter.rb +30 -0
- data/lib/cc/analyzer/issue_validations/category_validation.rb +32 -0
- data/lib/cc/analyzer/issue_validations/check_name_presence_validation.rb +15 -0
- data/lib/cc/analyzer/issue_validations/content_validation.rb +21 -0
- data/lib/cc/analyzer/issue_validations/description_presence_validation.rb +15 -0
- data/lib/cc/analyzer/issue_validations/location_format_validation.rb +72 -0
- data/lib/cc/analyzer/issue_validations/other_locations_format_validation.rb +41 -0
- data/lib/cc/analyzer/issue_validations/path_existence_validation.rb +15 -0
- data/lib/cc/analyzer/issue_validations/path_is_file_validation.rb +15 -0
- data/lib/cc/analyzer/issue_validations/path_presence_validation.rb +15 -0
- data/lib/cc/analyzer/issue_validations/relative_path_validation.rb +32 -0
- data/lib/cc/analyzer/issue_validations/remediation_points_validation.rb +25 -0
- data/lib/cc/analyzer/issue_validations/severity_validation.rb +39 -0
- data/lib/cc/analyzer/issue_validations/type_validation.rb +15 -0
- data/lib/cc/analyzer/issue_validations/validation.rb +35 -0
- data/lib/cc/analyzer/issue_validations.rb +26 -0
- data/lib/cc/analyzer/issue_validator.rb +11 -0
- data/lib/cc/analyzer/location_description.rb +45 -0
- data/lib/cc/analyzer/logging_container_listener.rb +24 -0
- data/lib/cc/analyzer/measurement.rb +22 -0
- data/lib/cc/analyzer/measurement_validations/name_validation.rb +23 -0
- data/lib/cc/analyzer/measurement_validations/type_validation.rb +15 -0
- data/lib/cc/analyzer/measurement_validations/validation.rb +27 -0
- data/lib/cc/analyzer/measurement_validations/value_validation.rb +21 -0
- data/lib/cc/analyzer/measurement_validations.rb +16 -0
- data/lib/cc/analyzer/measurement_validator.rb +11 -0
- data/lib/cc/analyzer/mounted_path.rb +80 -0
- data/lib/cc/analyzer/raising_container_listener.rb +32 -0
- data/lib/cc/analyzer/source_buffer.rb +47 -0
- data/lib/cc/analyzer/source_extractor.rb +79 -0
- data/lib/cc/analyzer/source_fingerprint.rb +40 -0
- data/lib/cc/analyzer/statsd_container_listener.rb +51 -0
- data/lib/cc/analyzer/validator.rb +38 -0
- data/lib/cc/analyzer.rb +50 -0
- data/lib/cc/cli/analyze/engine_failure.rb +11 -0
- data/lib/cc/cli/analyze.rb +90 -0
- data/lib/cc/cli/command.rb +85 -0
- data/lib/cc/cli/console.rb +12 -0
- data/lib/cc/cli/engines/engine_command.rb +15 -0
- data/lib/cc/cli/engines/install.rb +35 -0
- data/lib/cc/cli/engines/list.rb +18 -0
- data/lib/cc/cli/engines.rb +5 -0
- data/lib/cc/cli/file_store.rb +42 -0
- data/lib/cc/cli/global_cache.rb +47 -0
- data/lib/cc/cli/global_config.rb +35 -0
- data/lib/cc/cli/help.rb +51 -0
- data/lib/cc/cli/output.rb +34 -0
- data/lib/cc/cli/prepare.rb +98 -0
- data/lib/cc/cli/runner.rb +75 -0
- data/lib/cc/cli/validate_config.rb +84 -0
- data/lib/cc/cli/version.rb +16 -0
- data/lib/cc/cli/version_checker.rb +107 -0
- data/lib/cc/cli.rb +39 -0
- data/lib/cc/config/checks_adapter.rb +40 -0
- data/lib/cc/config/default_adapter.rb +54 -0
- data/lib/cc/config/engine.rb +41 -0
- data/lib/cc/config/engine_set.rb +47 -0
- data/lib/cc/config/json_adapter.rb +17 -0
- data/lib/cc/config/prepare.rb +92 -0
- data/lib/cc/config/validation/check_validator.rb +34 -0
- data/lib/cc/config/validation/engine_validator.rb +93 -0
- data/lib/cc/config/validation/fetch_validator.rb +78 -0
- data/lib/cc/config/validation/file_validator.rb +112 -0
- data/lib/cc/config/validation/hash_validations.rb +52 -0
- data/lib/cc/config/validation/json.rb +31 -0
- data/lib/cc/config/validation/prepare_validator.rb +40 -0
- data/lib/cc/config/validation/yaml.rb +66 -0
- data/lib/cc/config/yaml_adapter.rb +73 -0
- data/lib/cc/config.rb +70 -0
- data/lib/cc/engine_registry.rb +74 -0
- data/lib/cc/resolv.rb +39 -0
- data/lib/cc/workspace/exclusion.rb +34 -0
- data/lib/cc/workspace/path_tree/dir_node.rb +67 -0
- data/lib/cc/workspace/path_tree/file_node.rb +31 -0
- data/lib/cc/workspace/path_tree.rb +49 -0
- data/lib/cc/workspace.rb +39 -0
- metadata +279 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 658b6d3c606c2840b4ab642676e0c61554ca4b1c
|
4
|
+
data.tar.gz: 0e899e65dbd81e04f2e2af0f31b931c4e04bdb28
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4eb9a2e3f6b8c635c2a08ed75156cff4c1c156dda855d340da24568ecb7757a9a9000ce2ce3eb32ec641e52d2c8993768bae1b0601f586ada89ac553b1236e46
|
7
|
+
data.tar.gz: 9c9e32e6385cd186a320efdca9cae410a5261e092cd239534af640b0649bb2401509dd969e53e98ef795e9700b655f2fa0645ff225bffa4e5b537cfb3af73a04
|
data/bin/check
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
command -v docker > /dev/null 2>&1 || {
|
4
|
+
echo "Unable to find \`docker' on your \$PATH, is it installed?" >&2
|
5
|
+
exit 1
|
6
|
+
}
|
7
|
+
|
8
|
+
docker version | grep -q "Server version\|Server:" || {
|
9
|
+
echo "Unable to run \`docker version', the docker daemon may not be running" >&2
|
10
|
+
|
11
|
+
if [ "$(id --user)" -eq 0 ]; then
|
12
|
+
echo "Please ensure \`sudo docker version' succeeds and try again" >&2
|
13
|
+
else
|
14
|
+
echo "Please ensure \`docker version' succeeds and try again" >&2
|
15
|
+
fi
|
16
|
+
|
17
|
+
exit 1
|
18
|
+
}
|
data/bin/codeclimate
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), "../lib")))
|
3
|
+
|
4
|
+
require "cc/cli"
|
5
|
+
|
6
|
+
if ENV["CODECLIMATE_PROFILE"]
|
7
|
+
require "stackprof"
|
8
|
+
|
9
|
+
StackProf.start mode: :wall, out: "profile.bin"
|
10
|
+
end
|
11
|
+
|
12
|
+
CC::CLI::Runner.run(ARGV)
|
13
|
+
|
14
|
+
if ENV["CODECLIMATE_PROFILE"]
|
15
|
+
StackProf.stop
|
16
|
+
StackProf.results
|
17
|
+
|
18
|
+
system "stackprof profile.bin"
|
19
|
+
puts
|
20
|
+
system "stackprof --graphviz profile.bin"
|
21
|
+
end
|
data/bin/prep-release
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# Open a PR for releasing a new version of this repository.
|
4
|
+
#
|
5
|
+
# Usage: bin/prep-release VERSION
|
6
|
+
#
|
7
|
+
###
|
8
|
+
set -e
|
9
|
+
|
10
|
+
if [ -z "$1" ]; then
|
11
|
+
echo "usage: bin/prep-release VERSION" >&2
|
12
|
+
exit 64
|
13
|
+
fi
|
14
|
+
|
15
|
+
./bin/validate-release
|
16
|
+
|
17
|
+
version="$1"
|
18
|
+
old_version=$(< VERSION)
|
19
|
+
branch="release-$version"
|
20
|
+
|
21
|
+
|
22
|
+
printf "RELEASE %s => %s\n" "$old_version" "$version"
|
23
|
+
git fetch origin master
|
24
|
+
git reset --hard origin/master
|
25
|
+
|
26
|
+
git checkout -b "$branch"
|
27
|
+
|
28
|
+
printf "%s\n" "$version" > VERSION
|
29
|
+
make image bundle
|
30
|
+
git add VERSION Gemfile.lock
|
31
|
+
git commit --message "Release v$version"
|
32
|
+
git push origin "$branch"
|
33
|
+
|
34
|
+
branch_head=$(git rev-parse --short "$branch")
|
35
|
+
if command -v hub > /dev/null 2>&1; then
|
36
|
+
hub pull-request -F - <<EOF
|
37
|
+
Release v$version
|
38
|
+
|
39
|
+
https://github.com/codeclimate/codeclimate/compare/v$old_version...$branch_head
|
40
|
+
EOF
|
41
|
+
else
|
42
|
+
echo "hub not installed? Please open the PR manually" >&2
|
43
|
+
fi
|
44
|
+
|
45
|
+
echo "After merging the version-bump PR, run bin/release"
|
data/bin/publish
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
#
|
3
|
+
# Publish new gem version and creates GH tag for it.
|
4
|
+
#
|
5
|
+
###
|
6
|
+
|
7
|
+
set -e
|
8
|
+
set -o nounset
|
9
|
+
set -o errexit
|
10
|
+
#set -o pipefail
|
11
|
+
|
12
|
+
mkdir -p $HOME/.gem
|
13
|
+
touch $HOME/.gem/credentials
|
14
|
+
chmod 0600 $HOME/.gem/credentials
|
15
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
16
|
+
gem build *.gemspec
|
17
|
+
gem push *.gem
|
18
|
+
rake release
|
19
|
+
|
20
|
+
|
21
|
+
#version=$(< VERSION)
|
22
|
+
|
23
|
+
#docker build --rm --tag codeclimate/codeclimate .
|
24
|
+
#docker push codeclimate/codeclimate:latest
|
25
|
+
#docker tag codeclimate/codeclimate "codeclimate/codeclimate:$version"
|
26
|
+
#docker push "codeclimate/codeclimate:$version"
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
#PROJECT_RELATIVE_PATH=src/github.com/codeclimate/test-reporter
|
36
|
+
#
|
37
|
+
## Install go
|
38
|
+
#curl -O https://dl.google.com/go/go1.15.darwin-amd64.tar.gz
|
39
|
+
#tar -xzf go1.15.darwin-amd64.tar.gz
|
40
|
+
#echo 'export PATH=$PATH:$PWD/go/bin' >> "$BASH_ENV"
|
41
|
+
#
|
42
|
+
## Set go path
|
43
|
+
#mkdir -p ~/gopath/${PROJECT_RELATIVE_PATH}
|
44
|
+
#echo 'export GOPATH=$HOME/gopath' >> "$BASH_ENV"
|
45
|
+
#. "$BASH_ENV"
|
46
|
+
#cd $GOPATH/${PROJECT_RELATIVE_PATH}
|
47
|
+
#cp -r ~/project/ $GOPATH/${PROJECT_RELATIVE_PATH}
|
data/bin/release
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# Release a new version of this repository.
|
4
|
+
#
|
5
|
+
# Assumes bin/prep-release was run and the PR merged.
|
6
|
+
#
|
7
|
+
# Usage: bin/release
|
8
|
+
#
|
9
|
+
###
|
10
|
+
set -e
|
11
|
+
|
12
|
+
./bin/validate-release
|
13
|
+
|
14
|
+
version=$(< VERSION)
|
15
|
+
|
16
|
+
git fetch origin master
|
17
|
+
git reset --hard origin/master
|
18
|
+
|
19
|
+
printf "RELEASE %s\n" "$version"
|
20
|
+
bundle check || bundle install
|
21
|
+
|
22
|
+
printf "############################################################################"
|
23
|
+
printf "# The stdout will eventually hang with no message. #"
|
24
|
+
printf "# It is waiting for RubyGems TFA code input, type it in and hit enter! #"
|
25
|
+
printf "############################################################################"
|
26
|
+
printf "\n\n"
|
27
|
+
rake release
|
28
|
+
|
29
|
+
docker build --rm --tag codeclimate/codeclimate .
|
30
|
+
docker push codeclimate/codeclimate:latest
|
31
|
+
docker tag codeclimate/codeclimate "codeclimate/codeclimate:$version"
|
32
|
+
docker push "codeclimate/codeclimate:$version"
|
33
|
+
|
34
|
+
(cd ../homebrew-formulae/ && bin/release "$version")
|
35
|
+
|
36
|
+
cat <<EOM
|
37
|
+
Be sure to update release notes:
|
38
|
+
|
39
|
+
https://github.com/codeclimate/codeclimate/releases/new?tag=v$version
|
40
|
+
|
41
|
+
EOM
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
if ! [ "$(git symbolic-ref --short HEAD)" = "master" ]; then
|
6
|
+
printf "must be on master branch to run\n" >&2
|
7
|
+
exit 1
|
8
|
+
fi
|
9
|
+
|
10
|
+
if ! git diff-index --quiet HEAD --; then
|
11
|
+
printf "commit or stash your workspace changes\n" >&2
|
12
|
+
exit 1
|
13
|
+
fi
|
14
|
+
|
15
|
+
if ! make test; then
|
16
|
+
printf "test suite failed. not releasing\n" >&2
|
17
|
+
exit 1
|
18
|
+
fi
|
data/config/engines.yml
ADDED
@@ -0,0 +1,322 @@
|
|
1
|
+
# This file lists all the engines available to be run for analysis.
|
2
|
+
#
|
3
|
+
# Each engine must have `channels` (with a `stable` key) and `description`. The
|
4
|
+
# values in `channels` will be passed to `docker run` and so may be any value
|
5
|
+
# appropriate for that (repo/name:tag, image id, etc).
|
6
|
+
apexmetrics:
|
7
|
+
channels:
|
8
|
+
stable: codeclimate/codeclimate-apexmetrics
|
9
|
+
description: ApexMetrics is a static code analysis tool for Salesforce.com Apex.
|
10
|
+
bandit:
|
11
|
+
channels:
|
12
|
+
stable: codeclimate/codeclimate-bandit
|
13
|
+
description: A tool designed to find common security issues in Python code.
|
14
|
+
brakeman:
|
15
|
+
channels:
|
16
|
+
stable: codeclimate/codeclimate-brakeman
|
17
|
+
description: A static analysis tool which checks Ruby on Rails applications for security vulnerabilities.
|
18
|
+
bundler-audit:
|
19
|
+
channels:
|
20
|
+
stable: codeclimate/codeclimate-bundler-audit
|
21
|
+
description: Patch-level verification for Bundler.
|
22
|
+
checkstyle:
|
23
|
+
channels:
|
24
|
+
stable: codeclimate/codeclimate-checkstyle
|
25
|
+
description: Helps programmers write Java that adheres to a coding standard.
|
26
|
+
csslint:
|
27
|
+
channels:
|
28
|
+
stable: codeclimate/codeclimate-csslint
|
29
|
+
description: Automated linting of Cascading Stylesheets.
|
30
|
+
coffeelint:
|
31
|
+
channels:
|
32
|
+
stable: codeclimate/codeclimate-coffeelint
|
33
|
+
description: A style checker for CoffeeScript.
|
34
|
+
codenarc:
|
35
|
+
channels:
|
36
|
+
stable: codeclimate/codeclimate-codenarc
|
37
|
+
description: >
|
38
|
+
CodeNarc analyzes Groovy code for defects, bad practices, inconsistencies,
|
39
|
+
style issues, and more.
|
40
|
+
cppcheck:
|
41
|
+
channels:
|
42
|
+
stable: codeclimate/codeclimate-cppcheck
|
43
|
+
description: >
|
44
|
+
Cppcheck is a static analysis tool for C/C++ code.
|
45
|
+
credo:
|
46
|
+
channels:
|
47
|
+
stable: codeclimate/codeclimate-credo
|
48
|
+
description: >
|
49
|
+
A static code analysis tool for the Elixir language with a focus on code
|
50
|
+
consistency and teaching.
|
51
|
+
dart:
|
52
|
+
channels:
|
53
|
+
stable: codeclimate/codeclimate-dart
|
54
|
+
description: >
|
55
|
+
A static analysis tool that helps improve code quality for the Dart language.
|
56
|
+
duplication:
|
57
|
+
channels:
|
58
|
+
stable: codeclimate/codeclimate-duplication
|
59
|
+
description: Structural duplication detection for Ruby, Python, Java, JavaScript, and PHP.
|
60
|
+
editorconfig:
|
61
|
+
channels:
|
62
|
+
stable: codeclimate/codeclimate-editorconfig
|
63
|
+
description: >
|
64
|
+
EditorConfig helps developers define and maintain consistent coding styles
|
65
|
+
between different editors and IDEs.
|
66
|
+
ember-template-lint:
|
67
|
+
channels:
|
68
|
+
stable: codeclimate/codeclimate-ember-template-lint
|
69
|
+
description: Linter for Ember or Handlebars templates.
|
70
|
+
eslint:
|
71
|
+
channels:
|
72
|
+
stable: codeclimate/codeclimate-eslint
|
73
|
+
eslint-1: codeclimate/codeclimate-eslint:eslint-1
|
74
|
+
eslint-2: codeclimate/codeclimate-eslint:eslint-2
|
75
|
+
eslint-3: codeclimate/codeclimate-eslint:eslint-3
|
76
|
+
eslint-4: codeclimate/codeclimate-eslint:eslint-4
|
77
|
+
eslint-5: codeclimate/codeclimate-eslint:eslint-5
|
78
|
+
eslint-6: codeclimate/codeclimate-eslint:eslint-6
|
79
|
+
eslint-7: codeclimate/codeclimate-eslint:eslint-7
|
80
|
+
description: A JavaScript/JSX linting utility.
|
81
|
+
flog:
|
82
|
+
channels:
|
83
|
+
stable: codeclimate/codeclimate-flog
|
84
|
+
description: Easy to read reporting of complexity/pain for Ruby code.
|
85
|
+
git-legal:
|
86
|
+
channels:
|
87
|
+
stable: codeclimate/codeclimate-git-legal
|
88
|
+
description: License compliance and compatibility analysis.
|
89
|
+
gofmt:
|
90
|
+
channels:
|
91
|
+
stable: codeclimate/codeclimate-gofmt
|
92
|
+
description: Checks the formatting of Go programs.
|
93
|
+
golint:
|
94
|
+
channels:
|
95
|
+
stable: codeclimate/codeclimate-golint
|
96
|
+
description: A linter for Go.
|
97
|
+
govet:
|
98
|
+
channels:
|
99
|
+
stable: codeclimate/codeclimate-govet
|
100
|
+
description: Reports suspicious constructs in Go programs.
|
101
|
+
grep:
|
102
|
+
channels:
|
103
|
+
stable: codeclimate/codeclimate-grep
|
104
|
+
description: Detects specified patterns in files.
|
105
|
+
fixme:
|
106
|
+
channels:
|
107
|
+
stable: codeclimate/codeclimate-fixme
|
108
|
+
description: Finds FIXME, TODO, HACK, etc. comments.
|
109
|
+
foodcritic:
|
110
|
+
channels:
|
111
|
+
stable: codeclimate/codeclimate-foodcritic
|
112
|
+
description: Lint tool for Chef cookbooks.
|
113
|
+
git-legal:
|
114
|
+
channels:
|
115
|
+
stable: codeclimate/codeclimate-git-legal
|
116
|
+
description: License compliance and compatibility analysis.
|
117
|
+
gnu-complexity:
|
118
|
+
channels:
|
119
|
+
stable: codeclimate/codeclimate-gnu-complexity
|
120
|
+
description: Checks complexity of C code.
|
121
|
+
haxe-checkstyle:
|
122
|
+
channels:
|
123
|
+
stable: codeclimate/codeclimate-haxe-checkstyle
|
124
|
+
description: Checkstyle is a development library to help developers write Haxe code that adheres to a coding standard.
|
125
|
+
haml-lint:
|
126
|
+
channels:
|
127
|
+
stable: codeclimate/codeclimate-haml-lint
|
128
|
+
description: A tool for writing clean and consistent HAML.
|
129
|
+
hlint:
|
130
|
+
channels:
|
131
|
+
stable: codeclimate/codeclimate-hlint
|
132
|
+
description: A linter for Haskell programs.
|
133
|
+
kibit:
|
134
|
+
channels:
|
135
|
+
stable: codeclimate/codeclimate-kibit
|
136
|
+
description: Static code analyzer for Clojure, ClojureScript, cljx and other Clojure variants.
|
137
|
+
luacheck:
|
138
|
+
channels:
|
139
|
+
stable: codeclimate/codeclimate-luacheck
|
140
|
+
description: >
|
141
|
+
A tool for linting and static analysis of Lua code.
|
142
|
+
markdownlint:
|
143
|
+
channels:
|
144
|
+
stable: codeclimate/codeclimate-markdownlint
|
145
|
+
description: Flags style issues within Markdown files.
|
146
|
+
nodesecurity:
|
147
|
+
channels:
|
148
|
+
stable: codeclimate/codeclimate-nodesecurity
|
149
|
+
description: Security tool for Node.js dependencies.
|
150
|
+
pep8:
|
151
|
+
channels:
|
152
|
+
stable: codeclimate/codeclimate-pep8
|
153
|
+
description: Static analysis tool to check Python code against the style conventions outlined in PEP-8.
|
154
|
+
phan:
|
155
|
+
channels:
|
156
|
+
stable: codeclimate/codeclimate-phan
|
157
|
+
beta: codeclimate/codeclimate-phan:beta
|
158
|
+
description: Phan is a static analyzer for PHP.
|
159
|
+
phpcodesniffer:
|
160
|
+
channels:
|
161
|
+
stable: codeclimate/codeclimate-phpcodesniffer
|
162
|
+
beta: codeclimate/codeclimate-phpcodesniffer:beta
|
163
|
+
description: Detects violations of a defined set of coding standards in PHP.
|
164
|
+
phpmd:
|
165
|
+
channels:
|
166
|
+
stable: codeclimate/codeclimate-phpmd
|
167
|
+
description: A PHP static analysis tool.
|
168
|
+
pmd:
|
169
|
+
channels:
|
170
|
+
stable: codeclimate/codeclimate-pmd
|
171
|
+
beta: codeclimate/codeclimate-pmd:beta
|
172
|
+
description: A source code analyzer for Java.
|
173
|
+
pylint:
|
174
|
+
channels:
|
175
|
+
beta: codeclimate/codeclimate-pylint:beta
|
176
|
+
stable: codeclimate/codeclimate-pylint
|
177
|
+
description: A linter for Python.
|
178
|
+
radon:
|
179
|
+
channels:
|
180
|
+
stable: codeclimate/codeclimate-radon
|
181
|
+
description: Python tool used to compute Cyclomatic Complexity.
|
182
|
+
reek:
|
183
|
+
channels:
|
184
|
+
stable: codeclimate/codeclimate-reek
|
185
|
+
beta: codeclimate/codeclimate-reek:beta
|
186
|
+
description: >
|
187
|
+
Reek examines Ruby classes, modules, and methods and reports any code
|
188
|
+
smells it finds.
|
189
|
+
requiresafe:
|
190
|
+
channels:
|
191
|
+
stable: codeclimate/codeclimate-nodesecurity
|
192
|
+
description: Security tool for Node.js dependencies.
|
193
|
+
rubocop:
|
194
|
+
channels:
|
195
|
+
stable: codeclimate/codeclimate-rubocop
|
196
|
+
cache-support: codeclimate/codeclimate-rubocop:cache-support
|
197
|
+
rubocop-0-42: codeclimate/codeclimate-rubocop:rubocop-0-42
|
198
|
+
rubocop-0-46: codeclimate/codeclimate-rubocop:rubocop-0-46
|
199
|
+
rubocop-0-48: codeclimate/codeclimate-rubocop:rubocop-0-48
|
200
|
+
rubocop-0-49: codeclimate/codeclimate-rubocop:rubocop-0-49
|
201
|
+
rubocop-0-50: codeclimate/codeclimate-rubocop:rubocop-0-50
|
202
|
+
rubocop-0-51: codeclimate/codeclimate-rubocop:rubocop-0-51
|
203
|
+
rubocop-0-52: codeclimate/codeclimate-rubocop:rubocop-0-52
|
204
|
+
rubocop-0-54: codeclimate/codeclimate-rubocop:rubocop-0-54
|
205
|
+
rubocop-0-55: codeclimate/codeclimate-rubocop:rubocop-0-55
|
206
|
+
rubocop-0-56: codeclimate/codeclimate-rubocop:rubocop-0-56
|
207
|
+
rubocop-0-57: codeclimate/codeclimate-rubocop:rubocop-0-57
|
208
|
+
rubocop-0-58: codeclimate/codeclimate-rubocop:rubocop-0-58
|
209
|
+
rubocop-0-59: codeclimate/codeclimate-rubocop:rubocop-0-59
|
210
|
+
rubocop-0-60: codeclimate/codeclimate-rubocop:rubocop-0-60
|
211
|
+
rubocop-0-61: codeclimate/codeclimate-rubocop:rubocop-0-61
|
212
|
+
rubocop-0-62: codeclimate/codeclimate-rubocop:rubocop-0-62
|
213
|
+
rubocop-0-63: codeclimate/codeclimate-rubocop:rubocop-0-63
|
214
|
+
rubocop-0-64: codeclimate/codeclimate-rubocop:rubocop-0-64
|
215
|
+
rubocop-0-65: codeclimate/codeclimate-rubocop:rubocop-0-65
|
216
|
+
rubocop-0-66: codeclimate/codeclimate-rubocop:rubocop-0-66
|
217
|
+
rubocop-0-67: codeclimate/codeclimate-rubocop:rubocop-0-67
|
218
|
+
rubocop-0-68: codeclimate/codeclimate-rubocop:rubocop-0-68
|
219
|
+
rubocop-0-69: codeclimate/codeclimate-rubocop:rubocop-0-69
|
220
|
+
rubocop-0-70: codeclimate/codeclimate-rubocop:rubocop-0-70
|
221
|
+
rubocop-0-71: codeclimate/codeclimate-rubocop:rubocop-0-71
|
222
|
+
rubocop-0-72: codeclimate/codeclimate-rubocop:rubocop-0-72
|
223
|
+
rubocop-0-73: codeclimate/codeclimate-rubocop:rubocop-0-73
|
224
|
+
rubocop-0-74: codeclimate/codeclimate-rubocop:rubocop-0-74
|
225
|
+
rubocop-0-75: codeclimate/codeclimate-rubocop:rubocop-0-75
|
226
|
+
rubocop-0-76: codeclimate/codeclimate-rubocop:rubocop-0-76
|
227
|
+
rubocop-0-76-airbnb: codeclimate/codeclimate-rubocop:rubocop-0-76-airbnb
|
228
|
+
rubocop-0-77: codeclimate/codeclimate-rubocop:rubocop-0-77
|
229
|
+
rubocop-0-78: codeclimate/codeclimate-rubocop:rubocop-0-78
|
230
|
+
rubocop-0-79: codeclimate/codeclimate-rubocop:rubocop-0-79
|
231
|
+
rubocop-0-80: codeclimate/codeclimate-rubocop:rubocop-0-80
|
232
|
+
rubocop-0-81: codeclimate/codeclimate-rubocop:rubocop-0-81
|
233
|
+
rubocop-0-82: codeclimate/codeclimate-rubocop:rubocop-0-82
|
234
|
+
rubocop-0-83: codeclimate/codeclimate-rubocop:rubocop-0-83
|
235
|
+
rubocop-0-84: codeclimate/codeclimate-rubocop:rubocop-0-84
|
236
|
+
rubocop-0-85: codeclimate/codeclimate-rubocop:rubocop-0-85
|
237
|
+
rubocop-0-86: codeclimate/codeclimate-rubocop:rubocop-0-86
|
238
|
+
rubocop-0-87: codeclimate/codeclimate-rubocop:rubocop-0-87
|
239
|
+
rubocop-0-88: codeclimate/codeclimate-rubocop:rubocop-0-88
|
240
|
+
rubocop-0-89: codeclimate/codeclimate-rubocop:rubocop-0-89
|
241
|
+
rubocop-0-90: codeclimate/codeclimate-rubocop:rubocop-0-90
|
242
|
+
rubocop-0-92: codeclimate/codeclimate-rubocop:rubocop-0-92
|
243
|
+
rubocop-1-7-0: codeclimate/codeclimate-rubocop:rubocop-1-7-0
|
244
|
+
rubocop-1-8-1: codeclimate/codeclimate-rubocop:rubocop-1-8-1
|
245
|
+
description: A Ruby static code analyzer, based on the community Ruby style guide.
|
246
|
+
rubymotion:
|
247
|
+
channels:
|
248
|
+
stable: codeclimate/codeclimate-rubymotion
|
249
|
+
description: Rubymotion-specific rubocop checks.
|
250
|
+
sass-lint:
|
251
|
+
channels:
|
252
|
+
stable: codeclimate/codeclimate-sass-lint
|
253
|
+
description: >
|
254
|
+
A Node-only Sass linter for both sass and scss syntax!
|
255
|
+
scalastyle:
|
256
|
+
channels:
|
257
|
+
stable: codeclimate/codeclimate-scalastyle
|
258
|
+
description: >
|
259
|
+
A tool which examines your Scala code and indicates potential problems.
|
260
|
+
scss-lint:
|
261
|
+
channels:
|
262
|
+
stable: codeclimate/codeclimate-scss-lint
|
263
|
+
description: A configurable tool for writing clean and consistent SCSS.
|
264
|
+
semgrep:
|
265
|
+
channels:
|
266
|
+
stable: codeclimate/codeclimate-semgrep
|
267
|
+
description: A configurable tool that allows for custom static analysis on multiple languages.
|
268
|
+
shellcheck:
|
269
|
+
channels:
|
270
|
+
stable: codeclimate/codeclimate-shellcheck
|
271
|
+
description: A static analysis tool for shell scripts.
|
272
|
+
sonar-java:
|
273
|
+
channels:
|
274
|
+
stable: codeclimate/codeclimate-sonar-java
|
275
|
+
beta: codeclimate/codeclimate-sonar-java:sonar-java-5-14
|
276
|
+
sonar-java-5-14: codeclimate/codeclimate-sonar-java:sonar-java-5-14
|
277
|
+
description: Over 400 checks for bugs, vulnerabilities, and code smells in Java code.
|
278
|
+
minimum_memory_limit: 2_048_000_000
|
279
|
+
sonar-php:
|
280
|
+
channels:
|
281
|
+
stable: codeclimate/codeclimate-sonar-php
|
282
|
+
description: SonarLint for PHP.
|
283
|
+
minimum_memory_limit: 2_048_000_000
|
284
|
+
sonar-python:
|
285
|
+
channels:
|
286
|
+
stable: codeclimate/codeclimate-sonar-python
|
287
|
+
description: SonarLint for Python.
|
288
|
+
minimum_memory_limit: 2_048_000_000
|
289
|
+
standard:
|
290
|
+
channels:
|
291
|
+
stable: codeclimate/codeclimate-standard
|
292
|
+
beta: codeclimate/codeclimate-standard
|
293
|
+
description: Standard static analysis tool.
|
294
|
+
structure:
|
295
|
+
channels:
|
296
|
+
stable: codeclimate/codeclimate-structure
|
297
|
+
description: Performs structural checks on code.
|
298
|
+
stylelint:
|
299
|
+
channels:
|
300
|
+
beta: codeclimate/codeclimate-stylelint:beta
|
301
|
+
stable: codeclimate/codeclimate-stylelint
|
302
|
+
description: A mighty, modern CSS linter.
|
303
|
+
swiftlint:
|
304
|
+
channels:
|
305
|
+
stable: codeclimate/codeclimate-swiftlint
|
306
|
+
description: A tool to enforce Swift style and conventions.
|
307
|
+
tailor:
|
308
|
+
channels:
|
309
|
+
stable: codeclimate/codeclimate-tailor
|
310
|
+
description: Cross-platform static analyzer and linter for Swift.
|
311
|
+
tslint:
|
312
|
+
channels:
|
313
|
+
stable: codeclimate/codeclimate-tslint
|
314
|
+
description: An extensible linter for the TypeScript language
|
315
|
+
watson:
|
316
|
+
channels:
|
317
|
+
stable: codeclimate/codeclimate-watson
|
318
|
+
description: A young Ember Doctor to help you fix your code.
|
319
|
+
vint:
|
320
|
+
channels:
|
321
|
+
stable: codeclimate/codeclimate-vint
|
322
|
+
description: Fast and Highly Extensible Vim script Language Lint implemented by Python.
|
@@ -0,0 +1,106 @@
|
|
1
|
+
module CC
|
2
|
+
module Analyzer
|
3
|
+
# The shared interface, invoked by Builder or CLI::Analyze
|
4
|
+
#
|
5
|
+
# Input:
|
6
|
+
# - config
|
7
|
+
# - engines
|
8
|
+
# - exclude_patterns
|
9
|
+
# - development?
|
10
|
+
# - analysis_paths
|
11
|
+
# - formatter
|
12
|
+
# - started
|
13
|
+
# - engine_running
|
14
|
+
# - finished
|
15
|
+
# - close
|
16
|
+
# - listener
|
17
|
+
# - started(engine, details)
|
18
|
+
# - finished(engine, details, result)
|
19
|
+
# - registry
|
20
|
+
#
|
21
|
+
# Only raises if Listener raises
|
22
|
+
#
|
23
|
+
class Bridge
|
24
|
+
def initialize(config:, formatter:, listener:, registry:)
|
25
|
+
@config = config
|
26
|
+
@formatter = formatter
|
27
|
+
@listener = listener
|
28
|
+
@registry = registry
|
29
|
+
end
|
30
|
+
|
31
|
+
def run
|
32
|
+
formatter.started
|
33
|
+
|
34
|
+
config.engines.each do |engine|
|
35
|
+
next unless engine.enabled?
|
36
|
+
|
37
|
+
formatter.engine_running(engine) do
|
38
|
+
result = nil
|
39
|
+
engine_details = nil
|
40
|
+
|
41
|
+
begin
|
42
|
+
engine_details = registry.fetch_engine_details(
|
43
|
+
engine,
|
44
|
+
development: config.development?,
|
45
|
+
)
|
46
|
+
listener.started(engine, engine_details)
|
47
|
+
result = run_engine(engine, engine_details)
|
48
|
+
rescue CC::EngineRegistry::EngineDetailsNotFoundError => ex
|
49
|
+
result = Container::Result.skipped(ex)
|
50
|
+
end
|
51
|
+
|
52
|
+
listener.finished(engine, engine_details, result)
|
53
|
+
result
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
formatter.finished
|
58
|
+
ensure
|
59
|
+
formatter.close
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
attr_reader :config, :formatter, :listener, :registry
|
65
|
+
|
66
|
+
def run_engine(engine, engine_details)
|
67
|
+
# Analyzer::Engine doesn't have the best interface, but we're limiting
|
68
|
+
# our refactors for now.
|
69
|
+
Engine.new(
|
70
|
+
engine.name,
|
71
|
+
{
|
72
|
+
"image" => engine_details.image,
|
73
|
+
"command" => engine_details.command,
|
74
|
+
"memory" => engine_details.memory,
|
75
|
+
},
|
76
|
+
engine.config.merge(
|
77
|
+
"channel" => engine.channel,
|
78
|
+
"include_paths" => engine_workspace(engine).paths,
|
79
|
+
),
|
80
|
+
engine.container_label,
|
81
|
+
).run(formatter)
|
82
|
+
end
|
83
|
+
|
84
|
+
def engine_workspace(engine)
|
85
|
+
if engine.exclude_patterns.any?
|
86
|
+
workspace.clone.tap do |engine_workspace|
|
87
|
+
engine_workspace.remove(engine.exclude_patterns)
|
88
|
+
end
|
89
|
+
else
|
90
|
+
workspace
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def workspace
|
95
|
+
@workspace ||= Workspace.new.tap do |workspace|
|
96
|
+
workspace.add(config.analysis_paths)
|
97
|
+
|
98
|
+
unless config.analysis_paths.any?
|
99
|
+
workspace.remove([".git"])
|
100
|
+
workspace.remove(config.exclude_patterns)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module CC
|
2
|
+
module Analyzer
|
3
|
+
class CompositeContainerListener < ContainerListener
|
4
|
+
def initialize(*listeners)
|
5
|
+
@listeners = listeners
|
6
|
+
end
|
7
|
+
|
8
|
+
def started(*args)
|
9
|
+
listeners.each { |listener| listener.started(*args) }
|
10
|
+
end
|
11
|
+
|
12
|
+
def finished(*args)
|
13
|
+
listeners.each { |listener| listener.finished(*args) }
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
attr_reader :listeners
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|