cloc
cloc copied to clipboard
cloc report executed with --git --diff option may have duplicate file name
Describe the bug Run cloc with option --git --diff may produce broken report with duplicate keys:

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
Besides, diff analyze produces no language info with --by-file
option while normal analyze does. By Design?
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.
If you can point me to a repo that lets me reproduce this issue, please re-open. Without that, I cannot fix the problem.