async suppress(results, rules) {
		const suppressions = await this.load();

		for (const result of results) {
			const relativeFilePath = this.getRelativeFilePath(result.filePath);
			const violationsByRule = SuppressionsService.countViolationsByRule(
				result.messages,
			);

			for (const ruleId in violationsByRule) {
				if (rules && !rules.includes(ruleId)) {
					continue;
				}

				suppressions[relativeFilePath] ??= {};
				suppressions[relativeFilePath][ruleId] =
					violationsByRule[ruleId];
			}
		}

		return this.save(suppressions);
	}
Updates the suppressions file based on the current violations and the provided rules.
If no rules are provided, all violations are suppressed.
@param {LintResult[]|undefined} results The lint results.
@param {string[]|undefined} rules The rules to suppress.
@returns {Promise<void>}