Skip to content

Conversation

@abidta
Copy link

@abidta abidta commented Mar 20, 2025

  • Added knip as the recommended replacement.

  • Integrated knip into the workflow file for automated checks.

Closes #2637

Purpose (TL;DR) - mandatory

How to verify - mandatory

  1. Check out this branch
  2. npm install

Checklist for author

  • npm run lint passes
  • References to standard library functions are cached.

- Added knip as the recommended replacement.

- Integrated knip into the workflow file for automated checks.

Closes sinonjs#2637
@socket-security
Copy link

New, updated, and removed dependencies detected. Learn more about Socket for GitHub ↗︎

Package New capabilities Transitives Size Publisher
npm/@types/[email protected]22.13.10 None +1 2.4 MB types
npm/[email protected] environment, eval Transitive: filesystem, shell +46 3.56 MB webpro
npm/[email protected]5.8.2 None 0 22.9 MB typescript-bot

View full report↗︎

@mroderick
Copy link
Member

Thank you for the pull request 👏

There are still a few things to do.
When I run this locally, I get this report:

$ npm run knip

> [email protected] knip
> knip

Unused files (58)
lib/sinon-esm.js
scripts/set-release-id-in-config-yml.cjs
test/es2015/a-function-module.mjs
test/es2015/a-module-with-default.mjs
test/es2015/a-module-with-to-string-tag.mjs
test/es2015/a-module.mjs
test/es2015/module-support-assessment-test.mjs
test/issues/issues-test.js
test/util/fake-timers-test.js
test/webworker/webworker-script.js
test/webworker/webworker-support-assessment.js
docs/assets/js/prism.js
test/util/core/color-test.js
test/util/core/export-async-behaviors-test.js
test/util/core/function-to-string-test.js
test/util/core/get-next-tick-test.js
test/util/core/next-tick-test.js
test/util/core/times-in-words-test.js
test/util/core/walk-object-test.js
test/util/core/walk-test.js
test/util/core/wrap-method-test.js
docs/release-source/release/examples/fakes-01-using-fakes-instead-of-spies.test.js
docs/release-source/release/examples/fakes-02-using-fakes-instead-of-stubs.test.js
docs/release-source/release/examples/fakes-03-creating-without-behaviour.test.js
docs/release-source/release/examples/fakes-04-creating-with-custom-behaviour.test.js
docs/release-source/release/examples/fakes-05-returns.test.js
docs/release-source/release/examples/fakes-06-throws.test.js
docs/release-source/release/examples/fakes-07-yields.test.js
docs/release-source/release/examples/fakes-08-yields-async.test.js
docs/release-source/release/examples/fakes-09-callback.test.js
docs/release-source/release/examples/fakes-10-firstArg.test.js
docs/release-source/release/examples/fakes-11-lastArg.test.js
docs/release-source/release/examples/fakes-12-adding-fake-to-system-under-test.test.js
docs/release-source/release/examples/sandbox-configuration.test.js
docs/release-source/release/examples/spies-1-pubsub.test.js
docs/release-source/release/examples/spies-2-wrap-object-methods.test.js
docs/release-source/release/examples/spies-3-wrap-existing-method.test.js
docs/release-source/release/examples/spies-4-pubsub-message-1.test.js
docs/release-source/release/examples/spies-5-pubsub-message-2.test.js
docs/release-source/release/examples/spies-6-pubsub-message-3.test.js
docs/release-source/release/examples/spies-7-with-args.test.js
docs/release-source/release/examples/spies-8-spy-call.test.js
docs/release-source/release/examples/stubs-1-pubsub.test.js
docs/release-source/release/examples/stubs-10-use-promise-library.test.js
docs/release-source/release/examples/stubs-12-yield-to.test.js
docs/release-source/release/examples/stubs-14-add-behavior.test.js
docs/release-source/release/examples/stubs-15-replace-getter.test.js
docs/release-source/release/examples/stubs-16-define-new-setter.test.js
docs/release-source/release/examples/stubs-17-define-new-value.test.js
docs/release-source/release/examples/stubs-18-restore-values.test.js
docs/release-source/release/examples/stubs-2-different-args.test.js
docs/release-source/release/examples/stubs-3-sequential-interactions.test.js
docs/release-source/release/examples/stubs-4-sequential-with-args.test.js
docs/release-source/release/examples/stubs-5-reset-behaviour.test.js
docs/release-source/release/examples/stubs-6-reset-history.test.js
docs/release-source/release/examples/stubs-7-call-fake.test.js
docs/release-source/release/examples/stubs-8-call-through.test.js
docs/release-source/release/examples/stubs-9-call-through-with-new.test.js
Unused devDependencies (10)
@babel/core                                  package.json:91:6
@mochify/driver-puppeteer                    package.json:93:6
@mochify/driver-webdriver                    package.json:94:6
@sinonjs/eslint-config                       package.json:95:6
@sinonjs/eslint-plugin-no-prototype-methods  package.json:96:6
@studio/changes                              package.json:98:6
babel-plugin-istanbul                        package.json:99:6
babelify                                     package.json:100:6
lint-staged                                  package.json:108:6
semver                                       package.json:114:6
Unlisted binaries (3)
docs/release-source/release/examples/run-test.sh  package.json
make                                              package.json
eslint                                            package.json
Unused exports (8)
createAssertObject    unknown  lib/sinon/assert.js:336:16
incrementCallCount    unknown  lib/sinon/proxy-call-util.js:5:9
createCallProperties  unknown  lib/sinon/proxy-call-util.js:14:9
delegateToCalls       unknown  lib/sinon/proxy-call-util.js:21:9
nonEnum               unknown  lib/sinon/util/core/extend.js:148:16
useFakeTimers         unknown  lib/sinon/util/fake-timers.js:40:9
clock                 unknown  lib/sinon/util/fake-timers.js:74:9
timers                unknown  lib/sinon/util/fake-timers.js:90:9

It is fair enough that the solution can't detect usage of things in docs/, that's not so important.

However, it should be able to detect things that are clearly in use.

$ ag -Q "incrementCallCount"
lib/sinon/spy.js
59:            proxyCallUtil.incrementCallCount(fake);

lib/sinon/proxy-invoke.js
19:    proxyCallUtil.incrementCallCount(this);
24:        proxyCallUtil.incrementCallCount(matching);

lib/sinon/proxy-call-util.js
5:exports.incrementCallCount = function incrementCallCount(proxy) {

I think knip just needs a little bit of help in the form of configuration and maybe a plugin or two.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use knip instead of unimported

2 participants