diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..b74b36e --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,17 @@ +--- +engines: + duplication: + enabled: true + config: + languages: + - ruby + fixme: + enabled: true + rubocop: + enabled: true +ratings: + paths: + - "**.rb" +exclude_paths: +- config/ +- spec/ diff --git a/.gitignore b/.gitignore index 85d93d4..3683bad 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ .yardoc *.DS_Store Gemfile.lock +Gemfile.ruby-19.lock InstalledFiles _yardoc coverage diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..4a7616c --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,136 @@ +################################################################################ +# Metrics +################################################################################ + +Metrics/LineLength: + Enabled: false + +Metrics/AbcSize: + Enabled: false + +################################################################################ +# Style +################################################################################ + +# and/or in conditionals has no meaningful difference (only gotchas), so we +# disallow them there. When used for control flow, the difference in precedence +# can make for a less noisy expression, as in: +# +# x = find_x or raise XNotFound +# +Style/AndOr: + EnforcedStyle: conditionals + +# Executables are conventionally named bin/foo-bar +Style/FileName: + Exclude: + - bin/**/* + +# We don't (currently) document our code +Style/Documentation: + Enabled: false + +# Always use double-quotes to keep things simple +Style/StringLiterals: + EnforcedStyle: double_quotes + +Style/StringLiteralsInInterpolation: + EnforcedStyle: double_quotes + +# Use a trailing comma to keep diffs clean when elements are inserted or removed +Style/TrailingCommaInArguments: + EnforcedStyleForMultiline: comma + +Style/TrailingCommaInLiteral: + EnforcedStyleForMultiline: comma + +# We avoid GuardClause because it can result in "suprise return" +Style/GuardClause: + Enabled: false + +# We avoid IfUnlessModifier because it can result in "suprise if" +Style/IfUnlessModifier: + Enabled: false + +# We don't care about the fail/raise distinction +Style/SignalException: + EnforcedStyle: only_raise + +Style/DotPosition: + EnforcedStyle: trailing + +# Common globals we allow +Style/GlobalVars: + AllowedVariables: + - "$statsd" + - "$mongo" + - "$rollout" + +# Using english names requires loading an extra module, which is annoying, so +# we prefer the perl names for consistency. +Style/SpecialGlobalVars: + EnforcedStyle: use_perl_names + +# We have common cases where has_ and have_ make sense +Style/PredicateName: + Enabled: true + NamePrefixBlacklist: + - is_ + +# We use %w[ ], not %w( ) because the former looks like an array +Style/PercentLiteralDelimiters: + PreferredDelimiters: + "%w": [] + "%W": [] + +# Allow "trivial" accessors when defined as a predicate? method +Style/TrivialAccessors: + AllowPredicates: true + +Style/Next: + Enabled: false + +# We think it's OK to use the "extend self" module pattern +Style/ModuleFunction: + Enabled: false + +# Disallow extra spacing for token alignment +Style/ExtraSpacing: + AllowForAlignment: false + +################################################################################ +# Performance +################################################################################ + +Performance/RedundantMerge: + Enabled: false + +################################################################################ +# Rails - disable things because we're primarily non-rails +################################################################################ + +Rails/Delegate: + Enabled: false + +Rails/TimeZone: + Enabled: false + +################################################################################ +# Specs - be more lenient on length checks and block styles +################################################################################ + +Metrics/ModuleLength: + Exclude: + - spec/**/* + +Metrics/MethodLength: + Exclude: + - spec/**/* + +Style/ClassAndModuleChildren: + Exclude: + - spec/**/* + +Style/BlockDelimiters: + Exclude: + - spec/**/* diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0fe0935..0000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: ruby -before_script: - - git config --global user.email "ci@codeclimate.com" - - git config --global user.name "Code Climate CI" -rvm: - - 1.9.3 - - 2.1.2 - - jruby diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d991ec9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,122 @@ +# Change log + +## master (unreleased) + +### New features + +### Bug fixes + +### Changes + +### v1.0.9 (2018-10-08) + +* Add deprecation notice to post-install gem message. + +### v1.0.8 (2017-03-20) + +### Bug fixes + +* Lock simplecov to `<= 0.13`, so we can safely use an internal-to-simplecov + method. + ([@bliof](https://github.com/codeclimate/ruby-test-reporter/pull/181)) + + Note: you may need to run `bundle update codeclimate-test-reporter simplecov` + to resolve your bundle. + +### v1.0.7 (2017-03-08) + +### Bug fixes + +* Continue improving our support for sending payloads in contexts where git is + not available. + ([@sullerandras](https://github.com/codeclimate/ruby-test-reporter/pull/177)) + +### v1.0.6 (2017-02-22) + +### Bug fixes + +* Allow Codeship users to send a test coverage report without mounting their + `.git` directory within the docker container where they run their tests + _without_ manually exposing an environment variable. Instead, use an + environment variable already exposed by the CI environment. + ([@c-knowles](https://github.com/codeclimate/ruby-test-reporter/pull/172)) + +### v1.0.5 (2017-01-19) + +### Bug fixes + +* Allow Codeship users to send a test coverage report without mounting their + `.git` directory within the docker container where they run their tests. + ([@antoniobg](https://github.com/codeclimate/ruby-test-reporter/pull/168)) + +### v1.0.4 (2016-12-29) + +### New features + +* Accept path to coverage results as optional first argument ([@jreinert](https://github.com/codeclimate/ruby-test-reporter/pull/158)) + +### Bug fixes + +* Handle multi-command resultsets ([@pbrisbin](https://github.com/codeclimate/ruby-test-reporter/pull/163)) + +## v1.0.3 (2016-11-09) + +### Bug fixes + +* Improve strategy for Ruby 1.9.3 compatibility testing + +## v1.0.2 (2016-11-08) + +### Bug fixes + +* Fixed crashing error when the path to a file in the coverage report + contains a parenthesis. + +## v1.0.1 (2016-11-06) + +### Bug fixes + +* Made sure the gem can be built while running Ruby 1.9.3 + +## v1.0.0 (2016-11-03) + +### Changes + +* Previously, this gem extended `Simplecov` with a custom formatter which posted + results to Code Climate. Now, you are responsible for executing `Simplecov` + yourself. + + * If you already have the following in your test/test_helper.rb + (or spec_helper.rb, cucumber env.rb, etc) + + ```ruby + require 'codeclimate-test-reporter' + CodeClimate::TestReporter.start + ``` + + then you should replace it with + + ```ruby + require 'simplecov' + SimpleCov.start + ``` + +* Previously, the `codeclimate-test-reporter` automatically uploaded results at + the end of your test suite. Now, you are responsible for running + `codeclimate-test-reporter` as a separate step in your build. +* Previously, this gem added some exclusion rules tuned according to feedback + from its users, and now these no longer happen automatically. *If you are + experiencing a discrepancy in test coverage % after switching to the new gem + version, it may be due to missing exclusions. Filtering `vendor`, `spec`, or + `test` directories may fix this issue.* +* Previously, during the execution of multiple test suites, this gem would send + results from the first suite completed. You are now expected to run an + executable packaged with this gem as a separate build step, which means that + whatever results are there (likely the results from the last suite) will be + posted to Code Climate. + +## v0.6.0 (2016-06-27) + +### New features + +* Support `ENV["SSL_CERT_PATH"]` for custom SSL certificates diff --git a/Gemfile b/Gemfile index f9ddb78..b4e2a20 100644 --- a/Gemfile +++ b/Gemfile @@ -1,12 +1,3 @@ -source 'https://rubygems.org' +source "https://rubygems.org" -# Specify your gem's dependencies in codeclimate-test-reporter.gemspec gemspec - -platform :ruby_19 do - gem "pry-debugger", group: :development -end - -platform :ruby_21 do - gem "pry-byebug", group: :development -end diff --git a/Gemfile.ruby-19 b/Gemfile.ruby-19 new file mode 100644 index 0000000..a854aff --- /dev/null +++ b/Gemfile.ruby-19 @@ -0,0 +1,8 @@ +source "https://rubygems.org" + +gem "addressable", "< 2.5" +gem "json", "~> 1.8", "< 2" +gem "rake", "< 12.3.0" +gem "webmock", "< 2.3.1" + +gemspec diff --git a/README.md b/README.md index a099340..2131177 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,67 @@ -# codeclimate-test-reporter +# codeclimate-test-reporter - [DEPRECATED] + +These configuration instructions refer to a language-specific test reporter who is now deprecated in favor of our new unified test reporter client. The [new test reporter](https://docs.codeclimate.com/v1.0/docs/configuring-test-coverage) is faster, distributed as a static binary, has support for parallelized CI builds, and will receive ongoing support by the team here. The existing test reporters for Ruby, Python, PHP, and Javascript are now deprecated. [![Code Climate](https://codeclimate.com/github/codeclimate/ruby-test-reporter/badges/gpa.svg)](https://codeclimate.com/github/codeclimate/ruby-test-reporter) -Collects test coverage data from your Ruby test suite and sends it to Code -Climate's hosted, automated code review service. Based on SimpleCov. +Posts SimpleCov test coverage data from your Ruby test suite to Code Climate's +hosted, automated code review service. Code Climate - [https://codeclimate.com](https://codeclimate.com) ## Installation -This gem requires a user, but not necessarily a paid account, on Code Climate, so if you don't have one the -first step is to signup at: [https://codeclimate.com](https://codeclimate.com). Then: - -1. Add this to your Gemfile: - - gem "codeclimate-test-reporter", group: :test - -1. Start the test reporter **on the very first line** of your `test_helper.rb` or - `spec_helper.rb` file: - - require "codeclimate-test-reporter" - CodeClimate::TestReporter.start - -Then set the `CODECLIMATE_REPO_TOKEN` environment variable when you run your build -on your CI server, and the results will show up in your Code Climate account. - -The `CODECLIMATE_REPO_TOKEN` value is provided after you add your repo to your -Code Climate account by clicking on "Setup Test Coverage" on the right hand side of your feed. +This gem requires a user, but not necessarily a paid account, on Code Climate, +so if you don't have one the first step is to signup at: +[https://codeclimate.com](https://codeclimate.com). Then follow the +instructions on our [documentation site](https://docs.codeclimate.com/docs/test-coverage-ruby). Please contact hello@codeclimate.com if you need any assistance setting this up. -## Configuration - -Certain behaviors of the test reporter can be configured. See the `Configuration` -class for more details. For example, you can change the logging level to not -print info messages: - -*Note that the configuration block must come before TestReporter.start.* - -```ruby -CodeClimate::TestReporter.configure do |config| - config.logger.level = Logger::WARN -end - -CodeClimate::TestReporter.start -``` - -Another example for when your Rails application root is not at the root of the git repository root - -```ruby -CodeClimate::TestReporter.configure do |config| - config.path_prefix = "app_root" #the root of your Rails application relative to the repository root - config.git_dir = "../" #the relative or absolute location of your git root compared to where your tests are run -end - -CodeClimate::TestReporter.start -``` - -## Extending Simplecov with other formatters - -Since ruby-test-reporter 0.4.0 you can use `CodeClimate::TestReporter::Formatter` as a Simplecov formatter directly. Just add the formatter to your Simplecov formatter in addition to the rest of your configuration: - -```ruby -require 'codeclimate-test-reporter' -SimpleCov.start do - formatter SimpleCov::Formatter::MultiFormatter[ - SimpleCov::Formatter::HTMLFormatter, - CodeClimate::TestReporter::Formatter - ] - ... -end -``` - -## Using with [parallel_tests](https://github.com/grosser/parallel_tests) - -Note: This may work with other parallel test runners as long as they run on the same machine. - -Be sure you're using `simplecov` `>= 0.9.0`. - -Add the following to your `test_helper.rb`/`spec_helper.rb` instead of what is normally required. +## Usage -```ruby -require 'simplecov' -require 'codeclimate-test-reporter' -SimpleCov.add_filter 'vendor' -SimpleCov.formatters = [] -SimpleCov.start CodeClimate::TestReporter.configuration.profile +```console +bundle exec rspec && CODECLIMATE_REPO_TOKEN=my_token bundle exec codeclimate-test-reporter ``` -Then after all your tests run, in a rake task or as a build step do: +**Optional**: configure `CODECLIMATE_API_HOST` to point to a self-hosted version of Code Climate. -``` -require 'simplecov' -require 'codeclimate-test-reporter' -CodeClimate::TestReporter::Formatter.new.format(SimpleCov.result) -``` - -## Help! Your gem is raising a ... - -### VCR::Errors::UnhandledHTTPRequestError +## Troubleshooting / FYIs -Add the following to your spec or test helper: +Across the many different testing frameworks, setups, and environments, there +are lots of variables at play. If you're having any trouble with your test +coverage reporting or the results are confusing, please see our full +documentation here: https://docs.codeclimate.com/docs/setting-up-test-coverage - VCR.configure do |config| - # your existing configuration - config.ignore_hosts 'codeclimate.com' - end +## Upgrading from pre-1.0 Versions -### WebMock::NetConnectNotAllowedError +Version `1.0` of this gem introduced new, breaking changes to the way the +test reporter is meant to be executed. The following list summarizes the major +differences: -Add the following to your spec or test helper: +See [the changelog entry for v1.0.0](CHANGELOG.md#v100-2016-11-03) for details. - WebMock.disable_net_connect!(:allow => "codeclimate.com") +## Contributions -### Other communication failures +Patches, bug fixes, feature requests, and pull requests are welcome on the +GitHub page for this project: +[https://github.com/codeclimate/ruby-test-reporter](https://github.com/codeclimate/ruby-test-reporter) -If you are using a web stubbing library similar to VCR or WebMock which prevent external requests during test runs, you will need configure these libraries to allow Code Climate to make external requests. +When making a pull request, please update the [changelog](CHANGELOG.md). -## Contributions +This gem is maintained by Code Climate (hello@codeclimate.com). -Patches, bug fixes, feature requests, and pull requests are welcome on the -GitHub page for this project: [https://github.com/codeclimate/ruby-test-reporter](https://github.com/codeclimate/ruby-test-reporter) +### Release Process -This gem is maintained by Bryan Helmkamp (bryan@codeclimate.com). +* Update the changelog to mark the unreleased changes as part of the new release. +* Update the version.rb with the new version number +* Make a pull request with those changes +* Merge those changes to master +* Check out and pull down the latest master locally +* `rake release` which will + * tag the latest commit based on version.rb + * push to github + * push to rubygems ## Copyright diff --git a/Rakefile b/Rakefile index 8754e40..c92b11e 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,6 @@ require "bundler/gem_tasks" -require 'rspec/core/rake_task' +require "rspec/core/rake_task" RSpec::Core::RakeTask.new(:spec) -task :default => :spec +task default: :spec diff --git a/bin/cc-tddium-post-worker b/bin/cc-tddium-post-worker index dffa4ce..e612f8d 100755 --- a/bin/cc-tddium-post-worker +++ b/bin/cc-tddium-post-worker @@ -1,14 +1,13 @@ #!/usr/bin/env ruby -require 'rubygems' -require 'codeclimate-test-reporter' -require 'tmpdir' +require "codeclimate-test-reporter" +require "tmpdir" if ENV["CODECLIMATE_REPO_TOKEN"] tmpdir = Dir.tmpdir puts "Searching #{tmpdir} for files to POST." coverage_report_files = Dir.glob("#{tmpdir}/codeclimate-test-coverage-*") - if coverage_report_files.size > 0 + if coverage_report_files.any? puts "Found: " puts coverage_report_files.join("\n") client = CodeClimate::TestReporter::Client.new diff --git a/bin/ci b/bin/ci new file mode 100755 index 0000000..cfd7bdb --- /dev/null +++ b/bin/ci @@ -0,0 +1,15 @@ +#!/bin/bash --login + +set -e + +rvm use 1.9.3 +ruby -v +bundle install --gemfile Gemfile.ruby-19 +bundle exec rake + +rvm use 2.2.2 +ruby -v +bundle install +bundle exec rake + +CODECLIMATE_REPO_TOKEN=c4881e09870b0fac1291c93339b36ffe36210a2645c1ad25e52d8fda3943fb4d bundle exec codeclimate-test-reporter diff --git a/bin/codeclimate-test-reporter b/bin/codeclimate-test-reporter new file mode 100755 index 0000000..11a815c --- /dev/null +++ b/bin/codeclimate-test-reporter @@ -0,0 +1,21 @@ +#!/usr/bin/env ruby + +require "codeclimate-test-reporter" + +repo_token = ENV["CODECLIMATE_REPO_TOKEN"] +if repo_token.nil? || repo_token.empty? + STDERR.puts "Cannot post results: environment variable CODECLIMATE_REPO_TOKEN must be set." + exit +end + +COVERAGE_FILE = ARGV.first || "coverage/.resultset.json" + +abort "Coverage results not found" unless File.exist?(COVERAGE_FILE) + +begin + results = JSON.parse(File.read(COVERAGE_FILE)) +rescue JSON::ParserError => e + abort "Error encountered while parsing #{COVERAGE_FILE}: #{e}" +end + +CodeClimate::TestReporter.run(results) diff --git a/circle.yml b/circle.yml new file mode 100644 index 0000000..ee72520 --- /dev/null +++ b/circle.yml @@ -0,0 +1,10 @@ +dependencies: + pre: + - git config --global user.email "ci@codeclimate.com" + - git config --global user.name "Code Climate CI" + override: + - echo "skip" + +test: + override: + - bin/ci diff --git a/codeclimate-test-reporter.gemspec b/codeclimate-test-reporter.gemspec index 1dcf37d..e1b38db 100644 --- a/codeclimate-test-reporter.gemspec +++ b/codeclimate-test-reporter.gemspec @@ -1,29 +1,34 @@ -# coding: utf-8 -lib = File.expand_path('../lib', __FILE__) -$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require "code_climate/test_reporter/version" +require "./lib/code_climate/test_reporter/version" Gem::Specification.new do |spec| - spec.name = "codeclimate-test-reporter" - spec.version = CodeClimate::TestReporter::VERSION - spec.authors = ["Bryan Helmkamp"] - spec.email = ["bryan@brynary.com"] - spec.description = %q{Collects test coverage data from your Ruby test suite and sends it to Code Climate's hosted, automated code review service. Based on SimpleCov.} - spec.summary = %q{Uploads Ruby test coverage data to Code Climate.} - spec.homepage = "" - spec.license = "MIT" + spec.name = "codeclimate-test-reporter" + spec.version = CodeClimate::TestReporter::VERSION + spec.authors = ["Bryan Helmkamp", "Code Climate"] + spec.email = ["bryan@brynary.com", "hello@codeclimate.com"] + spec.description = "Collects test coverage data from your Ruby test suite and sends it to Code Climate's hosted, automated code review service. Based on SimpleCov." + spec.summary = "Uploads Ruby test coverage data to Code Climate." + spec.homepage = "https://github.com/codeclimate/ruby-test-reporter" + spec.license = "MIT" + + spec.files = `git ls-files bin lib config LICENSE.txt README.md`.split($/) + spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }.reject { |f| f == "ci" } - spec.files = `git ls-files`.split($/) - spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } - spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) - spec.require_paths = ["lib"] - spec.required_ruby_version = ">= 1.9" + spec.add_runtime_dependency "simplecov", "<= 0.13" - spec.add_dependency "simplecov", ">= 0.7.1", "< 1.0.0" - spec.add_development_dependency "bundler", "~> 1.3" + spec.add_development_dependency "bundler" + spec.add_development_dependency "pry" spec.add_development_dependency "rake" spec.add_development_dependency "rspec" - spec.add_development_dependency "artifice" - spec.add_development_dependency "pry" + spec.add_development_dependency "webmock" + + spec.post_install_message = %q( + Code Climate's codeclimate-test-reporter gem has been deprecated in favor of + our language-agnostic unified test reporter. The new test reporter is faster, + distributed as a static binary so dependency conflicts never occur, and + supports parallelized CI builds & multi-language CI configurations. + + Please visit https://docs.codeclimate.com/v1.0/docs/configuring-test-coverage + for help setting up your CI process with our new test reporter. + ) end diff --git a/lib/code_climate/test_reporter.rb b/lib/code_climate/test_reporter.rb index c75068f..e4def1d 100644 --- a/lib/code_climate/test_reporter.rb +++ b/lib/code_climate/test_reporter.rb @@ -1,15 +1,23 @@ module CodeClimate module TestReporter + WARNING_MESSAGE = <<-EOS.freeze + This usage of the Code Climate Test Reporter is now deprecated. Since version + 1.0, we now require you to run `SimpleCov` in your test/spec helper, and then + run the provided `codeclimate-test-reporter` binary separately to report your + results to Code Climate. + + More information here: https://github.com/codeclimate/ruby-test-reporter/blob/master/README.md + EOS def self.start - if run? - require "simplecov" - ::SimpleCov.add_filter 'vendor' - ::SimpleCov.formatter = Formatter - ::SimpleCov.start(configuration.profile) do - skip_token CodeClimate::TestReporter.configuration.skip_token - end - end + logger.warn(WARNING_MESSAGE) + exit(1) + end + + def self.run(results) + return unless CodeClimate::TestReporter.run? + formatted_results = CodeClimate::TestReporter::Formatter.new.format(results) + CodeClimate::TestReporter::PostResults.new(formatted_results).post end def self.run? @@ -20,8 +28,8 @@ def self.environment_variable_set? return @environment_variable_set if defined?(@environment_variable_set) @environment_variable_set = !!ENV["CODECLIMATE_REPO_TOKEN"] - unless @environment_variable_set - logger.info("Not reporting to Code Climate because ENV['CODECLIMATE_REPO_TOKEN'] is not set.") + if @environment_variable_set + logger.info("Reporting coverage data to Code Climate.") end @environment_variable_set @@ -52,5 +60,12 @@ def self.logger CodeClimate::TestReporter.configuration.logger end + def self.tddium? + ci_service_data && ci_service_data[:name] == "tddium" + end + + def self.ci_service_data + Ci.service_data + end end end diff --git a/lib/code_climate/test_reporter/calculate_blob.rb b/lib/code_climate/test_reporter/calculate_blob.rb index d5a64de..35e3556 100644 --- a/lib/code_climate/test_reporter/calculate_blob.rb +++ b/lib/code_climate/test_reporter/calculate_blob.rb @@ -1,8 +1,6 @@ module CodeClimate module TestReporter - class CalculateBlob - def initialize(file_path) @file_path = file_path end @@ -11,7 +9,7 @@ def blob_id calculate_with_file or calculate_with_git end - private + private def calculate_with_file File.open(@file_path, "rb") do |file| @@ -28,12 +26,10 @@ def calculate_with_file def calculate_with_git output = `git hash-object -t blob #{@file_path}`.chomp - raise 'ERROR: Failed to calculate blob with git' unless $?.success? + raise "ERROR: Failed to calculate blob with git" unless $?.success? output end - end - end end diff --git a/lib/code_climate/test_reporter/ci.rb b/lib/code_climate/test_reporter/ci.rb index fa19b12..32e3f97 100644 --- a/lib/code_climate/test_reporter/ci.rb +++ b/lib/code_climate/test_reporter/ci.rb @@ -1,89 +1,106 @@ module CodeClimate module TestReporter class Ci - def self.service_data(env = ENV) - if env['TRAVIS'] + if env["TRAVIS"] { name: "travis-ci", - branch: env['TRAVIS_BRANCH'], - build_identifier: env['TRAVIS_JOB_ID'], - pull_request: env['TRAVIS_PULL_REQUEST'] + branch: env["TRAVIS_BRANCH"], + build_identifier: env["TRAVIS_JOB_ID"], + pull_request: env["TRAVIS_PULL_REQUEST"], } - elsif env['CIRCLECI'] + elsif env["CIRCLECI"] { - name: "circlci", - build_identifier: env['CIRCLE_BUILD_NUM'], - branch: env['CIRCLE_BRANCH'], - commit_sha: env['CIRCLE_SHA1'] + name: "circleci", + build_identifier: env["CIRCLE_BUILD_NUM"], + branch: env["CIRCLE_BRANCH"], + commit_sha: env["CIRCLE_SHA1"], } - elsif env['SEMAPHORE'] + elsif env["SEMAPHORE"] { name: "semaphore", - branch: env['BRANCH_NAME'], - build_identifier: env['SEMAPHORE_BUILD_NUMBER'] + branch: env["BRANCH_NAME"], + build_identifier: env["SEMAPHORE_BUILD_NUMBER"], } - elsif env['JENKINS_URL'] + elsif env["JENKINS_URL"] { name: "jenkins", - build_identifier: env['BUILD_NUMBER'], - build_url: env['BUILD_URL'], - branch: env['GIT_BRANCH'], - commit_sha: env['GIT_COMMIT'] + build_identifier: env["BUILD_NUMBER"], + build_url: env["BUILD_URL"], + branch: env["GIT_BRANCH"], + commit_sha: env["GIT_COMMIT"], } - elsif env['TDDIUM'] + elsif env["TDDIUM"] { name: "tddium", - build_identifier: env['TDDIUM_SESSION_ID'], - worker_id: env['TDDIUM_TID'] + build_identifier: env["TDDIUM_SESSION_ID"], + worker_id: env["TDDIUM_TID"], } - elsif env['WERCKER'] + elsif env["WERCKER"] { name: "wercker", - build_identifier: env['WERCKER_BUILD_ID'], - build_url: env['WERCKER_BUILD_URL'], - branch: env['WERCKER_GIT_BRANCH'], - commit_sha: env['WERCKER_GIT_COMMIT'] + build_identifier: env["WERCKER_BUILD_ID"], + build_url: env["WERCKER_BUILD_URL"], + branch: env["WERCKER_GIT_BRANCH"], + commit_sha: env["WERCKER_GIT_COMMIT"], } - elsif env['APPVEYOR'] + elsif env["APPVEYOR"] { name: "appveyor", - build_identifier: env['APPVEYOR_BUILD_ID'], - build_url: env['APPVEYOR_API_URL'], - branch: env['APPVEYOR_REPO_BRANCH'], - commit_sha: env['APPVEYOR_REPO_COMMIT'], - pull_request: env['APPVEYOR_PULL_REQUEST_NUMBER'] + build_identifier: env["APPVEYOR_BUILD_ID"], + build_url: env["APPVEYOR_API_URL"], + branch: env["APPVEYOR_REPO_BRANCH"], + commit_sha: env["APPVEYOR_REPO_COMMIT"], + pull_request: env["APPVEYOR_PULL_REQUEST_NUMBER"], } - elsif env['CI_NAME'] =~ /DRONE/i + elsif env["CI_NAME"] =~ /DRONE/i { name: "drone", - build_identifier: env['CI_BUILD_NUMBER'], - build_url: env['CI_BUILD_URL'], - branch: env['CI_BRANCH'], - commit_sha: env['CI_BUILD_NUMBER'], - pull_request: env['CI_PULL_REQUEST'] + build_identifier: env["CI_BUILD_NUMBER"], + build_url: env["CI_BUILD_URL"], + branch: env["CI_BRANCH"], + commit_sha: env["CI_COMMIT"], + pull_request: env["CI_PULL_REQUEST"], } - elsif env['CI_NAME'] =~ /codeship/i + elsif env["CI_NAME"] =~ /codeship/i { name: "codeship", - build_identifier: env['CI_BUILD_NUMBER'], - build_url: env['CI_BUILD_URL'], - branch: env['CI_BRANCH'], - commit_sha: env['CI_COMMIT_ID'], + build_identifier: env["CI_BUILD_ID"], + # build URL cannot be reconstructed for Codeship since env does not contain project ID + build_url: env["CI_BUILD_URL"], + branch: env["CI_BRANCH"], + commit_sha: env["CI_COMMIT_ID"], + # CI timestamp is not quite equivalent to commited at but there's no equivalent in Codeship + committed_at: env["CI_TIMESTAMP"], } - elsif env['BUILDBOX'] + elsif env["CI_NAME"] =~ /VEXOR/i { - name: "buildbox", - build_identifier: env['BUILDBOX_JOB_ID'], - build_url: env['BUILDBOX_BUILD_URL'], - branch: env['BUILDBOX_BRANCH'], - commit_sha: env['BUILDBOX_COMMIT'] + name: "vexor", + build_identifier: env["CI_BUILD_NUMBER"], + build_url: env["CI_BUILD_URL"], + branch: env["CI_BRANCH"], + commit_sha: env["CI_BUILD_SHA"], + pull_request: env["CI_PULL_REQUEST_ID"], + } + elsif env["BUILDKITE"] + { + name: "buildkite", + build_identifier: env["BUILDKITE_JOB_ID"], + build_url: env["BUILDKITE_BUILD_URL"], + branch: env["BUILDKITE_BRANCH"], + commit_sha: env["BUILDKITE_COMMIT"], + } + elsif env["GITLAB_CI"] + { + name: "gitlab-ci", + build_identifier: env["CI_BUILD_ID"], + branch: env["CI_BUILD_REF_NAME"], + commit_sha: env["CI_BUILD_REF"], } else {} end end - end end end diff --git a/lib/code_climate/test_reporter/client.rb b/lib/code_climate/test_reporter/client.rb index c5b6020..159532e 100644 --- a/lib/code_climate/test_reporter/client.rb +++ b/lib/code_climate/test_reporter/client.rb @@ -4,17 +4,18 @@ module CodeClimate module TestReporter - class Client - DEFAULT_TIMEOUT = 5 # in seconds - USER_AGENT = "Code Climate (Ruby Test Reporter v#{VERSION})" + USER_AGENT = "Code Climate (Ruby Test Reporter v#{CodeClimate::TestReporter::VERSION})".freeze def host ENV["CODECLIMATE_API_HOST"] || "https://codeclimate.com" end + # N.B. Not a generalized solution for posting multiple results + # N.B. Only works with in tandem with additional communication from + # Solano. def batch_post_results(files) uri = URI.parse("#{host}/test_reports/batch") http = http_client(uri) @@ -70,18 +71,18 @@ def post_results(result) end end - private + private def http_client(uri) Net::HTTP.new(uri.host, uri.port).tap do |http| if uri.scheme == "https" http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER - http.ca_file = File.expand_path('../../../../config/cacert.pem', __FILE__) + http.ca_file = ca_file http.verify_depth = 5 end - http.open_timeout = DEFAULT_TIMEOUT # in seconds - http.read_timeout = DEFAULT_TIMEOUT # in seconds + http.open_timeout = CodeClimate::TestReporter.configuration.timeout + http.read_timeout = CodeClimate::TestReporter.configuration.timeout end end @@ -93,7 +94,10 @@ def compress(str) sio.string end + def ca_file + ENV["SSL_CERT_FILE"] || + File.expand_path("../../../../config/cacert.pem", __FILE__) + end end - end end diff --git a/lib/code_climate/test_reporter/configuration.rb b/lib/code_climate/test_reporter/configuration.rb index c8540a1..a98ffbe 100644 --- a/lib/code_climate/test_reporter/configuration.rb +++ b/lib/code_climate/test_reporter/configuration.rb @@ -1,4 +1,4 @@ -require 'logger' +require "logger" module CodeClimate module TestReporter @@ -19,7 +19,9 @@ def self.configuration end class Configuration - attr_accessor :branch, :logger, :profile, :path_prefix, :gzip_request, :git_dir + attr_accessor :branch, :path_prefix, :gzip_request, :git_dir + + attr_writer :logger, :profile, :timeout def initialize @gzip_request = true @@ -37,6 +39,10 @@ def skip_token @skip_token ||= "nocov" end + def timeout + @timeout ||= Client::DEFAULT_TIMEOUT + end + private def default_logger @@ -46,6 +52,5 @@ def default_logger log end end - end end diff --git a/lib/code_climate/test_reporter/exception_message.rb b/lib/code_climate/test_reporter/exception_message.rb index 62451ee..22e578b 100644 --- a/lib/code_climate/test_reporter/exception_message.rb +++ b/lib/code_climate/test_reporter/exception_message.rb @@ -1,15 +1,14 @@ module CodeClimate module TestReporter - class WebMockMessage def library_name "WebMock" end def instructions - <<-STR + <<-STR WebMock.disable_net_connect!(:allow => "codeclimate.com") -STR + STR end end @@ -19,21 +18,20 @@ def library_name end def instructions - <<-STR + <<-STR VCR.configure do |config| # your existing configuration config.ignore_hosts 'codeclimate.com' end -STR + STR end end class ExceptionMessage - HTTP_STUBBING_MESSAGES = { - "VCR::Errors::UnhandledHTTPRequestError" => VCRMessage, - "WebMock::NetConnectNotAllowedError" => WebMockMessage - } + "VCR::Errors::UnhandledHTTPRequestError".freeze => VCRMessage, + "WebMock::NetConnectNotAllowedError".freeze => WebMockMessage, + }.freeze def initialize(exception) @exception = exception @@ -60,7 +58,7 @@ def message parts.join("\n") end - private + private def exception_class @exception.class.to_s diff --git a/lib/code_climate/test_reporter/formatter.rb b/lib/code_climate/test_reporter/formatter.rb index 4da71e9..7b12923 100644 --- a/lib/code_climate/test_reporter/formatter.rb +++ b/lib/code_climate/test_reporter/formatter.rb @@ -12,43 +12,44 @@ module CodeClimate module TestReporter class Formatter - def format(result) - return true unless CodeClimate::TestReporter.run? + def format(results) + simplecov_results = results.map do |command_name, data| + SimpleCov::Result.from_hash(command_name => data) + end - print "Coverage = #{result.source_files.covered_percent.round(2)}%. " + simplecov_result = + if simplecov_results.size == 1 + simplecov_results.first + else + merge_results(simplecov_results) + end - payload = to_payload(result) + payload = to_payload(simplecov_result) PayloadValidator.validate(payload) - if tddium? || ENV["TO_FILE"] - file_path = File.join(Dir.tmpdir, "codeclimate-test-coverage-#{SecureRandom.uuid}.json") - print "Coverage results saved to #{file_path}... " - File.open(file_path, "w") { |file| file.write(payload.to_json) } - else - client = Client.new - print "Sending report to #{client.host} for branch #{Git.branch_from_git_or_ci}... " - client.post_results(payload) - end - puts "done." - true - rescue => ex - puts ExceptionMessage.new(ex).message - false + payload end + private + def partial? - tddium? + CodeClimate::TestReporter.tddium? end def to_payload(result) totals = Hash.new(0) source_files = result.files.map do |file| - totals[:total] += file.lines.count - totals[:covered] += file.covered_lines.count - totals[:missed] += file.missed_lines.count + totals[:total] += file.lines.count + totals[:covered] += file.covered_lines.count + totals[:missed] += file.missed_lines.count + + # Set coverage for all skipped lines to nil + file.skipped_lines.each do |skipped_line| + file.coverage[skipped_line.line_number - 1] = nil + end { - name: short_filename(file.filename), + name: ShortenFilename.new(file.filename).short_filename, blob_id: CalculateBlob.new(file.filename).blob_id, coverage: file.coverage.to_json, covered_percent: round(file.covered_percent, 2), @@ -56,8 +57,8 @@ def to_payload(result) line_counts: { total: file.lines.count, covered: file.covered_lines.count, - missed: file.missed_lines.count - } + missed: file.missed_lines.count, + }, } end @@ -71,43 +72,32 @@ def to_payload(result) partial: partial?, git: Git.info, environment: { - test_framework: result.command_name.downcase, pwd: Dir.pwd, rails_root: (Rails.root.to_s rescue nil), simplecov_root: ::SimpleCov.root, - gem_version: VERSION + gem_version: VERSION, }, - ci_service: ci_service_data + ci_service: CodeClimate::TestReporter.ci_service_data, } end - - def short_filename(filename) - return filename unless ::SimpleCov.root - filename = filename.gsub(::SimpleCov.root, '.').gsub(/^\.\//, '') - apply_prefix filename - end - - def tddium? - ci_service_data && ci_service_data[:name] == "tddium" - end - # Convert to Float before rounding. # Fixes [#7] possible segmentation fault when calling #round on a Rational def round(numeric, precision) Float(numeric).round(precision) end - private - - def apply_prefix filename - prefix = CodeClimate::TestReporter.configuration.path_prefix - return filename if prefix.nil? - "#{prefix}/#{filename}" - end - - def ci_service_data - @ci_service_data ||= Ci.service_data + # Re-implementation of Simplecov::ResultMerger#merged_result, which is + # needed because calling it directly gets you into caching land with files + # on disk. + def merge_results(results) + merged = {} + results.each do |result| + merged = result.original_result.merge_resultset(merged) + end + result = SimpleCov::Result.new(merged) + result.command_name = results.map(&:command_name).sort.join(", ") + result end end end diff --git a/lib/code_climate/test_reporter/git.rb b/lib/code_climate/test_reporter/git.rb index 06c68f9..6522dfb 100644 --- a/lib/code_climate/test_reporter/git.rb +++ b/lib/code_climate/test_reporter/git.rb @@ -1,63 +1,83 @@ module CodeClimate module TestReporter class Git - class << self def info { - head: head, - committed_at: committed_at, - branch: branch_from_git, + head: head_from_git_or_ci, + committed_at: committed_at_from_git_or_ci, + branch: branch_from_git_or_ci, } end + def head_from_git_or_ci + head_from_git || head_from_ci + end + def branch_from_git_or_ci clean_service_branch || clean_git_branch || "master" end + def committed_at_from_git_or_ci + committed_at_from_git || committed_at_from_ci + end + def clean_service_branch ci_branch = String(Ci.service_data[:branch]) - clean = ci_branch.strip.sub(/^origin\//, "") + clean = ci_branch.strip.sub(%r{^origin/}, "") - clean.size > 0 ? clean : nil + !clean.empty? ? clean : nil end def clean_git_branch git_branch = String(branch_from_git) - clean = git_branch.sub(/^origin\//, "") unless git_branch.start_with?("(") + clean = git_branch.sub(%r{^origin/}, "") unless git_branch.start_with?("(") - clean.size > 0 ? clean : nil + !clean.empty? ? clean : nil end private - def head - git("log -1 --pretty=format:'%H'") + def head_from_git + commit_hash = git("log -1 --pretty=format:'%H'") + !commit_hash.empty? ? commit_hash : nil + end + + def head_from_ci + Ci.service_data[:commit_sha] end - def committed_at - committed_at = git('log -1 --pretty=format:%ct') + def committed_at_from_ci + if (value = Ci.service_data[:committed_at]) + value.to_i + end + end + + def committed_at_from_git + committed_at = git("log -1 --pretty=format:%ct") committed_at.to_i.zero? ? nil : committed_at.to_i end def branch_from_git - git('rev-parse --abbrev-ref HEAD').chomp + git("rev-parse --abbrev-ref HEAD").chomp end def git(command) - `git --git-dir=#{git_dir}/.git #{command}` + `git --git-dir="#{git_dir}/.git" #{command}` end def git_dir - return CodeClimate::TestReporter.configuration.git_dir unless CodeClimate::TestReporter.configuration.git_dir.nil? - - root = "." + return configured_git_dir unless configured_git_dir.nil? + rails_git_dir_present? ? Rails.root : "." + end - if defined?(Rails) && File.directory?(File.expand_path(".git", Rails.root)) - root = Rails.root - end + def configured_git_dir + CodeClimate::TestReporter.configuration.git_dir + end - root + def rails_git_dir_present? + const_defined?(:Rails) && Rails.respond_to?(:root) && !Rails.root.nil? && + File.directory?(File.expand_path(".git", Rails.root)) end end end diff --git a/lib/code_climate/test_reporter/payload_validator.rb b/lib/code_climate/test_reporter/payload_validator.rb index 6017d7d..42e216b 100644 --- a/lib/code_climate/test_reporter/payload_validator.rb +++ b/lib/code_climate/test_reporter/payload_validator.rb @@ -20,14 +20,15 @@ def validate true end - private + private def commit_sha commit_sha_from_git || commit_sha_from_ci_service end def committed_at - @payload[:git] && @payload[:git][:committed_at] + (@payload[:git] && @payload[:git][:committed_at]) || + (@payload[:ci_service] && @payload[:ci_service][:committed_at]) end def run_at @@ -54,6 +55,5 @@ def commit_sha_from_ci_service @payload[:ci_service] && @payload[:ci_service][:commit_sha] end end - end end diff --git a/lib/code_climate/test_reporter/post_results.rb b/lib/code_climate/test_reporter/post_results.rb new file mode 100644 index 0000000..8145686 --- /dev/null +++ b/lib/code_climate/test_reporter/post_results.rb @@ -0,0 +1,30 @@ +module CodeClimate + module TestReporter + class PostResults + def initialize(results) + @results = results + end + + def post + if write_to_file? + file_path = File.join(Dir.tmpdir, "codeclimate-test-coverage-#{SecureRandom.uuid}.json") + print "Coverage results saved to #{file_path}... " + File.open(file_path, "w") { |file| file.write(@results.to_json) } + else + client = Client.new + print "Sending report to #{client.host} for branch #{Git.branch_from_git_or_ci}... " + client.post_results(@results) + end + + puts "done." + end + + private + + def write_to_file? + warn "TO_FILE is deprecated, use CODECLIMATE_TO_FILE" if ENV["TO_FILE"] + CodeClimate::TestReporter.tddium? || ENV["CODECLIMATE_TO_FILE"] || ENV["TO_FILE"] + end + end + end +end diff --git a/lib/code_climate/test_reporter/shorten_filename.rb b/lib/code_climate/test_reporter/shorten_filename.rb new file mode 100644 index 0000000..93e67db --- /dev/null +++ b/lib/code_climate/test_reporter/shorten_filename.rb @@ -0,0 +1,24 @@ +module CodeClimate + module TestReporter + class ShortenFilename + def initialize(filename) + @filename = filename + end + + def short_filename + return @filename unless ::SimpleCov.root + apply_prefix @filename.gsub(/^#{Regexp.escape(::SimpleCov.root)}/, ".").gsub(%r{^\./}, "") + end + + private + + def apply_prefix(filename) + if (prefix = CodeClimate::TestReporter.configuration.path_prefix) + File.join(prefix, filename) + else + filename + end + end + end + end +end diff --git a/lib/code_climate/test_reporter/version.rb b/lib/code_climate/test_reporter/version.rb index 0d0558c..0d534a7 100644 --- a/lib/code_climate/test_reporter/version.rb +++ b/lib/code_climate/test_reporter/version.rb @@ -1,5 +1,5 @@ module CodeClimate module TestReporter - VERSION = "0.4.5" + VERSION = "1.0.9".freeze end end diff --git a/lib/codeclimate-test-reporter.rb b/lib/codeclimate-test-reporter.rb index 160efdf..85c1c1f 100644 --- a/lib/codeclimate-test-reporter.rb +++ b/lib/codeclimate-test-reporter.rb @@ -2,6 +2,8 @@ require "code_climate/test_reporter/calculate_blob" require "code_climate/test_reporter/version" require "code_climate/test_reporter/client" +require "code_climate/test_reporter/post_results" +require "code_climate/test_reporter/shorten_filename" require "code_climate/test_reporter/formatter" require "code_climate/test_reporter/configuration" require "code_climate/test_reporter/git" diff --git a/spec/code_climate/test_reporter/calculate_blob_spec.rb b/spec/code_climate/test_reporter/calculate_blob_spec.rb new file mode 100644 index 0000000..a6b361a --- /dev/null +++ b/spec/code_climate/test_reporter/calculate_blob_spec.rb @@ -0,0 +1,29 @@ +require 'spec_helper' + +module CodeClimate::TestReporter + + describe CalculateBlob do + + subject { CalculateBlob.new(fixture) } + let(:fixture) { File.expand_path("../../../fixtures/encoding_test.rb", __FILE__) } + + it 'hex digests content of file' do + expect(subject.blob_id).to_not be_nil + end + + context 'encoding error' do + + let(:fixture) { File.expand_path("../../../fixtures/encoding_test_iso.rb", __FILE__) } + + it 'falls back to git' do + capture_io do + expect(File).to receive(:open).and_raise(EncodingError) + expect(subject.blob_id).to eq('eb82c22dadb9c47a7fed87211623f6856e112f46') + end + end + + end + + end + +end diff --git a/spec/lib/ci_spec.rb b/spec/code_climate/test_reporter/ci_spec.rb similarity index 99% rename from spec/lib/ci_spec.rb rename to spec/code_climate/test_reporter/ci_spec.rb index 99f7d6e..19ad55b 100644 --- a/spec/lib/ci_spec.rb +++ b/spec/code_climate/test_reporter/ci_spec.rb @@ -2,7 +2,6 @@ module CodeClimate::TestReporter describe Ci do - describe '.service_data' do before :each do @env = { diff --git a/spec/code_climate/test_reporter/client_spec.rb b/spec/code_climate/test_reporter/client_spec.rb new file mode 100644 index 0000000..2a9d31c --- /dev/null +++ b/spec/code_climate/test_reporter/client_spec.rb @@ -0,0 +1,40 @@ +require 'spec_helper' + +module CodeClimate::TestReporter + describe Client do + it 'sets the http timeout per configuration' do + new_timeout = 969 + CodeClimate::TestReporter.configure do |config| + config.timeout = new_timeout + end + + response = double(:response, code: 200) + net_http = double(:net_http, request: response) + allow(Net::HTTP).to receive(:new). + and_return(net_http) + + expect(net_http).to receive(:open_timeout=). + with(new_timeout) + expect(net_http).to receive(:read_timeout=). + with(new_timeout) + + Client.new.post_results("") + end + + describe "#batch_post_results" do + let(:uuid) { "my-uuid" } + let(:token) { ENV["CODECLIMATE_REPO_TOKEN"] } + + before { expect(SecureRandom).to receive(:uuid).and_return uuid } + around { |test| Dir.mktmpdir { |dir| Dir.chdir(dir, &test) } } + + it "posts a single file" do + File.write("a", "Something") + requests = capture_requests(stub_request(:post, "http://cc.dev/test_reports/batch")) + Client.new.batch_post_results(["a"]) + + expect(requests.first.body).to eq "--#{uuid}\r\nContent-Disposition: form-data; name=\"repo_token\"\r\n\r\n#{token}\r\n--#{uuid}\r\nContent-Disposition: form-data; name=\"coverage_reports[0]\"; filename=\"a\"\r\nContent-Type: application/json\r\n\r\nSomething\r\n--#{uuid}--\r\n" + end + end + end +end diff --git a/spec/lib/configuration_spec.rb b/spec/code_climate/test_reporter/configuration_spec.rb similarity index 86% rename from spec/lib/configuration_spec.rb rename to spec/code_climate/test_reporter/configuration_spec.rb index f4aa9d7..9133f58 100644 --- a/spec/lib/configuration_spec.rb +++ b/spec/code_climate/test_reporter/configuration_spec.rb @@ -15,6 +15,7 @@ module CodeClimate::TestReporter expect(CodeClimate::TestReporter.configuration.profile).to eq('test_frameworks') expect(CodeClimate::TestReporter.configuration.path_prefix).to be_nil expect(CodeClimate::TestReporter.configuration.skip_token).to eq('nocov') + expect(CodeClimate::TestReporter.configuration.timeout).to eq(Client::DEFAULT_TIMEOUT) end end @@ -60,7 +61,14 @@ module CodeClimate::TestReporter CodeClimate::TestReporter.configure do |config| config.path_prefix = nil end + end + + it 'stores timeout' do + CodeClimate::TestReporter.configure do |config| + config.timeout = 666 + end + expect(CodeClimate::TestReporter.configuration.timeout).to eq(666) end end end diff --git a/spec/code_climate/test_reporter/formatter_spec.rb b/spec/code_climate/test_reporter/formatter_spec.rb new file mode 100644 index 0000000..3bf02ea --- /dev/null +++ b/spec/code_climate/test_reporter/formatter_spec.rb @@ -0,0 +1,62 @@ +require 'spec_helper' +require 'fileutils' + +module CodeClimate::TestReporter + describe Formatter do + it "converts simplecov format to code climate http payload format" do + expect(Git).to receive(:branch_from_git_or_ci).and_return("master") + formatter = Formatter.new + formatted_request = within_repository("fake_project") do + formatter.format( + "RSpec" => { + "coverage" => { + "#{SimpleCov.root}/spec/fixtures/fake_project/fake_project.rb" => [5,3,nil,0] + }, + "timestamp" => Time.now.to_i, + } + ) + end + + expect(formatted_request).to eq( + ci_service: CodeClimate::TestReporter.ci_service_data, + covered_percent: 66.67, + covered_strength: 2.7, + environment: { + gem_version: VERSION, + pwd: "#{Dir.pwd}/spec/fixtures/fake_project", + rails_root: nil, + simplecov_root: SimpleCov.root, + }, + git: { + branch: "master", + committed_at: 1474318896, + head: "7a36651c654c73e7e9a6dfc9f9fa78c5fe37241e", + }, + line_counts: { total: 4, covered: 2, missed: 1 }, + partial: false, + repo_token: "172754c1bf9a3c698f7770b9fb648f1ebb214425120022d0b2ffc65b97dff531", + run_at: Time.now.to_i, + source_files: [ + { + blob_id: "84275f9939456e87efd6932bdf7fe01d52a53116", + coverage: "[5,3,null,0]", + covered_percent: 66.67, + covered_strength: 2.7, + line_counts: { total: 4, covered: 2, missed: 1 }, + name: "spec/fixtures/fake_project/fake_project.rb", + } + ], + ) + end + + it "addresses Issue #7" do + simplecov_result = load_resultset("issue_7", %r{^.*/i18n-tasks/}) + formatter = Formatter.new + formatted_request = within_repository("issue_7") do + formatter.format(simplecov_result) + end + + expect(formatted_request[:covered_percent]).to be_within(1.0).of(94) + end + end +end diff --git a/spec/code_climate/test_reporter/git_spec.rb b/spec/code_climate/test_reporter/git_spec.rb new file mode 100644 index 0000000..d9b0334 --- /dev/null +++ b/spec/code_climate/test_reporter/git_spec.rb @@ -0,0 +1,118 @@ +require 'spec_helper' + +module CodeClimate::TestReporter + describe Git do + describe '.info' do + it 'returns a hash with git information.' do + expected_git_hash = { + head: `git log -1 --pretty=format:'%H'`, + committed_at: `git log -1 --pretty=format:%ct`.to_i, + branch: Git.send(:branch_from_git) + } + + expect(Git.info).to include expected_git_hash + end + end + + describe 'git' do + it 'should quote the git repository directory' do + path = '/path/to/foo bar' + + allow(CodeClimate::TestReporter.configuration).to receive(:git_dir).and_return path + expect(Git).to receive(:`).once.with "git --git-dir=\"#{path}/.git\" help" + + Git.send :git, 'help' + end + + context 'ensure logic that replies on Rails is robust in non-rails environments' do + before :all do + module ::Rails; end + end + + after :all do + Object.send(:remove_const, :Rails) + end + + after :each do + Git.send :git, 'help' + end + + it 'will check if constant Rails is defined' do + expect(Git).to receive(:configured_git_dir).once.and_return(nil) + end + + it 'will not call method "root" (a 3rd time) if constant Rails is defined but does not respond to root' do + expect(Git).to receive(:configured_git_dir).once.and_return(nil) + expect(Rails).to receive(:root).twice.and_return('/path') + end + + it 'will call rails root if constant Rails is defined and root method is defined' do + module ::Rails + def self.root + '/path' + end + end + expect(Git).to receive(:configured_git_dir).once.and_return(nil) + expect(Rails).to receive(:root).twice.and_return('/path') + end + end + end + + describe 'branch_from_git_or_ci' do + it 'returns the branch from ci' do + allow(Ci).to receive(:service_data).and_return({branch: 'ci-branch'}) + + expect(Git.branch_from_git_or_ci).to eq 'ci-branch' + end + + it 'returns the branch from git if there is no ci branch' do + allow(Ci).to receive(:service_data).and_return({}) + + expect(Git.branch_from_git_or_ci).to eq Git.clean_git_branch + end + + it 'returns master otherwise' do + allow(Ci).to receive(:service_data).and_return({}) + allow(Git).to receive(:branch_from_git).and_return(nil) + + expect(Git.branch_from_git_or_ci).to eq 'master' + end + end + + describe 'head_from_git_or_ci' do + it 'returns the head sha from git' do + expect(Git).to receive(:git).with("log -1 --pretty=format:'%H'").and_return("1234") + + expect(Git.head_from_git_or_ci).to eq '1234' + end + + it 'returns the head sha from ci if git is not available' do + expect(Git).to receive(:git).with("log -1 --pretty=format:'%H'").and_return("") + expect(Ci).to receive(:service_data).and_return({commit_sha: "4567"}) + + expect(Git.head_from_git_or_ci).to eq '4567' + end + end + + describe 'committed_at_from_git_or_ci' do + it 'returns the committed_at from git' do + expect(Git.committed_at_from_git_or_ci).to eq Git.send(:committed_at_from_git) + end + + it 'returns the committed_at from ci if there is no git committed_at' do + expect(Git).to receive(:committed_at_from_git).and_return(nil) + allow(Ci).to receive(:service_data).and_return({committed_at: '1484768698'}) + + expect(Git.committed_at_from_git_or_ci).to eq 1484768698 + end + + it 'returns nil when there is neither' do + expect(Git).to receive(:committed_at_from_git).and_return(nil) + allow(Ci).to receive(:service_data).and_return({}) + + expect(Git.committed_at_from_git_or_ci).to be_nil + end + end + + end +end diff --git a/spec/lib/payload_validator_spec.rb b/spec/code_climate/test_reporter/payload_validator_spec.rb similarity index 89% rename from spec/lib/payload_validator_spec.rb rename to spec/code_climate/test_reporter/payload_validator_spec.rb index 50ef7db..fe47452 100644 --- a/spec/lib/payload_validator_spec.rb +++ b/spec/code_climate/test_reporter/payload_validator_spec.rb @@ -37,6 +37,15 @@ module CodeClimate::TestReporter }.to_not raise_error end + it "does not raise if there's a committed_at in ci_service data" do + payload[:git][:committed_at] = nil + payload[:ci_service] = {} + payload[:ci_service][:committed_at] = Time.now.to_i.to_s + expect { + PayloadValidator.validate(payload) + }.to_not raise_error + end + it "raises when there is no committed_at" do payload[:git][:committed_at] = nil expect { diff --git a/spec/code_climate/test_reporter/shorten_filename_spec.rb b/spec/code_climate/test_reporter/shorten_filename_spec.rb new file mode 100644 index 0000000..db2be81 --- /dev/null +++ b/spec/code_climate/test_reporter/shorten_filename_spec.rb @@ -0,0 +1,54 @@ +require 'spec_helper' +require 'fileutils' + +module CodeClimate::TestReporter + describe ShortenFilename do + let(:shorten_filename){ ShortenFilename.new('file1') } + let(:shorten_filename_with_simplecov_root) { ShortenFilename.new("#{::SimpleCov.root}/file1") } + let(:shorten_filename_with_double_simplecov_root) { ShortenFilename.new("#{::SimpleCov.root}/#{::SimpleCov.root}/file1") } + let(:root) { "/Users/oink/my-great-project" } + + before do + allow(::SimpleCov).to receive(:root).and_return(root) + end + + describe '#short_filename' do + it 'should return the filename of the file relative to the SimpleCov root' do + expect(shorten_filename.short_filename).to eq('file1') + expect(shorten_filename_with_simplecov_root.short_filename).to eq('file1') + end + + context "when the root has parentheses in it" do + let(:root) { "/Users/oink/my-great-project/hello world (ok)" } + + it 'should return the filename of the file relative to the SimpleCov root' do + expect(shorten_filename.short_filename).to eq('file1') + expect(shorten_filename_with_simplecov_root.short_filename).to eq('file1') + end + end + + context "with path prefix" do + before do + CodeClimate::TestReporter.configure do |config| + config.path_prefix = 'custom' + end + end + + after do + CodeClimate::TestReporter.configure do |config| + config.path_prefix = nil + end + end + + it 'should include the path prefix if set' do + expect(shorten_filename.short_filename).to eq('custom/file1') + expect(shorten_filename_with_simplecov_root.short_filename).to eq('custom/file1') + end + end + + it "should not strip the subdirectory if it has the same name as the root" do + expect(shorten_filename_with_double_simplecov_root.short_filename).to eq("#{::SimpleCov.root}/file1") + end + end + end +end diff --git a/spec/lib/test_reporter_spec.rb b/spec/code_climate/test_reporter_spec.rb similarity index 86% rename from spec/lib/test_reporter_spec.rb rename to spec/code_climate/test_reporter_spec.rb index c074861..09decbf 100644 --- a/spec/lib/test_reporter_spec.rb +++ b/spec/code_climate/test_reporter_spec.rb @@ -1,8 +1,13 @@ require 'spec_helper' describe CodeClimate::TestReporter do + let(:logger) { double.as_null_object } let(:reporter) { CodeClimate::TestReporter.dup } + before do + allow(CodeClimate::TestReporter.configuration).to receive(:logger).and_return(logger) + end + describe '.run_on_current_branch?' do it 'returns true if there is no branch configured' do allow(reporter).to receive(:configured_branch).and_return(nil) @@ -24,7 +29,7 @@ end it 'logs a message if false' do - expect_any_instance_of(Logger).to receive(:info) + expect(logger).to receive(:info) allow(reporter).to receive(:current_branch).and_return("another-branch") allow(reporter).to receive(:configured_branch).and_return(:master) diff --git a/spec/fixtures/fake_project.tar.gz b/spec/fixtures/fake_project.tar.gz new file mode 100644 index 0000000..3c4cb72 Binary files /dev/null and b/spec/fixtures/fake_project.tar.gz differ diff --git a/spec/fixtures/issue_7.tar.gz b/spec/fixtures/issue_7.tar.gz new file mode 100644 index 0000000..4ebd9b4 Binary files /dev/null and b/spec/fixtures/issue_7.tar.gz differ diff --git a/spec/fixtures/issue_7_resultset.json b/spec/fixtures/issue_7_resultset.json new file mode 100644 index 0000000..f7d779d --- /dev/null +++ b/spec/fixtures/issue_7_resultset.json @@ -0,0 +1,24244 @@ +{ + "../../bin/i18n-tasks": { + "coverage": { + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/cli.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 26, + null, + null, + 1, + null, + 1, + 2, + null, + null, + 1, + 1, + 1, + 0, + 0, + null, + null, + 1, + 1, + 0, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + 1, + 1, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 25, + null, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 0, + 0, + null, + null, + 1, + 25, + 24, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 1, + 2, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/base_task.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command_error.rb": [ + null, + 1, + 1, + null, + null, + null, + 1, + 1, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/split_key.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 3, + 3, + 3, + null, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/key_pattern_matching.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/logging.rb": [ + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/plural_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/references.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/html_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/used_keys.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + null, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/file_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/key_occurrences.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/occurrence.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/relative_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/occurrence_from_position.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_key_literals.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_call_finder.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner_multiplexer.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_finder.rb": [ + null, + 1, + null, + null, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_reader.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_reader.rb": [ + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/ignore_keys.rb": [ + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/missing_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/unused_keys.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/google_translation.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + 1, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_pathname.rb": [ + null, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_list.rb": [ + null, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/string_interpolation.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + null, + 1, + null, + 1, + null, + 1, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/node.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/traversal.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/siblings.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/nodes.rb": [ + null, + null, + 1, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/pattern_router.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/conservative_router.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_formats.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 2, + null, + null, + 1, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/json_adapter.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/yaml_adapter.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/configuration.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 3, + 1, + 1, + 1, + 1, + 0, + 0, + null, + null, + null, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/stats.rb": [ + null, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/commands.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/dsl.rb": [ + null, + 1, + 1, + 1, + 1, + 13, + 36, + 13, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + 25, + 25, + 79, + 25, + null, + 0, + null, + null, + null, + 1, + 61, + 12, + null, + 49, + null, + null, + null, + 1, + 1, + null, + null, + 1, + 87, + null, + null, + null, + 1, + 62, + null, + null, + null, + 1, + 36, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/collection.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 9, + 9, + 9, + 9, + 9, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/common.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/locales.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/locale.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 2, + 2, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/enum.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + 2, + 2, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/health.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/missing.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/usages.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/eq_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/data.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/tree.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/meta.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/xlsx.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commander.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/terminal.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/base.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/spreadsheet.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/tmp/test_codebase/lib/test_i18n_plugin.rb": [ + null, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1 + ], + "/home/glebm/repos/glebm/i18n-tasks/tmp/test_codebase/lib/my_custom_scanner.rb": [ + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1 + ] + }, + "timestamp": 1482802115 + }, + "../../bin/i18n-tasks --version": { + "coverage": { + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/cli.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 26, + null, + null, + 1, + null, + 1, + 2, + null, + null, + 1, + 1, + 1, + 0, + 0, + null, + null, + 1, + 1, + 0, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 25, + null, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 0, + 0, + null, + null, + 1, + 25, + 24, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 1, + 2, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/base_task.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command_error.rb": [ + null, + 1, + 1, + null, + null, + null, + 1, + 1, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/split_key.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 3, + 3, + 3, + null, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/key_pattern_matching.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/logging.rb": [ + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/plural_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/references.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/html_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/used_keys.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + null, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/file_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/key_occurrences.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/occurrence.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/relative_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/occurrence_from_position.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_key_literals.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_call_finder.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner_multiplexer.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_finder.rb": [ + null, + 1, + null, + null, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_reader.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_reader.rb": [ + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/ignore_keys.rb": [ + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/missing_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/unused_keys.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/google_translation.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + 1, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_pathname.rb": [ + null, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_list.rb": [ + null, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/string_interpolation.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + null, + 1, + null, + 1, + null, + 1, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/node.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/traversal.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/siblings.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/nodes.rb": [ + null, + null, + 1, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/pattern_router.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/conservative_router.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_formats.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 2, + null, + null, + 1, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/json_adapter.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/yaml_adapter.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/configuration.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 3, + 1, + 1, + 1, + 1, + 0, + 0, + null, + null, + null, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/stats.rb": [ + null, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/commands.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/dsl.rb": [ + null, + 1, + 1, + 1, + 1, + 13, + 36, + 13, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + 25, + 25, + 79, + 25, + null, + 0, + null, + null, + null, + 1, + 61, + 12, + null, + 49, + null, + null, + null, + 1, + 1, + null, + null, + 1, + 87, + null, + null, + null, + 1, + 62, + null, + null, + null, + 1, + 36, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/collection.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 9, + 9, + 9, + 9, + 9, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/common.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/locales.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/locale.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 2, + 2, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/enum.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + 2, + 2, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/health.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/missing.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/usages.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/eq_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/data.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/tree.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/meta.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/xlsx.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commander.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/terminal.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/base.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/spreadsheet.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/tmp/test_codebase/lib/test_i18n_plugin.rb": [ + null, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1 + ], + "/home/glebm/repos/glebm/i18n-tasks/tmp/test_codebase/lib/my_custom_scanner.rb": [ + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1 + ] + }, + "timestamp": 1482802115 + }, + "RSpec": { + "coverage": { + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 141, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 1, + 2, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/base_task.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 51, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command_error.rb": [ + null, + 1, + 1, + null, + null, + null, + 1, + 1, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/split_key.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 17981, + 17981, + 17981, + 17980, + 20749, + 20749, + 20749, + 15899, + 15899, + null, + null, + 17980, + null, + null, + 1, + 199, + 821, + 199, + null, + null, + null, + null, + 1, + 18179, + 18179, + 18179, + 18179, + 18179, + 18179, + 150442, + 11821, + 3195, + null, + 138621, + 138621, + 174, + 174, + null, + 138621, + null, + null, + 9553, + 2280, + null, + null, + 1, + 3, + 3, + 3, + null, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/key_pattern_matching.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 20, + null, + 3, + null, + 63, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 112, + 112, + null, + null, + 1, + null, + null, + null, + null, + 129, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/logging.rb": [ + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 141, + 0, + null, + null, + null, + 1, + 29, + null, + null, + 1, + 0, + null, + null, + 1, + 50, + null, + null, + 1, + 62, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/plural_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 17, + 150, + 150, + 20, + 20, + 20, + null, + 17, + null, + null, + null, + null, + null, + 1, + 1480, + 196, + 196, + 196, + 196, + 195, + null, + 1, + null, + null, + null, + 1, + 905, + null, + null, + 1, + 541, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/references.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + 1, + 3159, + 63, + 63, + 63, + 63, + 63, + 63, + 180, + 5627, + 113, + 95, + null, + 18, + null, + null, + null, + 63, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 95, + 95, + 95, + 95, + 34, + null, + 61, + null, + 193, + null, + 95, + 95, + null, + null, + null, + null, + 1, + 95, + 95, + 98, + null, + 95, + 95, + null, + null, + null, + null, + null, + null, + null, + 1, + 18, + 18, + 18, + 18, + null, + null, + null, + null, + null, + 1, + 40, + 69, + 309, + 5, + null, + null, + null, + null, + 69, + null, + null, + 152, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/html_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 6, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/used_keys.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 40, + 40, + 131, + 102, + 131, + 40, + 40, + 40, + 40, + 40, + null, + null, + null, + 1, + 45, + null, + 45, + 3, + 105, + null, + null, + null, + null, + null, + 45, + null, + null, + 1, + 26, + 26, + 26, + 26, + 26, + 26, + null, + 74, + 0, + null, + null, + 74, + null, + null, + null, + null, + 26, + null, + null, + null, + null, + 1, + null, + 23, + 23, + 0, + 0, + null, + 23, + 0, + 0, + null, + 23, + 0, + 0, + null, + 23, + 64, + null, + null, + 1, + 97, + 97, + 291, + null, + 97, + 97, + 97, + null, + null, + null, + null, + 1, + 74, + null, + null, + 1, + 74, + null, + null, + null, + 1, + 465, + null, + null, + 1, + null, + null, + null, + 1, + 71, + null, + null, + null, + null, + 1, + null, + null, + 5, + 5, + 289, + null, + 21, + 21, + 21, + null, + 5, + 465, + null, + null, + null, + null, + null, + null, + 1, + 21, + 21, + 21, + 116, + 74, + 25, + 25, + 49, + 37, + 37, + null, + 12, + null, + null, + 21, + 21, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 26, + null, + null, + null, + null, + null, + null, + null, + 1, + 825, + 825, + 825, + 152, + 57, + null, + 768, + null, + null, + null, + null, + 1, + 52, + null, + null, + null, + 1, + 1765, + 19, + null, + 1746, + null, + null, + null, + null, + 1, + null, + null, + null, + 26, + null, + null, + null, + null, + null, + 1, + 52, + null, + null, + null, + 1, + null, + 26, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + 44, + 44, + 44, + 130, + null, + null, + null, + 1, + null, + null, + null, + 1, + 80, + 80, + 80, + 858, + 858, + 858, + 838, + 838, + 838, + 838, + 822, + null, + 80, + null, + 0, + null, + null, + null, + null, + null, + 1, + 838, + 78, + null, + null, + 1, + 858, + 858, + null, + null, + 1, + null, + 1, + 838, + 653, + null, + 185, + null, + null, + null, + 1, + 78, + null, + null, + 1, + 2, + 63, + 2, + null, + null, + 1, + 61, + null, + null, + 1, + null, + null, + 61, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/file_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 93, + 93, + 93, + null, + null, + null, + 1, + null, + 375, + 76, + 1194, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 375, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 75, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/key_occurrences.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + 1, + 2385, + 2385, + null, + null, + 1, + 6, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + 1184, + 27, + 1183, + 1183, + 1183, + 1183, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/occurrence.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1286, + 1286, + 1286, + 1286, + 1286, + 1286, + 1286, + null, + null, + 1, + 0, + null, + null, + 1, + 9, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 142, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/relative_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1041, + 125, + 125, + 125, + null, + 125, + 125, + 125, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + null, + 354, + 125, + 164, + null, + null, + null, + null, + null, + 1, + 125, + 125, + 125, + null, + 27, + null, + null, + 98, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/occurrence_from_position.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 879, + 879, + 879, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_key_literals.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 87, + null, + null, + null, + null, + null, + 1, + 1774, + 1774, + 1774, + null, + null, + 1, + 1, + null, + 1, + 655, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 26, + 26, + 26, + 26, + null, + null, + 1, + null, + null, + null, + null, + 1, + 235, + 235, + null, + 235, + 481, + null, + null, + 2088, + 235, + null, + 260, + null, + null, + 25, + 25, + null, + null, + 25, + null, + 25, + null, + 235, + null, + 0, + null, + null, + null, + null, + null, + null, + 1, + 506, + 1012, + 394, + 394, + 117, + 38, + null, + 38, + 38, + null, + 117, + 19, + null, + null, + 394, + null, + 174, + null, + 220, + null, + 394, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 234, + 310, + 310, + 310, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 601, + 453, + 148, + 0, + 148, + 0, + 148, + null, + null, + null, + null, + null, + 19, + null, + 19, + null, + 129, + null, + 50, + 29, + null, + 21, + null, + 17, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 19, + 38, + 38, + null, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 19, + 19, + null, + 38, + null, + null, + 19, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 394, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 260, + 260, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_call_finder.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 26, + 26, + 26, + null, + null, + null, + null, + null, + 1, + 260, + 260, + null, + 260, + null, + null, + null, + null, + null, + 1, + 260, + 260, + 506, + 506, + null, + 260, + null, + null, + 1, + 1281, + 1281, + null, + 1281, + null, + null, + 1, + 9685, + 9685, + null, + null, + 10533, + 506, + null, + 9179, + null, + null, + null, + null, + 1, + 114505, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner_multiplexer.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + 27, + null, + null, + null, + null, + null, + null, + 1, + 27, + null, + null, + 1, + null, + null, + 1, + 27, + 27, + 27, + null, + 76, + 76, + 76, + 76, + null, + null, + 27, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 42, + 42, + 42, + null, + null, + null, + null, + null, + null, + 1, + null, + 82, + 82, + 82, + 82, + 82, + null, + 97, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 1, + 84, + 84, + 84, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 77, + null, + null, + null, + null, + 1, + 142, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_finder.rb": [ + null, + 1, + null, + null, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 90, + 90, + 90, + 90, + null, + null, + null, + null, + null, + null, + null, + 1, + 478, + null, + null, + null, + 1, + 69, + 184, + 69, + 69, + 1039, + 1039, + 1039, + 1039, + 1039, + 728, + null, + 311, + null, + null, + 69, + null, + null, + 1, + null, + null, + null, + null, + 1, + 22331, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_reader.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 41, + 41, + 41, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 377, + 615, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_reader.rb": [ + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 225, + 450, + 225, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/ignore_keys.rb": [ + null, + 1, + null, + null, + null, + 1, + 1092, + null, + null, + null, + null, + null, + 1, + 1092, + 1092, + 1092, + 20, + 20, + 20, + 18, + 2, + null, + 2, + 6, + null, + 20, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/missing_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 18, + null, + null, + 1, + 17, + null, + null, + null, + null, + 1, + 17, + 17, + 17, + 17, + 34, + null, + null, + null, + 1, + 2, + 2, + 2, + null, + null, + null, + 1, + 18, + null, + 18, + 14, + null, + 18, + null, + 11, + 12, + null, + null, + 18, + null, + null, + 1, + 17, + 23, + null, + null, + null, + null, + 1, + null, + 982, + 26, + null, + 143, + 143, + 143, + null, + 143, + null, + null, + null, + null, + 1, + null, + 1072, + 23, + null, + null, + 1, + 2, + null, + 80, + 80, + 2, + null, + null, + 1, + 2054, + null, + null, + null, + null, + null, + 1, + 5, + 5, + 5, + 8, + 8, + 157, + 136, + 51, + null, + 85, + null, + 136, + null, + null, + 5, + null, + 85, + 5, + 5, + 85, + null, + null, + 5, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/unused_keys.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 6, + 18, + null, + null, + null, + null, + 1, + 12, + 12, + null, + 556, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/google_translation.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 8, + null, + 8, + 1, + 7, + 2, + null, + 1, + 11, + 1, + null, + null, + null, + null, + 1, + 2, + 2, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 8, + null, + null, + null, + null, + null, + 1, + 2, + 2, + 2, + null, + null, + null, + null, + 1, + 10, + null, + null, + 5, + null, + 6, + null, + null, + null, + null, + null, + null, + null, + 1, + 12, + null, + null, + 13, + null, + 6, + null, + 3, + null, + null, + null, + 1, + 1, + null, + null, + null, + 1, + 6, + null, + null, + null, + null, + null, + 1, + 6, + 3, + 6, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_pathname.rb": [ + null, + 1, + 1, + 1, + 1, + 262, + null, + null, + 1, + null, + 1, + 262, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_list.rb": [ + null, + 1, + 1, + 1, + null, + null, + 1, + 56, + 56, + 14, + 42, + 42, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/string_interpolation.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 188, + 188, + 940, + 940, + null, + 188, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 46, + 46, + 46, + 46, + 46, + 46, + 46, + 46, + 2548, + null, + null, + 1, + 335, + null, + null, + 1, + 43, + 85, + null, + null, + null, + 1, + 2124, + null, + null, + 1, + 196, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 2094, + null, + null, + null, + 1, + 3, + 3, + 3, + 3, + null, + 6, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 56, + 56, + 56, + 56, + 56, + 25, + null, + 31, + null, + null, + null, + null, + 1, + 3472, + 3472, + 3472, + null, + null, + null, + null, + 1, + null, + null, + 1, + 33, + 33, + 43, + null, + 33, + 33, + null, + null, + 1, + 2, + null, + null, + 1, + 13, + 13, + 13, + 13, + 13, + null, + null, + null, + 1, + 2, + 3, + 3, + 3, + 3, + null, + null, + null, + 1, + null, + null, + 1, + 68, + 68, + 68, + null, + null, + null, + 1, + null, + 34, + null, + 34, + 34, + 34, + 39, + 34, + 34, + 44, + null, + null, + 34, + 34, + null, + null, + 1, + 2124, + 2124, + 2124, + null, + null, + 1, + 172, + 63, + null, + null, + 1, + 3, + 3, + 3, + null, + 3, + null, + null, + 1, + null, + null, + null, + 1, + null, + 23, + 23, + 23, + 23, + 37, + null, + 1, + null, + 1, + null, + 1, + null, + 142, + null, + 97, + null, + 97, + 2555, + null, + 91, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/node.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 47508, + 47508, + 47508, + 47508, + 47508, + 47508, + null, + null, + 1, + 39358, + null, + null, + 1, + 39358, + null, + null, + 1, + 49502, + null, + 14281, + null, + 32183, + null, + 3038, + null, + 49502, + null, + null, + 1, + 33434, + 33434, + 33432, + null, + null, + 1, + 1555, + null, + null, + 1, + 31803, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 37095, + null, + null, + 1, + 34477, + null, + null, + 1, + 6534, + null, + null, + 1, + 613, + null, + null, + 1, + 3425, + null, + null, + 1, + 2124, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 23021, + 23021, + 23021, + null, + null, + 1, + 7314, + 7148, + 5273, + null, + null, + 1, + 375, + 1510, + 375, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 46, + null, + null, + 1, + 1896, + 1896, + 1896, + 0, + 1896, + 1151, + null, + 745, + null, + null, + null, + null, + 1, + 1, + null, + 1, + 4, + 0, + null, + null, + 4, + 8, + null, + 6, + null, + null, + 1, + 3, + 0, + null, + 3, + null, + null, + null, + 1, + null, + 1, + 49502, + 49502, + null, + null, + 1, + null, + 1, + 4462, + 4462, + 1891, + null, + 2571, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/traversal.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 940, + null, + null, + 1, + 979, + 934, + 26972, + null, + 932, + null, + null, + 1, + 257, + 205, + 205, + 162, + 162, + 26, + 26, + null, + 136, + null, + null, + 205, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 26826, + 26824, + 27070, + 27068, + 11319, + 25884, + null, + null, + 26820, + null, + null, + null, + 1, + 555, + 555, + 11536, + 443, + null, + null, + 1, + 81, + 1333, + null, + null, + 1, + 1, + 8, + null, + null, + 1, + 13, + 23, + 2, + null, + null, + 1, + 269, + 824, + 13, + null, + null, + null, + null, + null, + null, + 1, + 1789, + 1789, + 6866, + 3759, + null, + 3759, + null, + null, + 1789, + null, + null, + null, + null, + 1, + 1128, + 1128, + 2904, + 2693, + null, + null, + 211, + null, + null, + 1339, + 1128, + null, + null, + null, + 1, + 180, + 180, + 180, + 7610, + 2071, + 5481, + 3606, + null, + null, + null, + 180, + 6657, + null, + null, + null, + null, + 1, + 1, + 0, + 0, + 0, + null, + null, + 4, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + null, + 190, + 190, + 188, + 188, + 354, + 188, + null, + null, + null, + null, + null, + null, + null, + 11, + 11, + 0, + null, + 11, + 190, + 190, + null, + 11, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/siblings.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 21801, + 21801, + 57603, + 57603, + null, + null, + 1, + 14298, + null, + null, + 1, + 42, + 42, + 42, + null, + null, + 1, + 3, + 3, + 9, + 3, + 3, + 1, + null, + 2, + null, + null, + 3, + null, + null, + 1, + 42, + 42, + null, + null, + null, + 1, + 10592, + 10592, + 10592, + 10592, + null, + null, + 1, + null, + null, + 1, + 5097, + 5097, + 5097, + null, + 5097, + 2937, + 1435, + 1435, + null, + 2937, + 1, + 1, + null, + 2937, + null, + 2160, + 2160, + null, + 5097, + 5097, + null, + null, + 1, + null, + null, + null, + 1, + 212, + 212, + 212, + null, + null, + 1, + 7356, + 7356, + 7356, + null, + 7356, + 7356, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 903, + 903, + 2777, + null, + 903, + null, + null, + 1, + 16, + null, + null, + 1, + 7, + null, + null, + 1, + 40, + null, + null, + 1, + 7, + null, + null, + 1, + 40, + null, + null, + 1, + 51, + 39, + 517, + 39, + null, + null, + null, + 1, + 3003, + 609, + 609, + 609, + 609, + 609, + 326, + 305, + null, + 21, + 21, + null, + 283, + 152, + null, + null, + 2394, + 2394, + null, + null, + null, + null, + 1, + 7, + 216, + null, + null, + null, + 1, + 45, + 2949, + null, + null, + 1, + null, + 1, + 47, + 186, + 186, + null, + null, + null, + null, + null, + 1, + 52, + 5048, + null, + null, + null, + 1, + 22, + null, + null, + 1, + 1, + null, + 1, + 10, + null, + null, + 1, + 141, + 141, + 141, + 141, + null, + 141, + null, + null, + null, + null, + 1, + 45, + 45, + 1969, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 95, + 95, + 95, + 95, + 95, + null, + null, + null, + null, + null, + null, + 1, + 2128, + 2128, + 6582, + 2128, + null, + null, + 1, + null, + null, + 1, + 1, + 1, + 7, + null, + null, + null, + null, + 1, + null, + 1, + 2269, + 0, + null, + 2269, + 0, + null, + 2269, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/nodes.rb": [ + null, + null, + 1, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 21937, + null, + null, + 1, + null, + 1, + 205, + null, + null, + 1, + 14298, + null, + null, + 1, + 14298, + 14298, + 42044, + 14298, + null, + null, + 1, + 969, + 902, + 773, + null, + 129, + 2798, + null, + null, + null, + 1, + 1, + null, + 1, + 2, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + 212, + 212, + 212, + null, + null, + 1, + 7356, + 7356, + 7356, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 1, + null, + 1, + 272, + 136, + 3372, + null, + null, + null, + 1, + null, + 1, + null, + 1, + 15059, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/pattern_router.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 25, + 25, + null, + null, + null, + null, + null, + 1, + 18, + 18, + 18, + 18, + 817, + 285, + 285, + 285, + 293, + 285, + null, + 0, + null, + null, + 18, + 24, + 459, + null, + null, + null, + 1, + null, + 1, + 61, + 36, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/conservative_router.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + 1, + 23, + 23, + 23, + 23, + null, + null, + 1, + 29, + 64, + 29, + 29, + 767, + null, + 767, + 455, + 234, + null, + 767, + 767, + 648, + null, + 119, + null, + null, + null, + 29, + null, + 361, + 14, + 16, + null, + null, + null, + 29, + 939, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 988, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_formats.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 85, + null, + null, + 1, + 141, + null, + null, + 1, + 226, + null, + 0, + null, + null, + 1, + null, + 1, + 85, + null, + null, + 1, + 141, + null, + null, + 1, + 129, + null, + null, + 1, + 43, + 43, + 43, + null, + null, + null, + null, + 43, + 41, + 82, + null, + null, + 1, + null, + null, + 1, + 2, + null, + null, + 1, + null, + 177, + null, + null, + 172, + null, + null, + 1, + 0, + null, + null, + 1, + 226, + null, + 253, + null, + null, + null, + 226, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/json_adapter.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 15, + null, + null, + null, + 1, + 12, + null, + null, + 1, + null, + 1, + 27, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/yaml_adapter.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 126, + 126, + null, + null, + 0, + null, + null, + null, + null, + 1, + 73, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/configuration.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 214, + null, + null, + 1, + null, + null, + null, + null, + 1, + 174, + 51, + 51, + 35, + 35, + 0, + 0, + null, + null, + null, + 16, + null, + null, + null, + 1, + 51, + 51, + 51, + null, + null, + null, + null, + 1, + 2, + null, + null, + null, + 2, + null, + null, + null, + null, + null, + 1, + 3, + 3, + 3, + 3, + null, + null, + null, + null, + 1, + 159, + null, + null, + null, + 1, + 106, + null, + null, + 1, + 2, + null, + null, + 1, + 48, + 48, + null, + null, + 1, + null, + 1, + null, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 8, + null, + 2, + null, + null, + 1, + 22, + 2, + 20, + null, + null, + null, + null, + 1, + null, + 1, + 122, + null, + 24, + 94, + null, + null, + 112, + null, + 58, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/stats.rb": [ + null, + 1, + 1, + 1, + 2, + 2, + 2, + 0, + null, + null, + null, + null, + null, + 4, + null, + 166, + null, + 166, + 2, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/commands.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/dsl.rb": [ + null, + 1, + 1, + 1, + 1, + 13, + 36, + 13, + null, + null, + null, + 1, + 8, + null, + null, + 1, + 1, + 25, + 25, + 79, + 25, + null, + 0, + null, + null, + null, + 1, + 61, + 12, + null, + 49, + null, + null, + null, + 1, + 33, + null, + null, + 1, + 119, + null, + null, + null, + 1, + 119, + null, + null, + null, + 1, + 36, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/collection.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 9, + 9, + 9, + 9, + 9, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/common.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 7, + null, + null, + 1, + 7, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/locales.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/locale.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 36, + 0, + null, + 36, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 1, + 1, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 20, + 15, + null, + 10, + 20, + 56, + null, + null, + null, + 1, + 5, + 0, + null, + 5, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 2, + 2, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + 1, + 7, + null, + null, + null, + 1, + 3, + 3, + 3, + null, + 0, + 0, + null, + 3, + 3, + null, + 2, + 2, + null, + 8, + null, + null, + 1, + 2, + 3, + null, + null, + null, + 1, + 12, + 0, + null, + 12, + 0, + null, + 12, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 29, + 29, + null, + 18, + null, + 0, + null, + 1, + null, + 10, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/enum.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + 2, + 2, + null, + null, + 1, + 29, + 12, + 12, + null, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + 3, + 3, + 3, + 3, + 3, + 3, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/health.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 0, + null, + 1, + 2, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/missing.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 4, + 4, + 4, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 6, + 6, + 6, + 6, + null, + 5, + null, + 5, + 5, + 5, + null, + 6, + null, + 6, + 6, + 6, + 6, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/usages.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 2, + 2, + 2, + null, + null, + 1, + null, + null, + null, + null, + 1, + 3, + 3, + 3, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 1, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/eq_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/data.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 3, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/tree.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 4, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + null, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/meta.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/xlsx.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + null, + 0, + 0, + 0, + null, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commander.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 1, + 33, + null, + null, + 1, + 33, + 33, + 155, + 33, + 0, + null, + 33, + null, + null, + null, + 1, + null, + 1, + 20, + null, + null, + 1, + 1, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/cli.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + 1, + 33, + 33, + null, + null, + 1, + 122, + null, + null, + 1, + null, + 99, + 911, + null, + null, + 1, + null, + 1, + 132, + null, + null, + 1, + 33, + 33, + 33, + 33, + null, + null, + 1, + 33, + 33, + null, + 0, + null, + null, + null, + 1, + 33, + 33, + 33, + null, + 33, + 123, + null, + 33, + 33, + 33, + 33, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 33, + 0, + null, + null, + null, + 1, + 33, + 33, + 33, + 33, + null, + 0, + null, + null, + null, + null, + 1, + 33, + 0, + null, + null, + null, + 1, + 33, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 89, + 485, + 89, + 89, + 28, + null, + 89, + null, + null, + 1, + 33, + 89, + 89, + null, + null, + null, + 1, + 89, + 89, + 23, + null, + 89, + 89, + 89, + null, + null, + 1, + null, + 232, + 123, + null, + null, + 1, + 396, + 81, + null, + 315, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/terminal.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 4, + 4, + 4, + 4, + null, + null, + 4, + 84, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 15, + 8, + null, + 2, + null, + 2, + 16, + 8, + null, + null, + 0, + null, + null, + null, + 1, + 4, + 4, + 4, + 4, + null, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + 0, + null, + null, + null, + 1, + 8, + null, + null, + 1, + 1, + 0, + null, + 1, + null, + 1, + 1, + null, + null, + 1, + null, + 1, + 84, + 68, + null, + 16, + 16, + null, + null, + null, + 1, + 340, + 13, + 13, + 13, + 13, + null, + 327, + null, + null, + null, + 1, + 272, + null, + null, + 1, + 8, + 8, + null, + 2, + null, + 2, + null, + 3, + null, + null, + null, + 1, + 8, + 8, + null, + 8, + 8, + 9, + null, + null, + null, + 1, + 13, + 13, + null, + null, + 13, + 256, + null, + null, + null, + 0, + null, + null, + null, + 1, + 11, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 17, + null, + null, + 1, + 9, + 9, + 9, + null, + null, + 1, + null, + 68, + null, + 68, + null, + null, + 68, + 68, + null, + null, + 1, + 9, + 9, + 9, + null, + null, + null, + null, + 1, + 1, + 9, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/base.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 18, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 22, + null, + null, + 1, + 5, + null, + null, + 1, + 5, + null, + null, + 1, + 2, + null, + null, + 1, + 10, + 2, + null, + null, + null, + null, + null, + 1, + 4, + 4, + 726, + 256, + null, + 4, + null, + null, + 1, + 4, + 84, + null, + null, + null, + 1, + 106, + 84, + 34, + null, + 50, + null, + null, + null, + 1, + 5, + 162, + 5, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/spreadsheet.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 22, + 22, + 22, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + 2, + 2, + null, + 2, + 2, + 11, + null, + null, + null, + null, + 1, + 3, + 3, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_mapper.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + null, + null, + 1, + 1, + 1, + 2, + 2, + 3, + 3, + 3, + 2, + 2, + null, + null, + 2, + null, + 2, + null, + null, + null, + 1, + null, + 1, + null, + 1, + 1, + 2, + null, + null, + null, + null + ] + }, + "timestamp": 1482802816 + }, + "bin/i18n-tasks": { + "coverage": { + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/cli.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 26, + null, + null, + 1, + null, + 1, + 2, + null, + null, + 1, + 1, + 1, + 0, + 0, + null, + null, + 1, + 1, + 0, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + 1, + 1, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 25, + null, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 0, + 0, + null, + null, + 1, + 25, + 24, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 1, + 2, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/base_task.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command_error.rb": [ + null, + 1, + 1, + null, + null, + null, + 1, + 1, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/split_key.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 3, + 3, + 3, + null, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/key_pattern_matching.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/logging.rb": [ + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/plural_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/references.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/html_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/used_keys.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + null, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/file_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/key_occurrences.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/occurrence.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/relative_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/occurrence_from_position.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_key_literals.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_call_finder.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner_multiplexer.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_finder.rb": [ + null, + 1, + null, + null, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_reader.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_reader.rb": [ + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/ignore_keys.rb": [ + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/missing_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/unused_keys.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/google_translation.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + 1, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_pathname.rb": [ + null, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_list.rb": [ + null, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/string_interpolation.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + null, + 1, + null, + 1, + null, + 1, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/node.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/traversal.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/siblings.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/nodes.rb": [ + null, + null, + 1, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/pattern_router.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/conservative_router.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_formats.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 2, + null, + null, + 1, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/json_adapter.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/yaml_adapter.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/configuration.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 3, + 1, + 1, + 1, + 1, + 0, + 0, + null, + null, + null, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/stats.rb": [ + null, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/commands.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/dsl.rb": [ + null, + 1, + 1, + 1, + 1, + 13, + 36, + 13, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + 25, + 25, + 79, + 25, + null, + 0, + null, + null, + null, + 1, + 61, + 12, + null, + 49, + null, + null, + null, + 1, + 1, + null, + null, + 1, + 87, + null, + null, + null, + 1, + 62, + null, + null, + null, + 1, + 36, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/collection.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 9, + 9, + 9, + 9, + 9, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/common.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/locales.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/locale.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 2, + 2, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/enum.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + 2, + 2, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/health.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/missing.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/usages.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/eq_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/data.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/tree.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/meta.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/xlsx.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commander.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/terminal.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/base.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/spreadsheet.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/tmp/test_codebase/lib/test_i18n_plugin.rb": [ + null, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1 + ], + "/home/glebm/repos/glebm/i18n-tasks/tmp/test_codebase/lib/my_custom_scanner.rb": [ + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1 + ] + }, + "timestamp": 1482802814 + }, + "bin/i18n-tasks --version": { + "coverage": { + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/cli.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 26, + null, + null, + 1, + null, + 1, + 2, + null, + null, + 1, + 1, + 1, + 0, + 0, + null, + null, + 1, + 1, + 0, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 25, + null, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 0, + 0, + null, + null, + 1, + 25, + 24, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 1, + 2, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/base_task.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command_error.rb": [ + null, + 1, + 1, + null, + null, + null, + 1, + 1, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/split_key.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 3, + 3, + 3, + null, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/key_pattern_matching.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/logging.rb": [ + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/plural_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/references.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/html_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/used_keys.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + null, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/pattern_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/file_scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/key_occurrences.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/results/occurrence.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/relative_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/occurrence_from_position.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_key_literals.rb": [ + null, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_scanner.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/ruby_ast_call_finder.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/scanner_multiplexer.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb": [ + null, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_finder.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_finder.rb": [ + null, + 1, + null, + null, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/caching_file_reader.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/scanners/files/file_reader.rb": [ + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/ignore_keys.rb": [ + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/missing_keys.rb": [ + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/unused_keys.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/google_translation.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + null, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + 1, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_pathname.rb": [ + null, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/locale_list.rb": [ + null, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/string_interpolation.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_system_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + null, + 1, + null, + 1, + null, + 1, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/node.rb": [ + null, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/traversal.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/siblings.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/tree/nodes.rb": [ + null, + null, + 1, + 1, + null, + 1, + 1, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/pattern_router.rb": [ + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/router/conservative_router.rb": [ + null, + 1, + null, + 1, + 1, + null, + 1, + 1, + 0, + 0, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/file_formats.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 2, + null, + null, + 1, + null, + 0, + null, + null, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + 0, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/json_adapter.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/data/adapter/yaml_adapter.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/configuration.rb": [ + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + null, + null, + 1, + null, + null, + null, + null, + 1, + 3, + 1, + 1, + 1, + 1, + 0, + 0, + null, + null, + null, + 0, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 1, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/stats.rb": [ + null, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/commands.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/dsl.rb": [ + null, + 1, + 1, + 1, + 1, + 13, + 36, + 13, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 1, + 25, + 25, + 79, + 25, + null, + 0, + null, + null, + null, + 1, + 61, + 12, + null, + 49, + null, + null, + null, + 1, + 1, + null, + null, + 1, + 87, + null, + null, + null, + 1, + 62, + null, + null, + null, + 1, + 36, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/collection.rb": [ + null, + 1, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + 9, + 9, + 9, + 9, + 9, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/common.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/locales.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/locale.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/options/data.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + 1, + 2, + 2, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null, + 1, + null, + null, + 1, + null, + 1, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/option_parsers/enum.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + null, + null, + 1, + 2, + 2, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 0, + null, + null, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/health.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/missing.rb": [ + null, + 1, + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/usages.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/eq_base.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/data.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/tree.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + null, + 1, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/meta.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commands/xlsx.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/command/commander.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 1, + 1, + 1, + null, + 1, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/terminal.rb": [ + null, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + null, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 0, + 0, + null, + null, + null, + 0, + null, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + 1, + null, + 0, + null, + 0, + null, + null, + 0, + 0, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 0, + null, + 1, + null, + null, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/base.rb": [ + null, + 1, + 1, + 1, + null, + 1, + 0, + null, + null, + 1, + 1, + null, + 1, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + 0, + null, + null, + null, + 1, + 0, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/lib/i18n/tasks/reports/spreadsheet.rb": [ + null, + 1, + 1, + null, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 1, + null, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + null, + 1, + 0, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + 1, + 0, + 0, + null, + null, + null + ], + "/home/glebm/repos/glebm/i18n-tasks/tmp/test_codebase/lib/test_i18n_plugin.rb": [ + null, + 1, + 1, + null, + 1, + null, + null, + null, + 1, + 0, + null, + null, + null, + 1 + ], + "/home/glebm/repos/glebm/i18n-tasks/tmp/test_codebase/lib/my_custom_scanner.rb": [ + 1, + 1, + 1, + 1, + null, + null, + 1, + 0, + 0, + 0, + 0, + null, + null, + null, + null, + 1 + ] + }, + "timestamp": 1482802814 + } +} diff --git a/spec/fixtures/test_file.rb b/spec/fixtures/test_file.rb new file mode 100644 index 0000000..84275f9 --- /dev/null +++ b/spec/fixtures/test_file.rb @@ -0,0 +1,4 @@ +line1 +line2 +line3 +line4 diff --git a/spec/lib/calculate_blob_spec.rb b/spec/lib/calculate_blob_spec.rb deleted file mode 100644 index 4cb75de..0000000 --- a/spec/lib/calculate_blob_spec.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'spec_helper' - -module CodeClimate::TestReporter - - describe CalculateBlob do - - subject { CalculateBlob.new(fixture) } - let(:fixture) { File.expand_path("../../fixtures/encoding_test.rb", __FILE__) } - - it 'hex digests content of file' do - expect(subject.blob_id).to_not be_nil - end - - context 'encoding error' do - - let(:fixture) { File.expand_path("../../fixtures/encoding_test_iso.rb", __FILE__) } - - it 'falls back to git' do - expect(File).to receive(:open).and_raise(EncodingError) - expect(subject.blob_id).to eq('eb82c22dadb9c47a7fed87211623f6856e112f46') - end - - end - - end - -end diff --git a/spec/lib/formatter_spec.rb b/spec/lib/formatter_spec.rb deleted file mode 100644 index 9e10f66..0000000 --- a/spec/lib/formatter_spec.rb +++ /dev/null @@ -1,141 +0,0 @@ -require 'spec_helper' -require 'fileutils' - -module CodeClimate::TestReporter - describe Formatter do - let(:project_path) { "spec/tmp" } - let(:project_file) { "fake_project.rb" } - let(:formatter) { Formatter.new } - let(:source_files) { - double( - :covered_percent => 24.3, - :covered_strength => 33.2, - ) - } - let(:files) { - [ - double( - :lines => [double, double, double], - :covered_lines => [double, double], - :missed_lines => [double], - :filename => project_file, - :coverage => [0,3,2,nil], - :covered_percent => 33.2, - :covered_strength => 2 - ) - ] - } - - let(:simplecov_result) { - double( - :covered_percent => 24.3, - :covered_strength => 33.2, - :files => files, - :source_files => source_files, - :created_at => Time.at(1379704336), - :command_name => "rspec" - ) - } - - let(:expected_request) { - { - "repo_token" => "172754c1bf9a3c698f7770b9fb648f1ebb214425120022d0b2ffc65b97dff531", - "source_files" => - [ - { - "name" => project_file, - "blob_id" => "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", - "coverage" => "[0,3,2,null]", - "covered_percent" => 33.2, - "covered_strength" => 2.0, - "line_counts" => {"total"=>3, "covered"=>2, "missed"=>1} - } - ], - "run_at" => 1379704336, - "covered_percent" => 24.3, - "covered_strength" => 33.2, - "line_counts" => {"total" => 3, "covered" => 2, "missed" => 1 }, - "partial"=> false, - "git" => - { - "head" => @commit_sha, - "committed_at" => @committed_at.to_i, - "branch" => "master" - }, - "environment" => - { - "test_framework" => "rspec", - "pwd" => Dir.pwd, - "rails_root" => nil, - "simplecov_root" => Dir.pwd, - "gem_version" => VERSION - }, - } - } - - before do - @old_pwd = Dir.pwd - FileUtils.mkdir_p(project_path) - FileUtils.cd(project_path) - FileUtils.touch(project_file) - SimpleCov.root(Dir.pwd) - system("git init") - system("git add #{project_file}") - system("git commit -m 'initial commit'") - @commit_sha = `git log -1 --pretty=format:'%H'` - @committed_at = `git log -1 --pretty=format:'%ct'` - end - - after do - FileUtils.cd(@old_pwd) - FileUtils.rm_rf(project_path) - end - - it "sends an http request with all the coverage information" do - allow(CodeClimate::TestReporter).to receive(:run?).and_return(true) - - app = FakeCodeClimateEndpoint.new - Artifice.activate_with(app) do - formatter.format(simplecov_result) - end - - expect(app.path_info).to eq("/test_reports") - expect(app.content_type).to eq("application/json") - expect(app.http_content_encoding).to eq("gzip") - - uncompressed = inflate(app.request_body) - - expected_request.merge!("ci_service" => Ci.service_data) - expected_json = JSON.parse(expected_request.to_json, symbolize_names: true) - - expect(JSON.parse(uncompressed, symbolize_names: true)).to eq(expected_json) - expect(app.http_user_agent).to include("v#{CodeClimate::TestReporter::VERSION}") - end - - describe '#short_filename' do - it 'should return the filename of the file relative to the SimpleCov root' do - expect(formatter.short_filename('file1')).to eq('file1') - expect(formatter.short_filename("#{::SimpleCov.root}/file1")).to eq('file1') - end - - context "with path prefix" do - before do - CodeClimate::TestReporter.configure do |config| - config.path_prefix = 'custom' - end - end - - after do - CodeClimate::TestReporter.configure do |config| - config.path_prefix = nil - end - end - - it 'should include the path prefix if set' do - expect(formatter.short_filename('file1')).to eq('custom/file1') - expect(formatter.short_filename("#{::SimpleCov.root}/file1")).to eq('custom/file1') - end - end - end - end -end diff --git a/spec/lib/git_spec.rb b/spec/lib/git_spec.rb deleted file mode 100644 index de6897d..0000000 --- a/spec/lib/git_spec.rb +++ /dev/null @@ -1,39 +0,0 @@ -require 'spec_helper' - -module CodeClimate::TestReporter - describe Git do - describe '.info' do - it 'returns a hash with git information.' do - expected_git_hash = { - head: `git log -1 --pretty=format:'%H'`, - committed_at: `git log -1 --pretty=format:%ct`.to_i, - branch: Git.send(:branch_from_git) - } - - expect(Git.info).to include expected_git_hash - end - end - - describe 'branch_from_git_or_ci' do - it 'returns the branch from ci' do - allow(Ci).to receive(:service_data).and_return({branch: 'ci-branch'}) - - expect(Git.branch_from_git_or_ci).to eq 'ci-branch' - end - - it 'returns the branch from git if there is no ci branch' do - allow(Ci).to receive(:service_data).and_return({}) - - expect(Git.branch_from_git_or_ci).to eq Git.clean_git_branch - end - - it 'returns master otherwise' do - allow(Ci).to receive(:service_data).and_return({}) - allow(Git).to receive(:branch_from_git).and_return(nil) - - expect(Git.branch_from_git_or_ci).to eq 'master' - end - end - - end -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 4fc783a..d4a4028 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,46 +1,12 @@ -require 'rubygems' +require "simplecov" +SimpleCov.start + require 'bundler/setup' -require 'artifice' require 'pry' require 'codeclimate-test-reporter' +require 'webmock/rspec' ENV['CODECLIMATE_REPO_TOKEN'] = "172754c1bf9a3c698f7770b9fb648f1ebb214425120022d0b2ffc65b97dff531" ENV['CODECLIMATE_API_HOST'] = "http://cc.dev" -def inflate(string) - reader = Zlib::GzipReader.new(StringIO.new(string)) - reader.read -end - -class FakeCodeClimateEndpoint - def call(env) - @env = env - [ - 200, - {"Content-Type" => 'text/plain'}, - ["Received"] - ] - end - - def path_info - @env["PATH_INFO"] - end - - def request_body - @env["rack.input"].string - end - - def content_type - @env["CONTENT_TYPE"] - end - - def http_content_encoding - @env["HTTP_CONTENT_ENCODING"] - end - - def http_user_agent - @env["HTTP_USER_AGENT"] - end -end - - +Dir.glob("spec/support/**/*.rb").sort.each(&method(:load)) diff --git a/spec/support/fixture_helper.rb b/spec/support/fixture_helper.rb new file mode 100644 index 0000000..fc9c472 --- /dev/null +++ b/spec/support/fixture_helper.rb @@ -0,0 +1,46 @@ +module FixtureHelper + # Unpack the git project at spec/fixtures/{name}.tar.gz and run the block + # within it, presumably formatting a simplecov result. + def within_repository(name) + old_pwd = Dir.pwd + FileUtils.cd("spec/fixtures") + system("tar -xzf #{name}.tar.gz >/dev/null") or + raise ArgumentError, "could not extract #{name}.tar.gz" + FileUtils.cd(name) + yield + ensure + FileUtils.cd(old_pwd) + FileUtils.rm_rf("spec/fixtures/#{name}") + end + + # Load spec/fixtures/{name}_resultset.json and correct the file paths, + # stripping the given prefix and pre-pending the fixture project's directory. + def load_resultset(name, project_prefix) + fixture = File.join("spec", "fixtures", "#{name}_resultset.json") + fixture_result = JSON.parse(File.read(fixture)) + updated_prefix = "#{SimpleCov.root}/spec/fixtures/#{name}/" + update_source_paths(fixture_result, project_prefix, updated_prefix) + end + + # :private: actual munging of the simplecov nest hash + def update_source_paths(fixture_result, from, to) + fixture_result.each_with_object({}) do |(name, values), out| + out[name] = {} + values.each do |k, v| + if k == "coverage" + out[name][k] = {} + v.each do |p, lines| + path = p.sub(from, to) + out[name][k][path] = lines + end + else + out[name][k] = v + end + end + end + end +end + +RSpec.configure do |conf| + conf.include(FixtureHelper) +end diff --git a/spec/support/io_helper.rb b/spec/support/io_helper.rb new file mode 100644 index 0000000..993344c --- /dev/null +++ b/spec/support/io_helper.rb @@ -0,0 +1,19 @@ +module IOHelper + def capture_io + stdout = $stdout + stderr = $stderr + $stdout = StringIO.new + $stderr = StringIO.new + + yield if block_given? + + [$stdout, $stderr] + ensure + $stdout = stdout + $stderr = stderr + end +end + +RSpec.configure do |conf| + conf.include(IOHelper) +end diff --git a/spec/support/requests_helper.rb b/spec/support/requests_helper.rb new file mode 100644 index 0000000..074d4d8 --- /dev/null +++ b/spec/support/requests_helper.rb @@ -0,0 +1,11 @@ +module RequestsHelper + def capture_requests(stub) + requests = [] + stub.to_return { |r| requests << r; {body: "hello"} } + requests + end +end + +RSpec.configure do |conf| + conf.include(RequestsHelper) +end