diff --git a/lib/config-validator.ts b/lib/config-validator.ts
index bd659398db5ca943cdee83609bbb4fc0e9a1a78e..2c6ddc237f04e18ad4275fb39bbfe8e4f92a5f69 100644
--- a/lib/config-validator.ts
+++ b/lib/config-validator.ts
@@ -11,8 +11,6 @@ import { validateConfig } from './config/validation';
 import { logger } from './logger';
 import { getConfig as getFileConfig } from './workers/global/config/parse/file';
 
-/* eslint-disable no-console */
-
 let returnVal = 0;
 
 async function validate(
diff --git a/lib/config/decrypt.spec.ts b/lib/config/decrypt.spec.ts
index 18c2c3808dbaa660807374c4584c4020d8a10418..2d6d2151255cc56eb07376403e15dbf47de67a2a 100644
--- a/lib/config/decrypt.spec.ts
+++ b/lib/config/decrypt.spec.ts
@@ -41,7 +41,7 @@ describe('config/decrypt', () => {
     it('replaces npm token placeholder in npmrc', async () => {
       setGlobalConfig({ privateKey: 'invalid-key', privateKeyOld: privateKey }); // test old key failover
       config.npmrc =
-        '//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n'; // eslint-disable-line no-template-curly-in-string
+        '//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n';
       config.encrypted = {
         npmToken:
           'FLA9YHIzpE7YetAg/P0X46npGRCMqn7hgyzwX5ZQ9wYgu9BRRbTiBVsUIFTyM5BuP1Q22slT2GkWvFvum7GU236Y6QiT7Nr8SLvtsJn2XUuq8H7REFKzdy3+wqyyWbCErYTFyY1dcPM7Ht+CaGDWdd8u/FsoX7AdMRs/X1jNUo6iSmlUiyGlYDKF+QMnCJom1VPVgZXWsGKdjI2MLny991QMaiv0VajmFIh4ENv4CtXOl/1twvIl/6XTXAaqpJJKDTPZEuydi+PHDZmal2RAOfrkH4m0UURa7SlfpUlIg+EaqbNGp85hCYXLwRcEET1OnYr3rH1oYkcYJ40any1tvQ==',
@@ -55,7 +55,7 @@ describe('config/decrypt', () => {
     });
     it('appends npm token in npmrc', async () => {
       setGlobalConfig({ privateKey });
-      config.npmrc = 'foo=bar\n'; // eslint-disable-line no-template-curly-in-string
+      config.npmrc = 'foo=bar\n';
       config.encrypted = {
         npmToken:
           'FLA9YHIzpE7YetAg/P0X46npGRCMqn7hgyzwX5ZQ9wYgu9BRRbTiBVsUIFTyM5BuP1Q22slT2GkWvFvum7GU236Y6QiT7Nr8SLvtsJn2XUuq8H7REFKzdy3+wqyyWbCErYTFyY1dcPM7Ht+CaGDWdd8u/FsoX7AdMRs/X1jNUo6iSmlUiyGlYDKF+QMnCJom1VPVgZXWsGKdjI2MLny991QMaiv0VajmFIh4ENv4CtXOl/1twvIl/6XTXAaqpJJKDTPZEuydi+PHDZmal2RAOfrkH4m0UURa7SlfpUlIg+EaqbNGp85hCYXLwRcEET1OnYr3rH1oYkcYJ40any1tvQ==',
diff --git a/lib/config/decrypt.ts b/lib/config/decrypt.ts
index 86a51a435b78c7ec2ae8632101b35cf45fc9175c..e17c1b9b1e9c759decaf97e57ba4963c4ef95a9f 100644
--- a/lib/config/decrypt.ts
+++ b/lib/config/decrypt.ts
@@ -179,7 +179,6 @@ export async function decryptConfig(
               'Migrating npmToken to npmrc'
             );
             if (is.string(decryptedConfig.npmrc)) {
-              /* eslint-disable no-template-curly-in-string */
               if (decryptedConfig.npmrc.includes('${NPM_TOKEN}')) {
                 logger.debug('Replacing ${NPM_TOKEN} with decrypted token');
                 decryptedConfig.npmrc = decryptedConfig.npmrc.replace(
diff --git a/lib/config/global.ts b/lib/config/global.ts
index 0d17dd3992d23eb6a220df0132c2efd59e5b171f..38f557c52fdb9ce31ca8e187cb7b05e81970af12 100644
--- a/lib/config/global.ts
+++ b/lib/config/global.ts
@@ -29,7 +29,7 @@ export function setGlobalConfig(
   const result = { ...config };
   for (const option of repoGlobalOptions) {
     repoGlobalConfig[option] = config[option];
-    delete result[option]; // eslint-disable-line no-param-reassign
+    delete result[option];
   }
   return result;
 }
diff --git a/lib/config/migration.ts b/lib/config/migration.ts
index d0482ef5aa566b60fe8388bf743974edbb34efb2..6b548e4f665b53d8eaa4f5b530f0a9ef917c47ba 100644
--- a/lib/config/migration.ts
+++ b/lib/config/migration.ts
@@ -316,11 +316,11 @@ export function migrateConfig(
         migratedConfig.automergeType = 'branch';
       } else if (key === 'automergeMinor') {
         migratedConfig.minor = migratedConfig.minor || {};
-        migratedConfig.minor.automerge = val == true; // eslint-disable-line eqeqeq
+        migratedConfig.minor.automerge = val == true;
         delete migratedConfig[key];
       } else if (key === 'automergeMajor') {
         migratedConfig.major = migratedConfig.major || {};
-        migratedConfig.major.automerge = val == true; // eslint-disable-line eqeqeq
+        migratedConfig.major.automerge = val == true;
         delete migratedConfig[key];
       } else if (key === 'multipleMajorPrs') {
         delete migratedConfig.multipleMajorPrs;
@@ -336,7 +336,7 @@ export function migrateConfig(
         migratedConfig.separateMinorPatch = val;
       } else if (key === 'automergePatch') {
         migratedConfig.patch = migratedConfig.patch || {};
-        migratedConfig.patch.automerge = val == true; // eslint-disable-line eqeqeq
+        migratedConfig.patch.automerge = val == true;
         delete migratedConfig[key];
       } else if (key === 'ignoreNodeModules') {
         delete migratedConfig.ignoreNodeModules;
diff --git a/lib/config/presets/index.ts b/lib/config/presets/index.ts
index 21298a144797cc853fe2c92d84f3c173ebc54429..8ad679445e81bd5f79d42ca11b37bb998183e214 100644
--- a/lib/config/presets/index.ts
+++ b/lib/config/presets/index.ts
@@ -255,7 +255,7 @@ export async function resolveConfigPresets(
   existingPresets: string[] = []
 ): Promise<AllConfig> {
   if (!ignorePresets || ignorePresets.length === 0) {
-    ignorePresets = inputConfig.ignorePresets || []; // eslint-disable-line
+    ignorePresets = inputConfig.ignorePresets || [];
   }
   logger.trace(
     { config: inputConfig, existingPresets },
diff --git a/lib/config/presets/util.ts b/lib/config/presets/util.ts
index 8b044b5a33e236302fe9e71b21706b92f0cab545..4f701cb4ed7e94d30a2cceba60de1c630f9cd1c9 100644
--- a/lib/config/presets/util.ts
+++ b/lib/config/presets/util.ts
@@ -18,7 +18,6 @@ export async function fetchPreset({
   packageTag = null,
   fetch,
 }: FetchPresetConfig): Promise<Preset | undefined> {
-  // eslint-disable-next-line no-param-reassign
   endpoint = ensureTrailingSlash(endpoint);
   const [fileName, presetName, subPresetName] = filePreset.split('/');
   const pathPrefix = presetPath ? `${presetPath}/` : '';
diff --git a/lib/config/validation.ts b/lib/config/validation.ts
index 3faa3dbd77a292eaf32bb52e2dd596d801be20c8..7ca765b547fed4886c5ad0a5247239724637fe7a 100644
--- a/lib/config/validation.ts
+++ b/lib/config/validation.ts
@@ -122,7 +122,7 @@ export async function validateConfig(
         topic: 'Config security error',
         message: '__proto__',
       });
-      continue; // eslint-disable-line
+      continue;
     }
     if (parentPath && topLevelObjects.includes(key)) {
       errors.push({
diff --git a/lib/datasource/cdnjs/index.ts b/lib/datasource/cdnjs/index.ts
index cac132885f6c675dd3760acc265394f3038720f3..7fbce6cb9fcfa59c2ed51910cb795b8aad8a8c32 100644
--- a/lib/datasource/cdnjs/index.ts
+++ b/lib/datasource/cdnjs/index.ts
@@ -17,7 +17,7 @@ export class CdnJsDatasource extends Datasource {
   override readonly caching = true;
 
   // this.handleErrors will always throw
-  // eslint-disable-next-line consistent-return
+
   async getReleases({
     lookupName,
     registryUrl,
diff --git a/lib/datasource/clojure/index.spec.ts b/lib/datasource/clojure/index.spec.ts
index 66aab7a7ecbf7fccb2503ae04e6dcc10fb22c5ed..d6b4d312aa7e5343dd5aa8da350b61ee2cf7ae38 100644
--- a/lib/datasource/clojure/index.spec.ts
+++ b/lib/datasource/clojure/index.spec.ts
@@ -294,7 +294,7 @@ describe('datasource/clojure/index', () => {
   it('returns null for invalid registryUrls', async () => {
     const res = await get(
       'org.example:package',
-      // eslint-disable-next-line no-template-curly-in-string
+
       '${project.baseUri}../../repository/'
     );
     expect(res).toBeNull();
diff --git a/lib/datasource/clojure/index.ts b/lib/datasource/clojure/index.ts
index 79b2c8cf034a46808c586b9f4f30c44d6381d658..513909ab9a8598a56ece92939e3548c5e45ce085 100644
--- a/lib/datasource/clojure/index.ts
+++ b/lib/datasource/clojure/index.ts
@@ -17,7 +17,6 @@ export class ClojureDatasource extends Datasource {
     MAVEN_REPO,
   ];
 
-  // eslint-disable-next-line class-methods-use-this
   getReleases({
     lookupName,
     registryUrl,
diff --git a/lib/datasource/datasource.ts b/lib/datasource/datasource.ts
index 033557c6d66d3c9bc551969c6ccb830b1efdc2d9..84b21952797f48970d9df6c00787d8b82fa7f583 100644
--- a/lib/datasource/datasource.ts
+++ b/lib/datasource/datasource.ts
@@ -33,7 +33,7 @@ export abstract class Datasource implements DatasourceApi {
 
   getDigest?(config: DigestConfig, newValue?: string): Promise<string>;
 
-  // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-empty-function
+  // eslint-disable-next-line @typescript-eslint/no-empty-function
   handleSpecificErrors(err: HttpError): void {}
 
   protected handleGenericErrors(err: HttpError): never {
diff --git a/lib/datasource/git-refs/index.ts b/lib/datasource/git-refs/index.ts
index dcd2e603506bfc4e3fcea39b9d171384b7c8420c..6567ece8ff47f6249e2d8d12b16d0531caae8f66 100644
--- a/lib/datasource/git-refs/index.ts
+++ b/lib/datasource/git-refs/index.ts
@@ -22,7 +22,6 @@ export class GitRefsDatasource extends Datasource {
     namespace: `datasource-${GitRefsDatasource.id}`,
     key: ({ lookupName }: GetReleasesConfig) => lookupName,
   })
-  // eslint-disable-next-line class-methods-use-this
   override async getReleases({
     lookupName,
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
@@ -54,7 +53,6 @@ export class GitRefsDatasource extends Datasource {
     return result;
   }
 
-  // eslint-disable-next-line class-methods-use-this
   override async getDigest(
     { lookupName }: DigestConfig,
     newValue?: string
diff --git a/lib/datasource/git-tags/index.ts b/lib/datasource/git-tags/index.ts
index f48a66fc10b9a4c5871dad8b95def1aa4da88476..e155a4d2e61bfb10132eddfef86d9ba770a14543 100644
--- a/lib/datasource/git-tags/index.ts
+++ b/lib/datasource/git-tags/index.ts
@@ -18,7 +18,6 @@ export class GitTagsDatasource extends Datasource {
     namespace: `datasource-${GitTagsDatasource.id}`,
     key: ({ lookupName }: GetReleasesConfig) => lookupName,
   })
-  // eslint-disable-next-line class-methods-use-this
   async getReleases({
     lookupName,
   }: GetReleasesConfig): Promise<ReleaseResult | null> {
@@ -48,7 +47,6 @@ export class GitTagsDatasource extends Datasource {
     return result;
   }
 
-  // eslint-disable-next-line class-methods-use-this
   override async getDigest(
     { lookupName }: DigestConfig,
     newValue?: string
diff --git a/lib/datasource/index.ts b/lib/datasource/index.ts
index 7e1adab369a6748928c78d494a9aa9f2a2fa2b58..e77b06d45361e50b8c711a65b6218d063df3f3f6 100644
--- a/lib/datasource/index.ts
+++ b/lib/datasource/index.ts
@@ -354,7 +354,7 @@ export async function getPkgReleases(
   }
   // Strip constraints from releases result
   res.releases.forEach((release) => {
-    delete release.constraints; // eslint-disable-line no-param-reassign
+    delete release.constraints;
   });
   return res;
 }
diff --git a/lib/datasource/jenkins-plugins/get.ts b/lib/datasource/jenkins-plugins/get.ts
index 14b517d6a8928fcce2e6b1ea0af786c7e076003a..a80c96ef2c32a71633b1b120dbf18052b448de62 100644
--- a/lib/datasource/jenkins-plugins/get.ts
+++ b/lib/datasource/jenkins-plugins/get.ts
@@ -28,13 +28,12 @@ async function updateJenkinsCache(
   updateHandler: () => Promise<void>
 ): Promise<void> {
   if (hasCacheExpired(cache)) {
-    // eslint-disable-next-line no-param-reassign
     cache.updatePromise =
       // eslint-disable-next-line @typescript-eslint/no-misused-promises
       cache.updatePromise || updateHandler();
     await cache.updatePromise;
 
-    cache.updatePromise = null; // eslint-disable-line no-param-reassign
+    cache.updatePromise = null;
   }
 }
 
@@ -43,7 +42,6 @@ function updateJenkinsPluginInfoCacheCallback(
   cache: JenkinsCache<ReleaseResult>
 ): void {
   for (const name of Object.keys(response.plugins || [])) {
-    // eslint-disable-next-line no-param-reassign
     cache.cache[name] = {
       releases: [], // releases are stored in another cache
       sourceUrl: response.plugins[name]?.scm,
@@ -57,7 +55,6 @@ function updateJenkinsPluginVersionsCacheCallback(
 ): void {
   const plugins = response.plugins;
   for (const name of Object.keys(plugins || [])) {
-    // eslint-disable-next-line no-param-reassign
     cache.cache[name] = Object.keys(plugins[name]).map((version) => ({
       version,
       downloadUrl: plugins[name][version]?.url,
@@ -89,7 +86,6 @@ async function getJenkinsUpdateCenterResponse<T>(
       `jenkins-plugins: Fetched Jenkins plugins ${cache.name}`
     );
   } catch (err) /* istanbul ignore next */ {
-    // eslint-disable-next-line no-param-reassign
     cache.cache = Object.create(null);
     throw new ExternalHostError(
       new Error(`jenkins-plugins: Fetch plugins ${cache.name} error`)
@@ -101,14 +97,14 @@ async function getJenkinsUpdateCenterResponse<T>(
 
 async function updateJenkinsPluginCache<T>(
   cache: JenkinsCache<JenkinsCacheTypes>,
-  // eslint-disable-next-line @typescript-eslint/no-shadow
+
   callback: (resp: T, cache: JenkinsCache<any>) => void
 ): Promise<void> {
   const response = await getJenkinsUpdateCenterResponse<T>(cache);
   if (response) {
     callback(response, cache);
   }
-  cache.lastSync = new Date(); // eslint-disable-line no-param-reassign
+  cache.lastSync = new Date();
 }
 
 const pluginInfoCache: JenkinsCache<ReleaseResult> = {
@@ -169,9 +165,8 @@ export function getReleases({
 }
 
 function resetJenkinsCache(cache: JenkinsCache<JenkinsCacheTypes>): void {
-  // eslint-disable-next-line no-param-reassign
   cache.lastSync = new Date('2000-01-01');
-  cache.cache = Object.create(null); // eslint-disable-line no-param-reassign
+  cache.cache = Object.create(null);
 }
 
 // Note: use only for tests
diff --git a/lib/datasource/maven/index.spec.ts b/lib/datasource/maven/index.spec.ts
index c6812fd6dbf054b46d05abfabed657852d378c5c..523ddc153ffe2c5f5d46da0eb95bf981dd1a6f78 100644
--- a/lib/datasource/maven/index.spec.ts
+++ b/lib/datasource/maven/index.spec.ts
@@ -315,7 +315,7 @@ describe('datasource/maven/index', () => {
   it('returns null for invalid registryUrls', async () => {
     const res = await get(
       'org.example:package',
-      // eslint-disable-next-line no-template-curly-in-string
+
       '${project.baseUri}../../repository/'
     );
     expect(res).toBeNull();
diff --git a/lib/datasource/metadata.ts b/lib/datasource/metadata.ts
index cd92345a504a468f691958becae0fb39b766177d..25103f1927058ae2e46a4936969fd28d689935b7 100644
--- a/lib/datasource/metadata.ts
+++ b/lib/datasource/metadata.ts
@@ -175,7 +175,6 @@ function massageTimestamps(dep: ReleaseResult): void {
   }
 }
 
-/* eslint-disable no-param-reassign */
 export function addMetaData(
   dep?: ReleaseResult,
   datasource?: string,
diff --git a/lib/datasource/npm/index.spec.ts b/lib/datasource/npm/index.spec.ts
index d685608c9c46959239532c1b47589b9028818dd7..21d15880aaba9baa1835beb04a783c4a7bac0bf8 100644
--- a/lib/datasource/npm/index.spec.ts
+++ b/lib/datasource/npm/index.spec.ts
@@ -358,7 +358,7 @@ describe('datasource/npm/index', () => {
     process.env.REGISTRY = 'https://registry.from-env.com';
     process.env.RENOVATE_CACHE_NPM_MINUTES = '15';
     setGlobalConfig({ exposeAllEnv: true });
-    // eslint-disable-next-line no-template-curly-in-string
+
     const npmrc = 'registry=${REGISTRY}';
     const res = await getPkgReleases({ datasource, depName: 'foobar', npmrc });
     expect(res).toMatchSnapshot();
@@ -367,7 +367,7 @@ describe('datasource/npm/index', () => {
 
   it('should throw error if necessary env var is not present', () => {
     setGlobalConfig({ exposeAllEnv: true });
-    // eslint-disable-next-line no-template-curly-in-string
+
     expect(() => setNpmrc('registry=${REGISTRY_MISSING}')).toThrow(
       Error('env-replace')
     );
diff --git a/lib/datasource/npm/npmrc.spec.ts b/lib/datasource/npm/npmrc.spec.ts
index 6e70054cc249b9814f256ad08234ab6bf8e3226f..1bd3e86e84c59b91702bb64c92d6a8b4a4931686 100644
--- a/lib/datasource/npm/npmrc.spec.ts
+++ b/lib/datasource/npm/npmrc.spec.ts
@@ -21,7 +21,6 @@ describe('datasource/npm/npmrc', () => {
   });
 
   it('sanitize _authtoken', () => {
-    // eslint-disable-next-line no-template-curly-in-string
     setNpmrc('//registry.test.com:_authToken=test\n_authToken=${NPM_TOKEN}');
     expect(sanitize.add).toHaveBeenCalledWith('test');
     expect(sanitize.add).toHaveBeenCalledTimes(1);
@@ -41,7 +40,6 @@ describe('datasource/npm/npmrc', () => {
     setGlobalConfig({ exposeAllEnv: true });
     process.env.TEST_TOKEN = 'test';
     setNpmrc(
-      // eslint-disable-next-line no-template-curly-in-string
       '//registry.test.com:_authToken=${TEST_TOKEN}\n_authToken=\nregistry=http://localhost'
     );
     expect(sanitize.add).toHaveBeenCalledWith('test');
diff --git a/lib/datasource/ruby-version/index.ts b/lib/datasource/ruby-version/index.ts
index c5c845b7b7031727510a9111a71ecba1f7a110c6..ca7646277cdcb9849e3d3b75f0e34df0aa37ba12 100644
--- a/lib/datasource/ruby-version/index.ts
+++ b/lib/datasource/ruby-version/index.ts
@@ -56,7 +56,6 @@ export class RubyVersionDatasource extends Datasource {
     return res;
   }
 
-  // eslint-disable-next-line class-methods-use-this
   override handleSpecificErrors(err: HttpError): never | void {
     throw new ExternalHostError(err);
   }
diff --git a/lib/datasource/terraform-module/index.ts b/lib/datasource/terraform-module/index.ts
index 84f287d57b4b80f9e57764a06dc2cd062fddcd20..0c6d4a44da6496f1846b95b410036e40f3d5ae3c 100644
--- a/lib/datasource/terraform-module/index.ts
+++ b/lib/datasource/terraform-module/index.ts
@@ -83,7 +83,6 @@ export class TerraformModuleDatasource extends TerraformDatasource {
     return dep;
   }
 
-  // eslint-disable-next-line class-methods-use-this
   override handleSpecificErrors(err: HttpError): void {
     const failureCodes = ['EAI_AGAIN'];
     // istanbul ignore if
diff --git a/lib/logger/config-serializer.ts b/lib/logger/config-serializer.ts
index 9f6a33dd180669015338c8d7673d15ded1168d3a..240cbd2f73c22df529ba62a868e8ddfd3f6fecb2 100644
--- a/lib/logger/config-serializer.ts
+++ b/lib/logger/config-serializer.ts
@@ -13,19 +13,16 @@ export default function configSerializer(
   ];
   const arrayFields = ['packageFiles', 'upgrades'];
 
-  return traverse(config).map(
-    // eslint-disable-next-line array-callback-return
-    function scrub(val: string) {
-      if (val && templateFields.includes(this.key)) {
-        this.update('[Template]');
-      }
-      if (val && contentFields.includes(this.key)) {
-        this.update('[content]');
-      }
-      // istanbul ignore if
-      if (val && arrayFields.includes(this.key)) {
-        this.update('[Array]');
-      }
+  return traverse(config).map(function scrub(val: string) {
+    if (val && templateFields.includes(this.key)) {
+      this.update('[Template]');
     }
-  );
+    if (val && contentFields.includes(this.key)) {
+      this.update('[content]');
+    }
+    // istanbul ignore if
+    if (val && arrayFields.includes(this.key)) {
+      this.update('[Array]');
+    }
+  });
 }
diff --git a/lib/logger/utils.ts b/lib/logger/utils.ts
index 0f9abe39c50d3635b604e2c8610704d530d7cdb1..ed605e9193b73bf1dedce2d5a5d51ba3d6f2583e 100644
--- a/lib/logger/utils.ts
+++ b/lib/logger/utils.ts
@@ -108,7 +108,6 @@ export function sanitizeValue(value: unknown, seen = new WeakMap()): any {
   }
 
   if (value instanceof Error) {
-    // eslint-disable-next-line no-param-reassign
     value = prepareError(value);
   }
 
diff --git a/lib/manager/ansible-galaxy/collections.ts b/lib/manager/ansible-galaxy/collections.ts
index adf6f4cd65697ce1905cb79a3baa006e0a7c28b3..ed6877f4c451698b098bd9d31e131d3f38f3b40d 100644
--- a/lib/manager/ansible-galaxy/collections.ts
+++ b/lib/manager/ansible-galaxy/collections.ts
@@ -49,7 +49,6 @@ function handleGitDep(
   dep: PackageDependency,
   nameMatch: RegExpExecArray
 ): void {
-  /* eslint-disable no-param-reassign */
   dep.datasource = GitTagsDatasource.id;
 
   if (nameMatch) {
@@ -80,7 +79,6 @@ function handleGitDep(
 }
 
 function handleGalaxyDep(dep: PackageDependency): void {
-  /* eslint-disable no-param-reassign */
   dep.datasource = GalaxyCollectionDatasource.id;
   dep.depName = dep.managerData.name;
   dep.registryUrls = dep.managerData.source ? [dep.managerData.source] : [];
diff --git a/lib/manager/bundler/extract.ts b/lib/manager/bundler/extract.ts
index 19b5fe5c5d05086056fb61bdbab8eaf6ebda4fe1..228be6f5f26c3f7fce12c15d0154ad123741c31b 100644
--- a/lib/manager/bundler/extract.ts
+++ b/lib/manager/bundler/extract.ts
@@ -141,7 +141,6 @@ export async function extractPackageFile(
       const platformsRes = await extractPackageFile(platformsContent);
       if (platformsRes) {
         res.deps = res.deps.concat(
-          // eslint-disable-next-line no-loop-func
           platformsRes.deps.map((dep) => ({
             ...dep,
             managerData: {
@@ -167,7 +166,6 @@ export async function extractPackageFile(
       const ifRes = await extractPackageFile(ifContent);
       if (ifRes) {
         res.deps = res.deps.concat(
-          // eslint-disable-next-line no-loop-func
           ifRes.deps.map((dep) => ({
             ...dep,
             managerData: {
diff --git a/lib/manager/circleci/extract.ts b/lib/manager/circleci/extract.ts
index 5b76e9cd3e2087b05cb9997de2f435f143d57b0f..800c1eafdbebbefd1e0e2bcc59dd3c69940fc4ee 100644
--- a/lib/manager/circleci/extract.ts
+++ b/lib/manager/circleci/extract.ts
@@ -24,7 +24,7 @@ export function extractPackageFile(content: string): PackageFile | null {
             logger.debug('orbNoop');
             foundOrbOrNoop = true;
             lineNumber += 1;
-            continue; // eslint-disable-line no-continue
+            continue;
           }
           const orbMatch = regEx(/^\s+([^:]+):\s(.+)$/).exec(orbLine); // TODO #12071
           if (orbMatch) {
diff --git a/lib/manager/composer/extract.ts b/lib/manager/composer/extract.ts
index 754109701c918f13cbb2a182d68002e24779b2ad..c6f85f9bbe630ec90d18bf87995bad3cd96fa7fa 100644
--- a/lib/manager/composer/extract.ts
+++ b/lib/manager/composer/extract.ts
@@ -41,11 +41,10 @@ function parseRepositories(
     Object.entries(repoJson).forEach(([key, repo]) => {
       if (is.object(repo)) {
         const name = is.array(repoJson) ? repo.name : key;
-        // eslint-disable-next-line default-case
+
         switch (repo.type) {
           case 'vcs':
           case 'git':
-            // eslint-disable-next-line no-param-reassign
             repositories[name] = repo;
             break;
           case 'composer':
@@ -131,7 +130,6 @@ export async function extractPackageFile(
 
           // Check custom repositories by type
           if (repositories[depName]) {
-            // eslint-disable-next-line default-case
             switch (repositories[depName].type) {
               case 'vcs':
               case 'git':
diff --git a/lib/manager/dockerfile/extract.spec.ts b/lib/manager/dockerfile/extract.spec.ts
index 4caefc8777945bb458e44de7e946090f0d66b66e..6861578bd3842ed7ec7555b025ee2b6e6ee024ab 100644
--- a/lib/manager/dockerfile/extract.spec.ts
+++ b/lib/manager/dockerfile/extract.spec.ts
@@ -619,7 +619,6 @@ describe('manager/dockerfile/extract', () => {
     });
 
     it('handles default environment variable values', () => {
-      // eslint-disable-next-line no-template-curly-in-string
       const res = getDep('${REDIS_IMAGE:-redis:5.0.0@sha256:abcd}');
       expect(res).toMatchInlineSnapshot(`
 Object {
@@ -632,7 +631,6 @@ Object {
 }
 `);
 
-      // eslint-disable-next-line no-template-curly-in-string
       const res2 = getDep('${REDIS_IMAGE:-redis:5.0.0}');
       expect(res2).toMatchInlineSnapshot(`
 Object {
@@ -644,7 +642,6 @@ Object {
 }
 `);
 
-      // eslint-disable-next-line no-template-curly-in-string
       const res3 = getDep('${REDIS_IMAGE:-redis@sha256:abcd}');
       expect(res3).toMatchInlineSnapshot(`
 Object {
@@ -658,7 +655,6 @@ Object {
     });
 
     it('skips tag containing a variable', () => {
-      // eslint-disable-next-line no-template-curly-in-string
       const res = getDep('mcr.microsoft.com/dotnet/sdk:5.0${IMAGESUFFIX}');
       expect(res).toMatchInlineSnapshot(`
         Object {
diff --git a/lib/manager/github-actions/extract.ts b/lib/manager/github-actions/extract.ts
index d5a7bbd234c63831121a8c4bc6be1930248ee81b..42e8c4789ee216b39f96906c0009065d37190c49 100644
--- a/lib/manager/github-actions/extract.ts
+++ b/lib/manager/github-actions/extract.ts
@@ -19,7 +19,7 @@ export function extractPackageFile(content: string): PackageFile | null {
   const deps: PackageDependency[] = [];
   for (const line of content.split('\n')) {
     if (line.trim().startsWith('#')) {
-      continue; // eslint-disable-line no-continue
+      continue;
     }
 
     const dockerMatch = dockerRe.exec(line);
@@ -29,7 +29,7 @@ export function extractPackageFile(content: string): PackageFile | null {
       dep.depType = 'docker';
       dep.versioning = dockerVersioning.id;
       deps.push(dep);
-      continue; // eslint-disable-line no-continue
+      continue;
     }
 
     const tagMatch = actionRe.exec(line);
diff --git a/lib/manager/gitlabci/extract.ts b/lib/manager/gitlabci/extract.ts
index 2d0fee6ce64442792c38113ce4b2752a6749e6cc..23d98d30ac7799c5ae251e561edcf0db6207595e 100644
--- a/lib/manager/gitlabci/extract.ts
+++ b/lib/manager/gitlabci/extract.ts
@@ -105,7 +105,7 @@ export async function extractAllPackageFiles(
     const content = await readLocalFile(file, 'utf8');
     if (!content) {
       logger.debug({ file }, 'Empty or non existent gitlabci file');
-      // eslint-disable-next-line no-continue
+
       continue;
     }
     let doc: GitlabPipeline;
diff --git a/lib/manager/gradle-wrapper/utils.ts b/lib/manager/gradle-wrapper/utils.ts
index eb3f75966de5d3f9e2b306c633b99a45bc71590b..5dd3ebce553e53fc8552c3bf8919bea77d2f5dc9 100644
--- a/lib/manager/gradle-wrapper/utils.ts
+++ b/lib/manager/gradle-wrapper/utils.ts
@@ -30,7 +30,6 @@ export async function prepareGradleCommand(
   gradlew: Stats | null,
   args: string | null
 ): Promise<string> {
-  /* eslint-disable no-bitwise */
   // istanbul ignore if
   if (gradlew?.isFile() === true) {
     // if the file is not executable by others
diff --git a/lib/manager/gradle/deep/build-gradle.spec.ts b/lib/manager/gradle/deep/build-gradle.spec.ts
index 639a906c5c3609492ddd00a9a876ff32661ef2d3..a0db8c000347a86445706e6639a89b1630eacabb 100644
--- a/lib/manager/gradle/deep/build-gradle.spec.ts
+++ b/lib/manager/gradle/deep/build-gradle.spec.ts
@@ -560,7 +560,7 @@ describe('manager/gradle/deep/build-gradle', () => {
 
   it('should replace a external groovy variable assigned to a specific dependency', () => {
     const gradleFile =
-      'runtime (  "mysql:mysql-connector-java:${mysqlVersion}"  )'; // eslint-disable-line no-template-curly-in-string
+      'runtime (  "mysql:mysql-connector-java:${mysqlVersion}"  )';
     const mysqlDependency = {
       group: 'mysql',
       depGroup: 'mysql',
@@ -580,7 +580,7 @@ describe('manager/gradle/deep/build-gradle', () => {
 
   it('should replace a external groovy map variable assigned to a specific dependency', () => {
     const gradleFile =
-      'runtime (  "mysql:mysql-connector-java:${versions.mysqlVersion}"  )'; // eslint-disable-line no-template-curly-in-string
+      'runtime (  "mysql:mysql-connector-java:${versions.mysqlVersion}"  )';
     const mysqlDependency = {
       group: 'mysql',
       depGroup: 'mysql',
@@ -600,7 +600,7 @@ describe('manager/gradle/deep/build-gradle', () => {
 
   it('should replace a external groovy map nested variable assigned to a specific dependency', () => {
     const gradleFile =
-      'runtime (  "mysql:mysql-connector-java:${versions.nested.mysqlVersion}"  )'; // eslint-disable-line no-template-curly-in-string
+      'runtime (  "mysql:mysql-connector-java:${versions.nested.mysqlVersion}"  )';
     const mysqlDependency = {
       group: 'mysql',
       depGroup: 'mysql',
@@ -623,7 +623,7 @@ describe('manager/gradle/deep/build-gradle', () => {
 
   it('should replace a external property variable assigned to a specific dependency', () => {
     const gradleFile =
-      'runtime (  "mysql:mysql-connector-java:${mysqlVersion}"  )'; // eslint-disable-line no-template-curly-in-string
+      'runtime (  "mysql:mysql-connector-java:${mysqlVersion}"  )';
     const mysqlDependency = {
       group: 'mysql',
       depGroup: 'mysql',
@@ -643,7 +643,7 @@ describe('manager/gradle/deep/build-gradle', () => {
 
   it('should replace a external property variable assigned to a specific dependency parenthesis syntax', () => {
     const gradleFile =
-      "implementation platform(group: 'mysql', name: 'mysql-connector-java', version: mysqlVersion)"; // eslint-disable-line no-template-curly-in-string
+      "implementation platform(group: 'mysql', name: 'mysql-connector-java', version: mysqlVersion)";
     const mysqlDependency = {
       group: 'mysql',
       depGroup: 'mysql',
diff --git a/lib/manager/gradle/deep/build-gradle.ts b/lib/manager/gradle/deep/build-gradle.ts
index ef68ad46b18cc9e145c792fc17b6a789a045f90e..5f27d4271d6531b61520ff4554a87b4ad3a64c62 100644
--- a/lib/manager/gradle/deep/build-gradle.ts
+++ b/lib/manager/gradle/deep/build-gradle.ts
@@ -157,7 +157,6 @@ function dependencyStringVariableExpressionFormatMatch(
 ): RegExp {
   return regEx(
     `\\s*dependency\\s+['"]${dependency.group}:${dependency.name}:` +
-      // eslint-disable-next-line no-template-curly-in-string
       '${([^}]*)}' +
       `['"](?:\\s|;|})`
   );
diff --git a/lib/manager/gradle/shallow/parser.spec.ts b/lib/manager/gradle/shallow/parser.spec.ts
index 4c962d4600d6640651e983760d8f2ba7c8b8e59f..dbeaefb3e2d232294dee432c043ff91c2a860359 100644
--- a/lib/manager/gradle/shallow/parser.spec.ts
+++ b/lib/manager/gradle/shallow/parser.spec.ts
@@ -48,7 +48,6 @@ describe('manager/gradle/shallow/parser', () => {
     expect(deps).toBeEmpty();
 
     ({ deps } = parseGradle(
-      // eslint-disable-next-line no-template-curly-in-string
       ['versions.foobar = "1.2.3"', '"foo:bar:${versions.foobar}"'].join('\n')
     ));
     expect(deps).toMatchObject([
diff --git a/lib/manager/gradle/shallow/tokenizer.spec.ts b/lib/manager/gradle/shallow/tokenizer.spec.ts
index 98af7fcb29b6a4ad3379ceb651df0fbdba538a0f..7e4d6bac87f266a997b98b3ada3cfdbead8bb9ba 100644
--- a/lib/manager/gradle/shallow/tokenizer.spec.ts
+++ b/lib/manager/gradle/shallow/tokenizer.spec.ts
@@ -112,19 +112,19 @@ describe('manager/gradle/shallow/tokenizer', () => {
         TokenType.Chars,
         TokenType.DoubleQuotedFinish,
       ],
-      // eslint-disable-next-line no-template-curly-in-string
+
       '"${x}"': [
         TokenType.DoubleQuotedStart,
         TokenType.Variable,
         TokenType.DoubleQuotedFinish,
       ],
-      // eslint-disable-next-line no-template-curly-in-string
+
       '"${foo}"': [
         TokenType.DoubleQuotedStart,
         TokenType.Variable,
         TokenType.DoubleQuotedFinish,
       ],
-      // eslint-disable-next-line no-template-curly-in-string
+
       '"${x()}"': [
         TokenType.DoubleQuotedStart,
         TokenType.IgnoredInterpolationStart,
@@ -132,7 +132,7 @@ describe('manager/gradle/shallow/tokenizer', () => {
         TokenType.RightBrace,
         TokenType.DoubleQuotedFinish,
       ],
-      // eslint-disable-next-line no-template-curly-in-string
+
       '"${x{}}"': [
         TokenType.DoubleQuotedStart,
         TokenType.IgnoredInterpolationStart,
@@ -162,7 +162,7 @@ describe('manager/gradle/shallow/tokenizer', () => {
           children: [{ type: TokenType.Variable }],
         },
       ],
-      // eslint-disable-next-line no-template-curly-in-string
+
       '" foo ${ bar } baz "': [
         {
           type: TokenType.StringInterpolation,
@@ -173,7 +173,7 @@ describe('manager/gradle/shallow/tokenizer', () => {
           ],
         },
       ],
-      // eslint-disable-next-line no-template-curly-in-string
+
       '"${ x + y }"': [{ type: TokenType.StringInterpolation, isValid: false }],
     };
     for (const [str, result] of Object.entries(samples)) {
diff --git a/lib/manager/helmfile/extract.ts b/lib/manager/helmfile/extract.ts
index 39544b7456c5ef0a697bea9ee6ca31bd10595588..c071b9d2e855346748cea6abd08061164d649cfe 100644
--- a/lib/manager/helmfile/extract.ts
+++ b/lib/manager/helmfile/extract.ts
@@ -26,7 +26,7 @@ export function extractPackageFile(
   }
   for (const doc of docs) {
     if (!(doc && is.array(doc.releases))) {
-      continue; // eslint-disable-line no-continue
+      continue;
     }
 
     if (doc.repositories) {
diff --git a/lib/manager/maven/extract.spec.ts b/lib/manager/maven/extract.spec.ts
index 84961fc53878a116419c954f2e3ab5f14fd7a9b7..e850cd1808c6b27b30b00c51d5e9f286f1d3bde6 100644
--- a/lib/manager/maven/extract.spec.ts
+++ b/lib/manager/maven/extract.spec.ts
@@ -1,4 +1,3 @@
-/* eslint-disable no-template-curly-in-string */
 import { loadFixture } from '../../../test/util';
 import { extractPackage } from './extract';
 
diff --git a/lib/manager/maven/extract.ts b/lib/manager/maven/extract.ts
index 28e72a80540a4e36e85a839cfd35937d7a844fb2..82642719a399722ad2128fa9784ee2e302312200 100644
--- a/lib/manager/maven/extract.ts
+++ b/lib/manager/maven/extract.ts
@@ -273,7 +273,7 @@ export function resolveParents(packages: PackageFile[]): PackageFile[] {
     const pkg = extractedPackages[name];
     pkg.deps.forEach((rawDep) => {
       const urlsSet = new Set([...rawDep.registryUrls, ...registryUrls[name]]);
-      rawDep.registryUrls = [...urlsSet]; // eslint-disable-line no-param-reassign
+      rawDep.registryUrls = [...urlsSet];
     });
   });
 
@@ -297,9 +297,9 @@ function cleanResult(
   packageFiles: PackageFile<Record<string, any>>[]
 ): PackageFile<Record<string, any>>[] {
   packageFiles.forEach((packageFile) => {
-    delete packageFile.mavenProps; // eslint-disable-line no-param-reassign
+    delete packageFile.mavenProps;
     packageFile.deps.forEach((dep) => {
-      delete dep.propSource; // eslint-disable-line no-param-reassign
+      delete dep.propSource;
     });
   });
   return packageFiles;
diff --git a/lib/manager/maven/index.spec.ts b/lib/manager/maven/index.spec.ts
index fffedd425eb14936c55970dc41f7bab8dd27740d..3202922bac9595f7e4114e68b00af8648507cb9b 100644
--- a/lib/manager/maven/index.spec.ts
+++ b/lib/manager/maven/index.spec.ts
@@ -1,4 +1,3 @@
-/* eslint-disable no-template-curly-in-string */
 import { fs, loadFixture } from '../../../test/util';
 import type { PackageDependency, PackageFile } from '../types';
 import { extractPackage, resolveParents } from './extract';
diff --git a/lib/manager/npm/extract/index.spec.ts b/lib/manager/npm/extract/index.spec.ts
index 7226b7cc7687bc2af450105227ae0f27d22072dd..c9c74ae51d4cf68354cc0be48b72abdb724d015f 100644
--- a/lib/manager/npm/extract/index.spec.ts
+++ b/lib/manager/npm/extract/index.spec.ts
@@ -153,7 +153,6 @@ describe('manager/npm/extract/index', () => {
     it('finds and filters .npmrc with variables', async () => {
       fs.readLocalFile = jest.fn((fileName) => {
         if (fileName === '.npmrc') {
-          // eslint-disable-next-line
           return 'registry=https://registry.npmjs.org\n//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}\n';
         }
         return null;
diff --git a/lib/manager/npm/extract/index.ts b/lib/manager/npm/extract/index.ts
index 1702c419c76809d4e18d3d0b7dbdfa28a25a853a..6ec6352b38f0fb2c81a3f1003cde393ffe583ed4 100644
--- a/lib/manager/npm/extract/index.ts
+++ b/lib/manager/npm/extract/index.ts
@@ -49,7 +49,7 @@ export async function extractPackageFile(
     logger.debug({ fileName }, 'Invalid JSON');
     return null;
   }
-  // eslint-disable-next-line no-underscore-dangle
+
   if (packageJson._id && packageJson._args && packageJson._from) {
     logger.debug('Ignoring vendorised package.json');
     return null;
diff --git a/lib/manager/npm/extract/monorepo.ts b/lib/manager/npm/extract/monorepo.ts
index f8128902e7fb63ba769c79d92464a9225929b252..a33a21f8bb52728f734fac580b909b403d172348 100644
--- a/lib/manager/npm/extract/monorepo.ts
+++ b/lib/manager/npm/extract/monorepo.ts
@@ -42,7 +42,7 @@ export async function detectMonorepos(
       if (!updateInternalDeps) {
         p.deps?.forEach((dep) => {
           if (internalPackageNames.includes(dep.depName)) {
-            dep.skipReason = SkipReason.InternalPackage; // eslint-disable-line no-param-reassign
+            dep.skipReason = SkipReason.InternalPackage;
           }
         });
       }
@@ -61,7 +61,7 @@ export async function detectMonorepos(
         if (!updateInternalDeps) {
           subPackage.deps?.forEach((dep) => {
             if (internalPackageNames.includes(dep.depName)) {
-              dep.skipReason = SkipReason.InternalPackage; // eslint-disable-line no-param-reassign
+              dep.skipReason = SkipReason.InternalPackage;
             }
           });
         }
diff --git a/lib/manager/npm/extract/pnpm.ts b/lib/manager/npm/extract/pnpm.ts
index a394c6aafe09b13a99a749b66eb5d2ee1807e961..64475e6eba31f2bfbb5d712f3d6d19db9e4a7dd7 100644
--- a/lib/manager/npm/extract/pnpm.ts
+++ b/lib/manager/npm/extract/pnpm.ts
@@ -85,13 +85,13 @@ export async function detectPnpmWorkspaces(
         { packageFile, pnpmShrinkwrap },
         'Found an existing pnpm shrinkwrap file; skipping pnpm monorepo check.'
       );
-      continue; // eslint-disable-line no-continue
+      continue;
     }
 
     // search for corresponding pnpm workspace
     const pnpmWorkspace = await findPnpmWorkspace(packageFile);
     if (pnpmWorkspace === null) {
-      continue; // eslint-disable-line no-continue
+      continue;
     }
     const { workspaceYamlPath, lockFilePath } = pnpmWorkspace;
 
diff --git a/lib/manager/npm/post-update/index.ts b/lib/manager/npm/post-update/index.ts
index 636ca8b5cb355a61839b1f716240f2eb94e12775..4a827520894f5e5b5cad5b7c42a8434614d46a84 100644
--- a/lib/manager/npm/post-update/index.ts
+++ b/lib/manager/npm/post-update/index.ts
@@ -64,7 +64,7 @@ export function determineLockFileDirs(
         npmLockDirs.push(upgrade.npmLock);
         pnpmShrinkwrapDirs.push(upgrade.pnpmShrinkwrap);
       }
-      continue; // eslint-disable-line no-continue
+      continue;
     }
     if (upgrade.isLockfileUpdate) {
       yarnLockDirs.push(upgrade.yarnLock);
@@ -244,10 +244,10 @@ export async function writeUpdatedPackageFiles(
         upath.join(localDir, packageFile.name),
         packageFile.contents
       );
-      continue; // eslint-disable-line
+      continue;
     }
     if (!packageFile.name.endsWith('package.json')) {
-      continue; // eslint-disable-line
+      continue;
     }
     logger.debug(`Writing ${String(packageFile.name)}`);
     const massagedFile = JSON.parse(packageFile.contents.toString());
diff --git a/lib/manager/npm/update/dependency/index.ts b/lib/manager/npm/update/dependency/index.ts
index 67d2a211ae17c28f47270b52fe0a95a621e9303d..838e461105f12aae9afa479708fd17a1a6846d25 100644
--- a/lib/manager/npm/update/dependency/index.ts
+++ b/lib/manager/npm/update/dependency/index.ts
@@ -14,10 +14,8 @@ function replaceAsString(
 ): string | null {
   // Update the file = this is what we want
   if (depType === 'packageManager') {
-    // eslint-disable-next-line no-param-reassign
     parsedContents[depType] = newValue;
   } else {
-    // eslint-disable-next-line no-param-reassign
     parsedContents[depType][depName] = newValue;
   }
   // Look for the old version number
diff --git a/lib/manager/pip_requirements/extract.spec.ts b/lib/manager/pip_requirements/extract.spec.ts
index 8f28c14fcb1c74e1cfb18a786e03b9c410aa8805..551aec84e366acfb254e6a127c076ff137f81e51 100644
--- a/lib/manager/pip_requirements/extract.spec.ts
+++ b/lib/manager/pip_requirements/extract.spec.ts
@@ -115,10 +115,10 @@ describe('manager/pip_requirements/extract', () => {
       expect(res.registryUrls).toEqual([
         'https://pypi.org/pypi/',
         'http://$PIP_TEST_TOKEN:example.com/private-pypi/',
-        // eslint-disable-next-line no-template-curly-in-string
+
         'http://${PIP_TEST_TOKEN}:example.com/private-pypi/',
         'http://$PIP_TEST_TOKEN:example.com/private-pypi/',
-        // eslint-disable-next-line no-template-curly-in-string
+
         'http://${PIP_TEST_TOKEN}:example.com/private-pypi/',
       ]);
     });
diff --git a/lib/manager/swift/extract.ts b/lib/manager/swift/extract.ts
index cff2eceb9cf2b9ca525504f64d59f98cc85e19af..14476c5f559d7159ac4ee24ecb9709718cec4994 100644
--- a/lib/manager/swift/extract.ts
+++ b/lib/manager/swift/extract.ts
@@ -166,7 +166,7 @@ export function extractPackageFile(
 
   while (match) {
     const { idx, len, label, substr } = match;
-    // eslint-disable-next-line default-case
+
     switch (state) {
       case null:
         if (deps.length) {
diff --git a/lib/manager/terraform/extract.ts b/lib/manager/terraform/extract.ts
index cdca8db112ef241ecc76d153042824ac33454b58..3034ab895884b14507d063159fcd62819abf8601 100644
--- a/lib/manager/terraform/extract.ts
+++ b/lib/manager/terraform/extract.ts
@@ -145,7 +145,7 @@ export async function extractPackageFile(
       /* istanbul ignore next */
       default:
     }
-    // eslint-disable-next-line no-param-reassign
+
     delete dep.managerData;
   });
   if (deps.some((dep) => dep.skipReason !== 'local')) {
diff --git a/lib/manager/terraform/modules.ts b/lib/manager/terraform/modules.ts
index ae24e68fda38aefe5de6f28ee66ddc10d3550085..c734b38122610f820abdf51da62a20ef2253bd13 100644
--- a/lib/manager/terraform/modules.ts
+++ b/lib/manager/terraform/modules.ts
@@ -24,7 +24,6 @@ export function extractTerraformModule(
 ): ExtractionResult {
   const result = extractTerraformProvider(startingLine, lines, moduleName);
   result.dependencies.forEach((dep) => {
-    // eslint-disable-next-line no-param-reassign
     dep.managerData.terraformDependencyType = TerraformDependencyTypes.module;
   });
   return result;
@@ -33,7 +32,7 @@ export function extractTerraformModule(
 export function analyseTerraformModule(dep: PackageDependency): void {
   const githubRefMatch = githubRefMatchRegex.exec(dep.managerData.source);
   const gitTagsRefMatch = gitTagsRefMatchRegex.exec(dep.managerData.source);
-  /* eslint-disable no-param-reassign */
+
   if (githubRefMatch) {
     dep.lookupName = githubRefMatch.groups.project.replace(regEx(/\.git$/), '');
     dep.depType = 'module';
diff --git a/lib/manager/terraform/providers.ts b/lib/manager/terraform/providers.ts
index b0d0a37b7d519154d3fa50231d19e8ab93886b4c..42bdd842367fe77ce9fa319ac6787ba34fe8265f 100644
--- a/lib/manager/terraform/providers.ts
+++ b/lib/manager/terraform/providers.ts
@@ -75,7 +75,6 @@ export function analyzeTerraformProvider(
   dep: PackageDependency,
   locks: ProviderLock[]
 ): void {
-  /* eslint-disable no-param-reassign */
   dep.depType = 'provider';
   dep.depName = dep.managerData.moduleName;
   dep.datasource = TerraformProviderDatasource.id;
diff --git a/lib/manager/terraform/required-providers.ts b/lib/manager/terraform/required-providers.ts
index 6ac73de5120b8c340de4989011fbe69c42a240f9..555d2650e9cc9d6bbabdf3b7dc9e2d426c9b9f61 100644
--- a/lib/manager/terraform/required-providers.ts
+++ b/lib/manager/terraform/required-providers.ts
@@ -20,7 +20,6 @@ function extractBlock(
     line = lines[lineNumber];
     const kvMatch = keyValueExtractionRegex.exec(line);
     if (kvMatch) {
-      /* eslint-disable no-param-reassign */
       switch (kvMatch.groups.key) {
         case 'source':
           dep.managerData.source = kvMatch.groups.value;
@@ -78,7 +77,6 @@ export function analyzeTerraformRequiredProvider(
   dep: PackageDependency,
   locks: ProviderLock[]
 ): void {
-  /* eslint-disable no-param-reassign */
   analyzeTerraformProvider(dep, locks);
   dep.depType = `required_provider`;
   /* eslint-enable no-param-reassign */
diff --git a/lib/manager/terraform/required-version.ts b/lib/manager/terraform/required-version.ts
index dc16f52211336cb2c08596424ba4e83baab75b8d..23d3bc88f4a940dd166238dff2a59b3a900e4950 100644
--- a/lib/manager/terraform/required-version.ts
+++ b/lib/manager/terraform/required-version.ts
@@ -45,7 +45,6 @@ export function extractTerraformRequiredVersion(
 }
 
 export function analyseTerraformVersion(dep: PackageDependency): void {
-  /* eslint-disable no-param-reassign */
   dep.depType = 'required_version';
   dep.datasource = datasourceGithubTags.id;
   dep.depName = 'hashicorp/terraform';
diff --git a/lib/manager/terraform/resources.ts b/lib/manager/terraform/resources.ts
index 075a1b63b3458984e1161e9706c6e05c72838edb..396fb4459db5d41aca03fee247de2159e60d80c4 100644
--- a/lib/manager/terraform/resources.ts
+++ b/lib/manager/terraform/resources.ts
@@ -65,8 +65,6 @@ export function extractTerraformResource(
 export function analyseTerraformResource(
   dep: PackageDependency<ResourceManagerData>
 ): void {
-  /* eslint-disable no-param-reassign */
-
   switch (dep.managerData.resourceType) {
     case TerraformResourceTypes.docker_container:
       if (dep.managerData.image) {
diff --git a/lib/manager/terraform/util.ts b/lib/manager/terraform/util.ts
index 9793c547c15b22f4a062e18431b7060a93acd23e..e804c5d7cb7f576a7dcdbbbaa51cef55104f5664 100644
--- a/lib/manager/terraform/util.ts
+++ b/lib/manager/terraform/util.ts
@@ -50,7 +50,6 @@ export function checkIfStringIsPath(path: string): boolean {
 }
 
 export function massageProviderLookupName(dep: PackageDependency): void {
-  /* eslint-disable no-param-reassign */
   if (!dep.lookupName) {
     dep.lookupName = dep.depName;
   }
diff --git a/lib/manager/terragrunt/extract.ts b/lib/manager/terragrunt/extract.ts
index 978359b6a83783825bac6b3e10449a1b56c8b771..aefc1140683eacdb242cd16860f9490776098db4 100644
--- a/lib/manager/terragrunt/extract.ts
+++ b/lib/manager/terragrunt/extract.ts
@@ -61,7 +61,7 @@ export function extractPackageFile(content: string): PackageFile | null {
       /* istanbul ignore next */
       default:
     }
-    // eslint-disable-next-line no-param-reassign
+
     delete dep.managerData;
   });
   return { deps };
diff --git a/lib/manager/terragrunt/modules.ts b/lib/manager/terragrunt/modules.ts
index f10ba1486ed60ba961910d614557b50a883fa653..3657acdb7ad53d4ba80f7520a02393ad61573300 100644
--- a/lib/manager/terragrunt/modules.ts
+++ b/lib/manager/terragrunt/modules.ts
@@ -24,7 +24,6 @@ export function extractTerragruntModule(
   const moduleName = 'terragrunt';
   const result = extractTerragruntProvider(startingLine, lines, moduleName);
   result.dependencies.forEach((dep) => {
-    // eslint-disable-next-line no-param-reassign
     dep.managerData.terragruntDependencyType =
       TerragruntDependencyTypes.terragrunt;
   });
@@ -34,7 +33,7 @@ export function extractTerragruntModule(
 export function analyseTerragruntModule(dep: PackageDependency): void {
   const githubRefMatch = githubRefMatchRegex.exec(dep.managerData.source);
   const gitTagsRefMatch = gitTagsRefMatchRegex.exec(dep.managerData.source);
-  /* eslint-disable no-param-reassign */
+
   if (githubRefMatch) {
     dep.depType = 'github';
     dep.lookupName = githubRefMatch.groups.project.replace(regEx(/\.git$/), '');
diff --git a/lib/platform/azure/azure-helper.spec.ts b/lib/platform/azure/azure-helper.spec.ts
index 1476ccfa8fc76243e808de1ef637b46f34a6cd1c..18d3d23e232dacc0960f5198fbf368587684f917 100644
--- a/lib/platform/azure/azure-helper.spec.ts
+++ b/lib/platform/azure/azure-helper.spec.ts
@@ -78,8 +78,7 @@ describe('platform/azure/azure-helper', () => {
       let eventCount = 0;
       const mockEventStream = new Readable({
         objectMode: true,
-        /* eslint-disable func-names */
-        /* eslint-disable object-shorthand */
+
         read: function () {
           if (eventCount < 1) {
             eventCount += 1;
@@ -108,8 +107,7 @@ describe('platform/azure/azure-helper', () => {
       let eventCount = 0;
       const mockEventStream = new Readable({
         objectMode: true,
-        /* eslint-disable func-names */
-        /* eslint-disable object-shorthand */
+
         read: function () {
           if (eventCount < 1) {
             eventCount += 1;
@@ -138,8 +136,7 @@ describe('platform/azure/azure-helper', () => {
       let eventCount = 0;
       const mockEventStream = new Readable({
         objectMode: true,
-        /* eslint-disable func-names */
-        /* eslint-disable object-shorthand */
+
         read: function () {
           if (eventCount < 1) {
             eventCount += 1;
diff --git a/lib/platform/azure/index.spec.ts b/lib/platform/azure/index.spec.ts
index a2a2cf2f42aeaba879b82b2d4623cccdb9ca6734..7dedd447a17e5b7ee622c6a88123d5c949c21056 100644
--- a/lib/platform/azure/index.spec.ts
+++ b/lib/platform/azure/index.spec.ts
@@ -47,7 +47,7 @@ describe('platform/azure/index', () => {
   });
 
   // do we need the args?
-  // eslint-disable-next-line @typescript-eslint/no-unused-vars
+
   function getRepos(_token: string, _endpoint: string) {
     azureApi.gitApi.mockImplementationOnce(
       () =>
diff --git a/lib/platform/azure/index.ts b/lib/platform/azure/index.ts
index 079286f474d3685b5d3612c806e205bfcb0b7bb1..83124b4be09d4d62b2ade0d9ff9a5b461552b318 100644
--- a/lib/platform/azure/index.ts
+++ b/lib/platform/azure/index.ts
@@ -719,7 +719,6 @@ async function getUserIds(users: string[]): Promise<User[]> {
   const members = await Promise.all(
     teams.map(
       async (t) =>
-        /* eslint-disable no-return-await,@typescript-eslint/return-await */
         await azureApiCore.getTeamMembersWithExtendedProperties(
           repo.project.id,
           t.id
diff --git a/lib/platform/azure/util.ts b/lib/platform/azure/util.ts
index 20820ccdd9d7bdc3da692096fe71975cc8e68bae..7f0c2498e975a69ef9e9139b55faade2ff727fd7 100644
--- a/lib/platform/azure/util.ts
+++ b/lib/platform/azure/util.ts
@@ -123,7 +123,7 @@ export async function streamToString(
   stream: NodeJS.ReadableStream
 ): Promise<string> {
   const chunks: Uint8Array[] = [];
-  /* eslint-disable promise/avoid-new */
+
   const p = await new Promise<string>((resolve, reject) => {
     stream.on('data', (chunk) => chunks.push(Buffer.from(chunk)));
     stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
diff --git a/lib/platform/bitbucket/index.ts b/lib/platform/bitbucket/index.ts
index f203d77e29c7f0bcfa33d1ab440ba04838ced8e8..992b5a053084d765df789e2f88da76496dccda6d 100644
--- a/lib/platform/bitbucket/index.ts
+++ b/lib/platform/bitbucket/index.ts
@@ -582,7 +582,6 @@ export async function ensureIssueClosing(title: string): Promise<void> {
   }
 }
 
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
 export function addAssignees(
   _prNr: number,
   _assignees: string[]
diff --git a/lib/platform/index.ts b/lib/platform/index.ts
index 8b6a7241dc44d1eefc9439cbb8b5bb9aaf3e66e0..8764d76ae37d0f5ced47da1d78b57cc0c4f34356 100644
--- a/lib/platform/index.ts
+++ b/lib/platform/index.ts
@@ -13,7 +13,6 @@ export * from './types';
 export const getPlatformList = (): string[] => Array.from(platforms.keys());
 export const getPlatforms = (): Map<string, Platform> => platforms;
 
-// eslint-disable-next-line @typescript-eslint/naming-convention
 let _platform: Platform;
 
 const handler: ProxyHandler<Platform> = {
diff --git a/lib/util/exec/index.spec.ts b/lib/util/exec/index.spec.ts
index 6480b8b54cd9ab819eeaddf94663c4e7e018d009..86a61a213ab6872b26e1113a9ffa3c0eebeb765a 100644
--- a/lib/util/exec/index.spec.ts
+++ b/lib/util/exec/index.spec.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/naming-convention */
 import {
   ExecOptions as ChildProcessExecOptions,
   exec as _cpExec,
diff --git a/lib/util/http/auth.ts b/lib/util/http/auth.ts
index 59dba806f715643a4801eaa5474c67c13f42195e..cd182af48d111ff365b3cc0f2661d348dd67fc2e 100644
--- a/lib/util/http/auth.ts
+++ b/lib/util/http/auth.ts
@@ -86,14 +86,13 @@ export function removeAuthorization(options: NormalizedOptions): void {
     const portInUrl = options.href.split('/')[2].split(':')[1];
     // istanbul ignore next
     if (!portInUrl) {
-      // eslint-disable-next-line no-param-reassign
       delete options.port; // Redirect will instead use 80 or 443 for HTTP or HTTPS respectively
     }
 
     // registry is hosted on Amazon or Azure blob, redirect url includes
     // authentication which is not required and should be removed
-    delete options.headers.authorization; // eslint-disable-line no-param-reassign
-    delete options.username; // eslint-disable-line no-param-reassign
-    delete options.password; // eslint-disable-line no-param-reassign
+    delete options.headers.authorization;
+    delete options.username;
+    delete options.password;
   }
 }
diff --git a/lib/util/http/index.ts b/lib/util/http/index.ts
index 0dc25d94f381347e3be51f5e3d703987f2f66f80..6baddc7fd377e50a2cd1b24d25cb40e1d31d9a0c 100644
--- a/lib/util/http/index.ts
+++ b/lib/util/http/index.ts
@@ -72,11 +72,11 @@ function applyDefaultHeaders(options: Options): void {
   let renovateVersion = 'unknown';
   try {
     // eslint-disable-next-line @typescript-eslint/no-var-requires
-    renovateVersion = require('../../../package.json').version; // eslint-disable-line global-require
+    renovateVersion = require('../../../package.json').version;
   } catch (err) /* istanbul ignore next */ {
     logger.debug({ err }, 'Error getting renovate version');
   }
-  // eslint-disable-next-line no-param-reassign
+
   options.headers = {
     ...options.headers,
     'user-agent':
@@ -295,7 +295,6 @@ export class Http<GetOptions = HttpOptions, PostOptions = HttpPostOptions> {
 
     // istanbul ignore else: needs test
     if (options?.baseUrl) {
-      // eslint-disable-next-line no-param-reassign
       url = resolveBaseUrl(options.baseUrl, url);
     }
 
diff --git a/lib/util/index.ts b/lib/util/index.ts
index 0d7c8fbf0f079ab32703f3441143c5be0f1a4918..4dd875664b5f35280a8517a9dc8f4a376938c78a 100644
--- a/lib/util/index.ts
+++ b/lib/util/index.ts
@@ -3,7 +3,7 @@ export function sampleSize(array: string[], n: number): string[] {
   if (!length || n < 1) {
     return [];
   }
-  // eslint-disable-next-line no-param-reassign
+
   n = n > length ? length : n;
   let index = 0;
   const lastIndex = length - 1;
diff --git a/lib/util/regex.spec.ts b/lib/util/regex.spec.ts
index b0dad6a8b310e9959316fb9bd18b4d972f2c256d..49951096c33cd9ecc034f8080f62f1bbae4bc6a5 100644
--- a/lib/util/regex.spec.ts
+++ b/lib/util/regex.spec.ts
@@ -1,4 +1,3 @@
-// eslint-disable-next-line import/no-extraneous-dependencies
 import RE2 from 're2';
 import { CONFIG_VALIDATION } from '../constants/error-messages';
 import { regEx } from './regex';
diff --git a/lib/util/regex.ts b/lib/util/regex.ts
index 19b203ea51204686b91c67c976563d60564633bd..ac956bf18ce45bf21f6973c6423eaa786544881b 100644
--- a/lib/util/regex.ts
+++ b/lib/util/regex.ts
@@ -1,6 +1,6 @@
 import is from '@sindresorhus/is';
 import { CONFIG_VALIDATION } from '../constants/error-messages';
-// eslint-disable-next-line import/no-cycle
+
 import { logger } from '../logger';
 
 let RegEx: RegExpConstructor;
diff --git a/lib/versioning/index.spec.ts b/lib/versioning/index.spec.ts
index 87f63c9526bb52cba5c97ddb88cbfc85ab9adef6..da1137ccac1e0a5dcb4bed007fb4eb29ad6272c1 100644
--- a/lib/versioning/index.spec.ts
+++ b/lib/versioning/index.spec.ts
@@ -20,7 +20,6 @@ describe('versioning/index', () => {
       module: VersioningApi | VersioningApiConstructor,
       name: string
     ): boolean {
-      // eslint-disable-next-line new-cap
       const mod = isVersioningApiConstructor(module) ? new module() : module;
 
       // TODO: test required api (#9715)
@@ -81,7 +80,6 @@ describe('versioning/index', () => {
             props.push(prop);
           }
         });
-        // eslint-disable-next-line no-cond-assign
       } while ((o = Object.getPrototypeOf(o)));
 
       return props;
@@ -112,12 +110,10 @@ describe('versioning/index', () => {
 
     it('dummy', () => {
       class DummyScheme extends GenericVersioningApi {
-        // eslint-disable-next-line class-methods-use-this
         protected override _compare(_version: string, _other: string): number {
           throw new Error('Method not implemented.');
         }
 
-        // eslint-disable-next-line class-methods-use-this
         protected _parse(_version: string): GenericVersion {
           throw new Error('Method not implemented.');
         }
diff --git a/lib/versioning/index.ts b/lib/versioning/index.ts
index a192f8353833cb131d69aa9e543fb131248323b4..0bdc0e7d6c15a211de6351b2df33da7c42e32506 100644
--- a/lib/versioning/index.ts
+++ b/lib/versioning/index.ts
@@ -35,7 +35,6 @@ export function get(versioning: string): VersioningApi {
     return versionings.get('semver') as VersioningApi;
   }
   if (isVersioningApiConstructor(theVersioning)) {
-    // eslint-disable-next-line new-cap
     return new theVersioning(versioningConfig);
   }
   return theVersioning;
diff --git a/lib/versioning/loose/generic.ts b/lib/versioning/loose/generic.ts
index 55646f2b704d5267efa7c07f3ef0461674f550fc..609adec8c144097e8bd2cde43119f42601551c2c 100644
--- a/lib/versioning/loose/generic.ts
+++ b/lib/versioning/loose/generic.ts
@@ -175,7 +175,7 @@ export abstract class GenericVersioningApi<
   /*
    * virtual
    */
-  // eslint-disable-next-line class-methods-use-this
+
   protected _compareOther(_left: T, _right: T): number {
     return 0;
   }
@@ -235,7 +235,6 @@ export abstract class GenericVersioningApi<
     return versions.find((v) => this.equals(v, range)) || null;
   }
 
-  // eslint-disable-next-line class-methods-use-this
   getNewValue(newValueConfig: NewValueConfig): string {
     const { newVersion } = newValueConfig || {};
     return newVersion;
diff --git a/lib/versioning/loose/utils.spec.ts b/lib/versioning/loose/utils.spec.ts
index 0a2e2652ab98b3996352662f87324529a7d133b3..4b503762d0c9983272a01a5b6cc0e126164aaa18 100644
--- a/lib/versioning/loose/utils.spec.ts
+++ b/lib/versioning/loose/utils.spec.ts
@@ -23,7 +23,6 @@ describe('versioning/loose/utils', () => {
           props.push(prop);
         }
       });
-      // eslint-disable-next-line no-cond-assign
     } while ((o = Object.getPrototypeOf(o)));
 
     return props;
@@ -31,12 +30,10 @@ describe('versioning/loose/utils', () => {
 
   describe('GenericVersioningApi', () => {
     class DummyScheme extends GenericVersioningApi {
-      // eslint-disable-next-line class-methods-use-this
       protected override _compare(_version: string, _other: string): number {
         return _version ? _version.localeCompare(_other) : 0;
       }
 
-      // eslint-disable-next-line class-methods-use-this
       protected _parse(_version: string): GenericVersion {
         return _version === 'test' ? null : { release: [1, 0, 0] };
       }
diff --git a/lib/versioning/regex/index.ts b/lib/versioning/regex/index.ts
index f597df18a8da167406a1c2adeabe308aba2d8f4a..7c3efde70533345b1356f13ed6f59b50ed17b2fd 100644
--- a/lib/versioning/regex/index.ts
+++ b/lib/versioning/regex/index.ts
@@ -44,7 +44,6 @@ export class RegExpVersioningApi extends GenericVersioningApi<RegExpVersion> {
   constructor(new_config: string) {
     super();
     if (!new_config) {
-      // eslint-disable-next-line no-param-reassign
       new_config = '^(?<major>\\d+)?$';
     }
 
diff --git a/lib/workers/branch/get-updated.ts b/lib/workers/branch/get-updated.ts
index 49263f05d830fac2adb08e027b1218cb1d69bd4c..287c705488a3c9ee68ee46234a3e02074b501b0f 100644
--- a/lib/workers/branch/get-updated.ts
+++ b/lib/workers/branch/get-updated.ts
@@ -120,7 +120,7 @@ export async function getUpdatedPackageFiles(
             logger.debug({ packageFile, depName }, 'Contents updated');
             updatedFileContents[packageFile] = res;
           }
-          continue; // eslint-disable-line no-continue
+          continue;
         } else if (reuseExistingBranch) {
           return getUpdatedPackageFiles({
             ...config,
diff --git a/lib/workers/branch/index.ts b/lib/workers/branch/index.ts
index 00d27a9ac4fc8364e4e54aa89acfb51dda0a7123..e6fec35819a432bdc48cac03ae59a95b7acb9844 100644
--- a/lib/workers/branch/index.ts
+++ b/lib/workers/branch/index.ts
@@ -289,7 +289,7 @@ export async function processBranch(
               'Update has not passed stability days'
             );
             config.stabilityStatus = BranchStatus.yellow;
-            continue; // eslint-disable-line no-continue
+            continue;
           }
         }
         const {
@@ -316,7 +316,7 @@ export async function processBranch(
               'Update does not meet minimum confidence scores'
             );
             config.confidenceStatus = BranchStatus.yellow;
-            continue; // eslint-disable-line no-continue
+            continue;
           }
         }
       }
diff --git a/lib/workers/global/config/parse/cli.ts b/lib/workers/global/config/parse/cli.ts
index a318e9944151c1ff3af5f9360101832de767106b..31a3912827d469efd3186f131f4b18c26ab122d5 100644
--- a/lib/workers/global/config/parse/cli.ts
+++ b/lib/workers/global/config/parse/cli.ts
@@ -87,7 +87,6 @@ export function getConfig(input: string[]): AllConfig {
 
   /* istanbul ignore next */
   function helpConsole(): void {
-    /* eslint-disable no-console */
     console.log('  Examples:');
     console.log('');
     console.log('    $ renovate --token 123test singapore/lint-condo');
diff --git a/lib/workers/global/config/parse/env.ts b/lib/workers/global/config/parse/env.ts
index f7268d74cb3cdca3cddcabf7e2172b9b84519e44..ca969854314faf99307f6c744b7dbb6c34f021f1 100644
--- a/lib/workers/global/config/parse/env.ts
+++ b/lib/workers/global/config/parse/env.ts
@@ -129,7 +129,7 @@ export function getConfig(inputEnv: NodeJS.ProcessEnv): AllConfig {
     'VSTS_ENDPOINT',
     'VSTS_TOKEN',
   ];
-  // eslint-disable-next-line no-param-reassign
+
   unsupportedEnv.forEach((val) => delete env[val]);
 
   return config;
diff --git a/lib/workers/global/config/parse/file.ts b/lib/workers/global/config/parse/file.ts
index 0acf7b0aaebb50d19786794830c63a871e4eb3ed..5cab40ee0e5b6d31ddcc2cfa0b3acb106f4ce7a1 100644
--- a/lib/workers/global/config/parse/file.ts
+++ b/lib/workers/global/config/parse/file.ts
@@ -11,7 +11,6 @@ export function getConfig(env: NodeJS.ProcessEnv): AllConfig {
   }
   let config: AllConfig = {};
   try {
-    // eslint-disable-next-line global-require,import/no-dynamic-require
     config = require(configFile);
   } catch (err) {
     // istanbul ignore if
diff --git a/lib/workers/global/config/parse/host-rules-from-env.ts b/lib/workers/global/config/parse/host-rules-from-env.ts
index 5f6a8189f6139547789885fefbba3e84eb2d487c..a25475c4b435b2b481e1c9e22b43d39b26932fb9 100644
--- a/lib/workers/global/config/parse/host-rules-from-env.ts
+++ b/lib/workers/global/config/parse/host-rules-from-env.ts
@@ -13,7 +13,7 @@ export function hostRulesFromEnv(env: NodeJS.ProcessEnv): HostRule[] {
   for (const envName of Object.keys(env).sort()) {
     if (npmEnvPrefixes.some((prefix) => envName.startsWith(prefix))) {
       logger.trace('Ignoring npm env: ' + envName);
-      continue; // eslint-disable-line no-continue
+      continue;
     }
     // Double underscore __ is used in place of hyphen -
     const splitEnv = envName.toLowerCase().replace(/__/g, '-').split('_');
@@ -28,7 +28,7 @@ export function hostRulesFromEnv(env: NodeJS.ProcessEnv): HostRule[] {
           // host-less rule
         } else if (splitEnv.length === 1) {
           logger.warn(`Cannot parse ${envName} env`);
-          continue; // eslint-disable-line no-continue
+          continue;
         } else {
           matchHost = splitEnv.join('.');
         }
diff --git a/lib/workers/pr/body/index.ts b/lib/workers/pr/body/index.ts
index 6aa5a015af8b6452bfdf29a01d8ae72e7c0a5f2f..02944d193cdb4b11428ebee61fc90e4712ae6b2a 100644
--- a/lib/workers/pr/body/index.ts
+++ b/lib/workers/pr/body/index.ts
@@ -12,7 +12,6 @@ import { getPrUpdatesTable } from './updates-table';
 
 function massageUpdateMetadata(config: BranchConfig): void {
   config.upgrades.forEach((upgrade) => {
-    /* eslint-disable no-param-reassign */
     const {
       homepage,
       sourceUrl,
diff --git a/lib/workers/pr/index.ts b/lib/workers/pr/index.ts
index 3825a54145a2d1af6f70f6cf17c289ead4157e65..d7f17709a6ad6b287641255f52fd426bd1b2a64c 100644
--- a/lib/workers/pr/index.ts
+++ b/lib/workers/pr/index.ts
@@ -262,7 +262,7 @@ export async function ensurePr(
       upgrade.manager
     }-${upgrade.currentVersion || upgrade.currentValue}-${upgrade.newVersion}`;
     if (processedUpgrades.includes(upgradeKey)) {
-      continue; // eslint-disable-line no-continue
+      continue;
     }
     processedUpgrades.push(upgradeKey);
 
diff --git a/lib/workers/repository/changelog/index.ts b/lib/workers/repository/changelog/index.ts
index b0c0697b1a9ec01fe5ceaab453d790fff48fea95..feff7e56e5d9b8fee3de80c07d0cb76e33865716 100644
--- a/lib/workers/repository/changelog/index.ts
+++ b/lib/workers/repository/changelog/index.ts
@@ -4,7 +4,7 @@ import type { BranchUpgradeConfig } from '../../types';
 
 // istanbul ignore next
 async function embedChangelog(upgrade: BranchUpgradeConfig): Promise<void> {
-  upgrade.logJSON = await getChangeLogJSON(upgrade); // eslint-disable-line
+  upgrade.logJSON = await getChangeLogJSON(upgrade);
 }
 
 // istanbul ignore next
diff --git a/lib/workers/repository/dependency-dashboard.spec.ts b/lib/workers/repository/dependency-dashboard.spec.ts
index ac1c353cbe2202ea10d2948c8ccc59801f886bd4..2b12e6518416df040620d245b7b7945722f6c066 100644
--- a/lib/workers/repository/dependency-dashboard.spec.ts
+++ b/lib/workers/repository/dependency-dashboard.spec.ts
@@ -26,7 +26,7 @@ beforeEach(() => {
 
 async function dryRun(
   branches: BranchConfig[],
-  // eslint-disable-next-line @typescript-eslint/no-shadow
+
   platform: jest.Mocked<Platform>,
   ensureIssueClosingCalls = 0,
   ensureIssueCalls = 0
diff --git a/lib/workers/repository/dependency-dashboard.ts b/lib/workers/repository/dependency-dashboard.ts
index 6dc1dded4dcd2f2242cbd2a403e17da7f7c58d22..b85596b78d5df650b3e79075971ed1eb2c934549 100644
--- a/lib/workers/repository/dependency-dashboard.ts
+++ b/lib/workers/repository/dependency-dashboard.ts
@@ -35,7 +35,6 @@ function parseDashboardIssue(issueBody: string): DependencyDashboard {
 }
 
 export async function readDashboardBody(config: RenovateConfig): Promise<void> {
-  /* eslint-disable no-param-reassign */
   config.dependencyDashboardChecks = {};
   const stringifiedConfig = JSON.stringify(config);
   if (
diff --git a/lib/workers/repository/error.ts b/lib/workers/repository/error.ts
index 65aa292b7530236db6417514cb8c943f75ec123a..381cb6ed10ca2b8c4dfa368b427b3c3abb7b32e2 100644
--- a/lib/workers/repository/error.ts
+++ b/lib/workers/repository/error.ts
@@ -41,12 +41,12 @@ export default async function handleError(
 ): Promise<string> {
   if (err.message === REPOSITORY_UNINITIATED) {
     logger.info('Repository is uninitiated - skipping');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === REPOSITORY_EMPTY) {
     logger.info('Repository is empty - skipping');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   const disabledMessages = [
@@ -61,31 +61,31 @@ export default async function handleError(
   }
   if (err.message === REPOSITORY_ARCHIVED) {
     logger.info('Repository is archived - skipping');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === REPOSITORY_MIRRORED) {
     logger.info('Repository is a mirror - skipping');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === REPOSITORY_RENAMED) {
     logger.info('Repository has been renamed - skipping');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === REPOSITORY_BLOCKED) {
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     logger.info('Repository is blocked - skipping');
     return err.message;
   }
   if (err.message === REPOSITORY_ACCESS_FORBIDDEN) {
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     logger.info('Repository is forbidden');
     return err.message;
   }
   if (err.message === REPOSITORY_NOT_FOUND) {
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     logger.error('Repository is not found');
     return err.message;
   }
@@ -107,17 +107,17 @@ export default async function handleError(
   }
   if (err.message === REPOSITORY_CHANGED) {
     logger.info('Repository has changed during renovation - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === CONFIG_VALIDATION) {
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     logger.info({ error: err }, 'Repository has invalid config');
     await raiseConfigWarningIssue(config, err);
     return err.message;
   }
   if (err.message === CONFIG_SECRETS_EXPOSED) {
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     logger.warn(
       { error: err },
       'Repository aborted due to potential secrets exposure'
@@ -130,7 +130,7 @@ export default async function handleError(
       'Host error'
     );
     logger.info('External host error causing abort - skipping');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (
@@ -138,48 +138,48 @@ export default async function handleError(
     err.message === SYSTEM_INSUFFICIENT_DISK_SPACE
   ) {
     logger.error('Disk space error - skipping');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === PLATFORM_RATE_LIMIT_EXCEEDED) {
     logger.warn('Rate limit exceeded - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === SYSTEM_INSUFFICIENT_MEMORY) {
     logger.warn('Insufficient memory - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === PLATFORM_BAD_CREDENTIALS) {
     logger.warn('Bad credentials - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === PLATFORM_INTEGRATION_UNAUTHORIZED) {
     logger.warn('Integration unauthorized - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === PLATFORM_AUTHENTICATION_ERROR) {
     logger.warn('Authentication error - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === TEMPORARY_ERROR) {
     logger.info('Temporary error - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message === MANAGER_LOCKFILE_ERROR) {
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     logger.info('Lock file error - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return err.message;
   }
   if (err.message.includes('The requested URL returned error: 5')) {
     logger.warn({ err }, 'Git error - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     // rewrite this error
     return EXTERNAL_HOST_ERROR;
   }
@@ -188,18 +188,18 @@ export default async function handleError(
     err.message.includes('access denied or repository not exported')
   ) {
     logger.warn({ err }, 'Git error - aborting');
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     // rewrite this error
     return EXTERNAL_HOST_ERROR;
   }
   if (err.message.includes('fatal: not a git repository')) {
-    delete config.branchList; // eslint-disable-line no-param-reassign
+    delete config.branchList;
     return TEMPORARY_ERROR;
   }
   // Swallow this error so that other repositories can be processed
   logger.error({ err }, `Repository has unknown error`);
   // delete branchList to avoid cleaning up branches
-  delete config.branchList; // eslint-disable-line no-param-reassign
-  // eslint-disable-next-line no-undef
+  delete config.branchList;
+
   return UNKNOWN_ERROR;
 }
diff --git a/lib/workers/repository/index.ts b/lib/workers/repository/index.ts
index 5005a9ee5e36bf40b1c935fcc6f2b0589a99e2be..c658082f0f2d3d90e8e17f93f33d5434971595a6 100644
--- a/lib/workers/repository/index.ts
+++ b/lib/workers/repository/index.ts
@@ -19,7 +19,7 @@ import { printRequestStats } from './stats';
 let renovateVersion = 'unknown';
 try {
   // eslint-disable-next-line @typescript-eslint/no-var-requires
-  renovateVersion = require('../../../package.json').version; // eslint-disable-line global-require
+  renovateVersion = require('../../../package.json').version;
 } catch (err) /* istanbul ignore next */ {
   logger.debug({ err }, 'Error getting renovate version');
 }
diff --git a/lib/workers/repository/init/vulnerability.ts b/lib/workers/repository/init/vulnerability.ts
index 85cbb3744d72ae2f3c3b8147ec7469b0d26701dc..5503daaeead4fb9b8f3dde6eb5279b2138f1d22c 100644
--- a/lib/workers/repository/init/vulnerability.ts
+++ b/lib/workers/repository/init/vulnerability.ts
@@ -73,18 +73,18 @@ export async function detectVulnerabilityAlerts(
       (alert.vulnerableRequirements === '= 5.0.0-security.0' ||
         alert.vulnerableRequirements === '= 5.0.1')
     ) {
-      continue; // eslint-disable-line no-continue
+      continue;
     }
     try {
       if (alert.dismissReason) {
-        continue; // eslint-disable-line no-continue
+        continue;
       }
       if (!alert.securityVulnerability.firstPatchedVersion) {
         logger.debug(
           { alert },
           'Vulnerability alert has no firstPatchedVersion - skipping'
         );
-        continue; // eslint-disable-line no-continue
+        continue;
       }
       const datasourceMapping: Record<string, string> = {
         MAVEN: datasourceMaven.id,
@@ -174,7 +174,7 @@ export async function detectVulnerabilityAlerts(
                 }
                 content += heading;
                 content += '\n\n';
-                // eslint-disable-next-line no-loop-func
+
                 content += sanitizeMarkdown(advisory.description);
                 return content;
               })
diff --git a/lib/workers/repository/process/fetch.ts b/lib/workers/repository/process/fetch.ts
index e4d85cb67c071d078550a62e6fefd4d8a81db4ec..6cd7cd90943e0633dfc4dd26f5d7bc48b5fa78f1 100644
--- a/lib/workers/repository/process/fetch.ts
+++ b/lib/workers/repository/process/fetch.ts
@@ -59,7 +59,7 @@ async function fetchManagerPackagerFileUpdates(
     { manager, packageFile, queueLength: queue.length },
     'fetchManagerPackagerFileUpdates starting with concurrency'
   );
-  // eslint-disable-next-line no-param-reassign
+
   pFile.deps = await pAll(queue, { concurrency: 5 });
   logger.trace({ packageFile }, 'fetchManagerPackagerFileUpdates finished');
 }
diff --git a/lib/workers/repository/process/lookup/filter-checks.ts b/lib/workers/repository/process/lookup/filter-checks.ts
index 1208a7d716e0e909e2319ef7af9614475f88961d..73c0535fb5c189be24d6607cb39c8bd53f460e93 100644
--- a/lib/workers/repository/process/lookup/filter-checks.ts
+++ b/lib/workers/repository/process/lookup/filter-checks.ts
@@ -66,7 +66,7 @@ export async function filterInternalChecks(
             `Release ${candidateRelease.version} is pending status checks`
           );
           pendingReleases.unshift(candidateRelease);
-          continue; // eslint-disable-line no-continue
+          continue;
         }
       }
       if (isActiveConfidenceLevel(minimumConfidence)) {
@@ -83,7 +83,7 @@ export async function filterInternalChecks(
             `Release ${candidateRelease.version} is pending status checks`
           );
           pendingReleases.unshift(candidateRelease);
-          continue; // eslint-disable-line no-continue
+          continue;
         }
       }
       // If we get to here, then the release is OK and we can stop iterating
diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts
index ad0d46dd9c9619d58dd2f95d584f34abff3b7963..a921b1536c27894fa530e65332614b9922105667 100644
--- a/lib/workers/repository/process/lookup/index.ts
+++ b/lib/workers/repository/process/lookup/index.ts
@@ -258,7 +258,7 @@ export async function lookupUpdates(
         }
         if (!update.newValue || update.newValue === currentValue) {
           if (!lockedVersion) {
-            continue; // eslint-disable-line no-continue
+            continue;
           }
           // istanbul ignore if
           if (rangeStrategy === 'bump') {
@@ -266,7 +266,7 @@ export async function lookupUpdates(
               { depName, currentValue, lockedVersion, newVersion },
               'Skipping bump because newValue is the same'
             );
-            continue; // eslint-disable-line no-continue
+            continue;
           }
           res.isSingleVersion = true;
         }
diff --git a/lib/workers/repository/updates/branch-name.ts b/lib/workers/repository/updates/branch-name.ts
index 32211dca8760a65e7107f82def49f0059bb5f1d4..15433fb94b2004b129ba231d4445baeeb4e3302c 100644
--- a/lib/workers/repository/updates/branch-name.ts
+++ b/lib/workers/repository/updates/branch-name.ts
@@ -27,7 +27,6 @@ function cleanBranchName(branchName: string): string {
     .replace(RE_MULTIPLE_DASH, '-'); // chained dashes
 }
 
-/* eslint-disable no-param-reassign */
 export function generateBranchName(update: RenovateConfig): void {
   // Check whether to use a group name
   if (update.groupName) {
diff --git a/lib/workers/repository/updates/generate.ts b/lib/workers/repository/updates/generate.ts
index 4ff74aff11938226c98e4f61b9f4eee4b99430b9..ee8ea55354f9d785dbec7d42ae2df954db665298 100644
--- a/lib/workers/repository/updates/generate.ts
+++ b/lib/workers/repository/updates/generate.ts
@@ -92,7 +92,6 @@ export function generateBranchConfig(
     toVersions.length > 1 ||
     (!toVersions[0] && newValue.length > 1);
   if (newValue.length > 1 && !groupEligible) {
-    // eslint-disable-next-line no-param-reassign
     branchUpgrades[0].commitMessageExtra = `to v${toVersions[0]}`;
   }
   const typesGroup =
@@ -235,10 +234,10 @@ export function generateBranchConfig(
         const existingStamp = DateTime.fromISO(releaseTimestamp);
         const upgradeStamp = DateTime.fromISO(upgrade.releaseTimestamp);
         if (upgradeStamp > existingStamp) {
-          releaseTimestamp = upgrade.releaseTimestamp; // eslint-disable-line
+          releaseTimestamp = upgrade.releaseTimestamp;
         }
       } else {
-        releaseTimestamp = upgrade.releaseTimestamp; // eslint-disable-line
+        releaseTimestamp = upgrade.releaseTimestamp;
       }
     }
   }
diff --git a/package.json b/package.json
index 960b6ec5940201c7786a63ad8dd8992171cef2c4..cda3f5f196b7d8fb24aa9d27c709ffd771be1c5c 100644
--- a/package.json
+++ b/package.json
@@ -15,8 +15,8 @@
     "create-json-schema": "node -r ts-node/register/transpile-only -- bin/create-json-schema.js && prettier --write \"renovate-schema.json\"",
     "debug": "node --inspect-brk -r ts-node/register/transpile-only  -- lib/renovate.ts",
     "doc-fix": "run-s markdown-lint-fix prettier-fix",
-    "eslint": "eslint --ext .js,.mjs,.ts lib/ test/ tools/",
-    "eslint-fix": "eslint --ext .js,.mjs,.ts --fix lib/ test/ tools/",
+    "eslint": "eslint --ext .js,.mjs,.ts lib/ test/ tools/ --report-unused-disable-directives",
+    "eslint-fix": "eslint --ext .js,.mjs,.ts --fix lib/ test/ tools/ --report-unused-disable-directives",
     "generate": "run-s generate:*",
     "generate:imports": "node tools/generate-imports.mjs",
     "git-check": "node tools/check-git-version.mjs",
diff --git a/test/exec-util.ts b/test/exec-util.ts
index 7e4d4e14972a4f058befa2302fd7cf44ad012930..0a0b5d8bdb656413547b572ce2b433d9771b58bf 100644
--- a/test/exec-util.ts
+++ b/test/exec-util.ts
@@ -27,7 +27,6 @@ export function execSnapshot(cmd: string, options?: CallOptions): ExecSnapshot {
 
   const cwd = toUnix(process.cwd());
 
-  // eslint-disable-next-line array-callback-return
   return traverse(snapshot).map(function fixup(v) {
     if (is.string(v)) {
       const val = v
diff --git a/tools/check-re2.mjs b/tools/check-re2.mjs
index 04a90c4c3a2a95e6e4d3b7374545d5e194d6a6aa..0d55da98a28bd49fc22cb6d49edf1341171470aa 100644
--- a/tools/check-re2.mjs
+++ b/tools/check-re2.mjs
@@ -4,7 +4,7 @@ import shell from 'shelljs';
 (async () => {
   shell.echo('-n', 'Checking re2 ... ');
   try {
-    const { default: RE2 } = await import('re2'); // eslint-disable-line import/no-extraneous-dependencies
+    const { default: RE2 } = await import('re2');
     new RE2('.*').exec('test');
     shell.echo(`ok.`);
   } catch (e) {