cloc icon indicating copy to clipboard operation
cloc copied to clipboard

cloc report executed with --git --diff option may have duplicate file name

Open ensorrow opened this issue 2 years ago • 2 comments

Describe the bug Run cloc with option --git --diff may produce broken report with duplicate keys:

image

cloc; OS; OS version

  • cloc version: 1.92
  • If running the cloc source, Perl version: v5.30.3
  • OS (eg Linux, Windows, macOS, etc): macOS & Linux
  • OS version: 12.1 (21C52)

To Reproduce Run ./node_modules/.bin/cloc --by-file --report-file=./cloc.json --json --diff master feat/test --git (npm package cloc just wraps the cloc source).

Many files are generated more than once, which broke the JSON format. Use yml or stdout has the same problem.

Expected result Files only count and write once.

Additional context

// diffalignment
Files removed: 82
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/.huskyrc.yml ; YAML
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/demo/test_tnpm_build_check.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/src/baseCommand.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/src/ci.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/src/tnpm_build_check.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/src/tnpm_check.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/src/tnpm_multi_build_check.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/src/tnpm_multi_pre_check.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/abilities/src/tnpm_pre_check.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/utils/package-lock.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/lib/utils/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/assets-publish/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/ats/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cdn-check/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/changefree/package-lock.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/changefree/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/ci/index.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/ci/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/.eslintrc.yml ; YAML
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/.vscode/settings.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/jest.config.mjs ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/locales/en_US.yml ; YAML
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/locales/zh_CN.yml ; YAML
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/__fixtures__/assets-daily.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/__fixtures__/assets-daily.nodeSemver.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/__fixtures__/assets_o-publish.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/__fixtures__/tm_com-daily.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/__mocks__/extractBuildInput.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/__mocks__/flowContext.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/__tests__/index.test.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/helpers/__tests__/runClient.test.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/helpers/argv.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/helpers/checkExistedResult.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/helpers/locales.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/helpers/runClient.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/index.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/io.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/cloudbuild/cloudbuild.d.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/cloudbuild/controller/sourcemapTask.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/cloudbuild/controller/task.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/cloudbuild/model/SourcemapTask.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/cloudbuild/model/SourcemapTaskFile.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/cloudbuild/model/Task.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/cloudbuild/model/User.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/cloudbuild/model/customBaseEntity.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/flow.d.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/src/typing/work.d.ts ; TypeScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/tsconfig.build.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/cloudbuild/tsconfig.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/git-clean/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/gitlab-check/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/gitmerge/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/gog/index.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/gog/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/page/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/source-check/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-build-check/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-cdn/index.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-cdn/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-check/package-lock.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-check/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-deploy/index.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-deploy/lib/tnpm.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-deploy/package-lock.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-deploy/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi-pre-check/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi/package-lock.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-multi/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm-pre-check/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm_build_check/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpm_build_check/tests/lib/data.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpmcdn-multi/index.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpmcdn-multi/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpmcdn/index.js ; JavaScript
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpmcdn/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/tnpmcheck-multi/package-lock.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/packages/steps/windmill/package.json ; JSON
  - /var/folders/j_/h0p7y_4s4xbc7x3jpym9zzt40000gq/T/PmQXa3j7I_/readme.md ; Markdown

ensorrow avatar Jun 17 '22 07:06 ensorrow

Besides, diff analyze produces no language info with --by-fileoption while normal analyze does. By Design?

ensorrow avatar Jun 17 '22 09:06 ensorrow

Definitely looks like a bug but I'm not able to reproduce it using my own git repos. Can you point me to a public repo that exhibits the flaw?

I agree it would be nice to show the language with --by-file. I'll add it to my TODO--but fixing the bug is definitely a priority.

AlDanial avatar Jun 18 '22 18:06 AlDanial

If you can point me to a repo that lets me reproduce this issue, please re-open. Without that, I cannot fix the problem.

AlDanial avatar Aug 10 '22 16:08 AlDanial