diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..829c4f50f0 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,66 @@ +## Summary + + + +## Type + + + +- [ ] `feat` — new user-facing feature +- [ ] `fix` — bug fix +- [ ] `refactor` — restructure without behavior change +- [ ] `chore` — build, deps, config, docs +- [ ] `perf` — performance improvement +- [ ] `test` — test coverage + +## Changes + + + +| File | Change | +|------|--------| +| | | + +## Migration Notes + + + +- [ ] Migration file added in `migrations/` directory +- [ ] Backward-compatible with current production schema +- [ ] NOT backward-compatible — breaking changes documented in Notes section +- [ ] Tested on a fresh database and on an existing one + +## Testing + + + +- [ ] `vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes +- [ ] `./vendor/bin/phpstan` passes (0 errors, with baseline) +- [ ] Manual testing performed (describe below) +- [ ] New tests added for changed behavior +- [ ] Regression tests added for bug fixes + + + +## AI Disclosure + + + +- [ ] No AI tools were used in this PR +- [ ] AI tools were used — details below + + + +## Notes + + diff --git a/.github/scripts/commit-message-check.js b/.github/scripts/commit-message-check.js new file mode 100644 index 0000000000..1023a7559f --- /dev/null +++ b/.github/scripts/commit-message-check.js @@ -0,0 +1,160 @@ +'use strict'; + +// ── Canonical emoji ↔ type map (from conventional-commit.prompt.md) ── + +const EMOJI_TYPE_MAP = { + '\u{1F3D7}\uFE0F': 'build', // 🏗️ + '\u{1F527}': 'chore', // 🔧 + '\u{1F477}': 'ci', // 👷 + '\u{1F4DD}': 'docs', // 📝 + '\u2728': 'feat', // ✨ + '\u{1F41B}': 'fix', // 🐛 + '\u26A1\uFE0F': 'perf', // ⚡️ + '\u267B\uFE0F': 'refactor', // ♻️ + '\u23EA\uFE0F': 'revert', // ⏪️ + '\u{1F484}': 'style', // 💄 + '\u2705': 'test', // ✅ + '\u{1F310}': 'i18n', // 🌐 +}; + +const TYPE_EMOJI_MAP = Object.fromEntries( + Object.entries(EMOJI_TYPE_MAP).map(([emoji, type]) => [type, emoji]), +); + +const VALID_TYPES = Object.values(EMOJI_TYPE_MAP); + +const MAX_SUBJECT_LENGTH = 100; + +// ── Helpers ────────────────────────────────────────────────────────── + +/** + * Strip Unicode variation selector 16 (U+FE0F) for comparison. + * Some editors/terminals include it, others don't. + */ +function stripVS16(str) { + return str.replace(/\uFE0F/g, ''); +} + +/** + * Find the conventional type for a given emoji. + * Matches with or without the trailing VS16 character. + */ +function findTypeForEmoji(emoji) { + const normalized = stripVS16(emoji); + for (const [key, type] of Object.entries(EMOJI_TYPE_MAP)) { + if (stripVS16(key) === normalized) { + return type; + } + } + return null; +} + +function isAutoGenerated(subject) { + return /^Merge /.test(subject); +} + +function isGitHubWebEdit(subject) { + return /^(Update|Create|Delete|Rename) .+/.test(subject); +} + +// ── Core validation ────────────────────────────────────────────────── + +function validateCommitMessage(message, {requireEmoji = true} = {}) { + const errors = []; + + if (!message || typeof message !== 'string') { + return {valid: false, errors: ['Empty or invalid commit message'], skipped: false}; + } + + const subject = message.split('\n')[0].trim(); + + if (!subject) { + return {valid: false, errors: ['Empty subject line'], skipped: false}; + } + + if (isAutoGenerated(subject)) { + return {valid: true, errors: [], skipped: true}; + } + + if (!requireEmoji && isGitHubWebEdit(subject)) { + return {valid: true, errors: [], skipped: true}; + } + + if (subject.length > MAX_SUBJECT_LENGTH) { + errors.push( + `Subject exceeds ${MAX_SUBJECT_LENGTH} characters (${subject.length})`, + ); + } + + const firstSpace = subject.indexOf(' '); + if (firstSpace === -1) { + errors.push( + requireEmoji + ? 'Subject must start with an emoji followed by a space' + : 'Subject must contain a space', + ); + return {valid: false, errors, skipped: false}; + } + + const firstToken = subject.slice(0, firstSpace); + const rest = subject.slice(firstSpace + 1); + + const emojiType = findTypeForEmoji(firstToken); + const hasEmoji = emojiType !== null; + + if (requireEmoji && !hasEmoji) { + const validList = Object.entries(EMOJI_TYPE_MAP) + .map(([e, t]) => `${e} ${t}`) + .join(', '); + errors.push(`Unknown emoji "${firstToken}". Valid: ${validList}`); + } + + const textToParse = hasEmoji ? rest : subject; + const formatMatch = textToParse.match(/^(\w+)(?:\(([^)]+)\))?(!)?: (.+)$/); + if (!formatMatch) { + errors.push( + hasEmoji + ? 'Format after emoji must be: [()][!]: ' + : 'Format must be: [()][!]: ', + ); + return {valid: false, errors, skipped: false}; + } + + const [, type, , , description] = formatMatch; + + if (!VALID_TYPES.includes(type)) { + errors.push( + `Invalid type "${type}". Valid: ${VALID_TYPES.join(', ')}`, + ); + } + + if (hasEmoji && emojiType && VALID_TYPES.includes(type) && emojiType !== type) { + const correctEmoji = TYPE_EMOJI_MAP[type] || '?'; + errors.push( + `Emoji ${firstToken} is for "${emojiType}", not "${type}". ` + + `Use ${correctEmoji} for "${type}"`, + ); + } + + if (description && /^[A-Z]/.test(description)) { + errors.push('Description must start with a lowercase letter'); + } + + if (description && description.endsWith('.')) { + errors.push('Description must not end with a period'); + } + + return {valid: errors.length === 0, errors, skipped: false}; +} + +module.exports = { + EMOJI_TYPE_MAP, + TYPE_EMOJI_MAP, + VALID_TYPES, + MAX_SUBJECT_LENGTH, + validateCommitMessage, + findTypeForEmoji, + isAutoGenerated, + isGitHubWebEdit, + stripVS16, +}; diff --git a/.github/scripts/commit-message-check.test.js b/.github/scripts/commit-message-check.test.js new file mode 100644 index 0000000000..6128c8170b --- /dev/null +++ b/.github/scripts/commit-message-check.test.js @@ -0,0 +1,343 @@ +'use strict'; + +const {describe, it} = require('node:test'); +const assert = require('node:assert/strict'); +const { + EMOJI_TYPE_MAP, + TYPE_EMOJI_MAP, + VALID_TYPES, + MAX_SUBJECT_LENGTH, + validateCommitMessage, + findTypeForEmoji, + isAutoGenerated, + isGitHubWebEdit, + stripVS16, +} = require('./commit-message-check.js'); + +// ── stripVS16 ───────────────────────────────────────────────── + +describe('stripVS16', () => { + it('removes VS16 from string', () => { + assert.equal(stripVS16('\u26A1\uFE0F'), '\u26A1'); + }); + + it('leaves strings without VS16 unchanged', () => { + assert.equal(stripVS16('\u2728'), '\u2728'); + }); + + it('removes multiple VS16 characters', () => { + assert.equal(stripVS16('\uFE0Fa\uFE0Fb\uFE0F'), 'ab'); + }); +}); + +// ── findTypeForEmoji ────────────────────────────────────────── + +describe('findTypeForEmoji', () => { + it('finds type for each canonical emoji', () => { + for (const [emoji, type] of Object.entries(EMOJI_TYPE_MAP)) { + assert.equal(findTypeForEmoji(emoji), type, `${emoji} should map to ${type}`); + } + }); + + it('finds type when VS16 is stripped from input', () => { + assert.equal(findTypeForEmoji('\u26A1'), 'perf'); + }); + + it('finds type when VS16 is added to input', () => { + assert.equal(findTypeForEmoji('\u2728\uFE0F'), 'feat'); + }); + + it('returns null for unknown emoji', () => { + assert.equal(findTypeForEmoji('\u{1F600}'), null); + }); +}); + +// ── isAutoGenerated ─────────────────────────────────────────── + +describe('isAutoGenerated', () => { + it('detects merge commit', () => { + assert.equal(isAutoGenerated('Merge branch \'main\' into feature'), true); + }); + + it('detects merge pull request', () => { + assert.equal(isAutoGenerated('Merge pull request #42 from org/branch'), true); + }); + + it('rejects normal message', () => { + assert.equal(isAutoGenerated('\u2728 feat: add login'), false); + }); +}); + +// ── EMOJI_TYPE_MAP / TYPE_EMOJI_MAP consistency ─────────────── + +describe('map consistency', () => { + it('TYPE_EMOJI_MAP is the reverse of EMOJI_TYPE_MAP', () => { + for (const [emoji, type] of Object.entries(EMOJI_TYPE_MAP)) { + assert.equal(TYPE_EMOJI_MAP[type], emoji); + } + }); + + it('VALID_TYPES contains all map values', () => { + const fromMap = Object.values(EMOJI_TYPE_MAP).sort(); + assert.deepEqual([...VALID_TYPES].sort(), fromMap); + }); + + it('has 12 type entries', () => { + assert.equal(VALID_TYPES.length, 12); + }); +}); + +// ── validateCommitMessage – valid messages ──────────────────── + +describe('validateCommitMessage – valid', () => { + it('simple feat', () => { + const r = validateCommitMessage('\u2728 feat: add user login'); + assert.equal(r.valid, true); + assert.equal(r.errors.length, 0); + assert.equal(r.skipped, false); + }); + + it('fix with scope', () => { + const r = validateCommitMessage('\u{1F41B} fix(auth): handle expired token'); + assert.equal(r.valid, true); + }); + + it('breaking change with !', () => { + const r = validateCommitMessage('\u2728 feat(api)!: remove legacy endpoint'); + assert.equal(r.valid, true); + }); + + it('all 12 types accepted', () => { + const messages = [ + ['\u{1F3D7}\uFE0F', 'build'], + ['\u{1F527}', 'chore'], + ['\u{1F477}', 'ci'], + ['\u{1F4DD}', 'docs'], + ['\u2728', 'feat'], + ['\u{1F41B}', 'fix'], + ['\u26A1\uFE0F', 'perf'], + ['\u267B\uFE0F', 'refactor'], + ['\u23EA\uFE0F', 'revert'], + ['\u{1F484}', 'style'], + ['\u2705', 'test'], + ['\u{1F310}', 'i18n'], + ]; + for (const [emoji, type] of messages) { + const r = validateCommitMessage(`${emoji} ${type}: do something`); + assert.equal(r.valid, true, `${emoji} ${type} should be valid`); + } + }); + + it('merge commit is skipped', () => { + const r = validateCommitMessage('Merge branch \'main\' into feature'); + assert.equal(r.valid, true); + assert.equal(r.skipped, true); + assert.equal(r.errors.length, 0); + }); + + it('multi-line message validates only subject', () => { + const r = validateCommitMessage('\u{1F41B} fix: resolve crash\n\nDetailed body here.'); + assert.equal(r.valid, true); + }); + + it('exactly 100 characters is valid', () => { + const desc = 'a'.repeat(100 - '\u2728 feat: '.length); + const r = validateCommitMessage(`\u2728 feat: ${desc}`); + assert.equal(r.valid, true); + }); + + it('emoji without VS16 matches type with VS16 in map', () => { + const r = validateCommitMessage('\u26A1 perf: optimize query'); + assert.equal(r.valid, true); + }); + + it('emoji with VS16 matches type without VS16 in map', () => { + const r = validateCommitMessage('\u2728\uFE0F feat: add feature'); + assert.equal(r.valid, true); + }); +}); + +// ── validateCommitMessage – invalid messages ────────────────── + +describe('validateCommitMessage – invalid', () => { + it('empty message', () => { + const r = validateCommitMessage(''); + assert.equal(r.valid, false); + assert.ok(r.errors[0].includes('Empty')); + }); + + it('null message', () => { + const r = validateCommitMessage(null); + assert.equal(r.valid, false); + }); + + it('undefined message', () => { + const r = validateCommitMessage(undefined); + assert.equal(r.valid, false); + }); + + it('no space after emoji', () => { + const r = validateCommitMessage('\u2728feat: add login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Format'))); + }); + + it('unknown emoji', () => { + const r = validateCommitMessage('\u{1F600} feat: add smile'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Unknown emoji'))); + }); + + it('invalid type', () => { + const r = validateCommitMessage('\u2728 feature: add login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Invalid type'))); + }); + + it('emoji-type mismatch', () => { + const r = validateCommitMessage('\u{1F41B} feat: add login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('not "feat"'))); + }); + + it('capitalized description', () => { + const r = validateCommitMessage('\u2728 feat: Add user login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('lowercase'))); + }); + + it('trailing period', () => { + const r = validateCommitMessage('\u2728 feat: add user login.'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('period'))); + }); + + it('exceeds 100 characters', () => { + const desc = 'a'.repeat(101 - '\u2728 feat: '.length); + const r = validateCommitMessage(`\u2728 feat: ${desc}`); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('exceeds'))); + }); + + it('missing colon after type', () => { + const r = validateCommitMessage('\u2728 feat add login'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Format'))); + }); + + it('emoji only, no rest', () => { + const r = validateCommitMessage('\u2728'); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('space'))); + }); + + it('collects multiple errors', () => { + const desc = 'A'.repeat(95); + const r = validateCommitMessage(`\u{1F41B} feat: ${desc}.`); + assert.equal(r.valid, false); + assert.ok(r.errors.length >= 3, `expected >= 3 errors, got ${r.errors.length}: ${r.errors.join('; ')}`); + }); +}); + +// ── isGitHubWebEdit ─────────────────────────────────────────── + +describe('isGitHubWebEdit', () => { + it('detects Update pattern', () => { + assert.equal(isGitHubWebEdit('Update pr-readiness-check.yml'), true); + }); + + it('detects Create pattern', () => { + assert.equal(isGitHubWebEdit('Create new-file.md'), true); + }); + + it('detects Delete pattern', () => { + assert.equal(isGitHubWebEdit('Delete old-file.js'), true); + }); + + it('detects Rename pattern', () => { + assert.equal(isGitHubWebEdit('Rename foo.js to bar.js'), true); + }); + + it('rejects normal commit', () => { + assert.equal(isGitHubWebEdit('fix: update login flow'), false); + }); + + it('rejects partial match at wrong position', () => { + assert.equal(isGitHubWebEdit('Please Update the file'), false); + }); +}); + +// ── validateCommitMessage – relaxed mode (requireEmoji: false) ─ + +describe('validateCommitMessage – relaxed mode', () => { + const relaxed = {requireEmoji: false}; + + it('accepts emoji-less conventional commit', () => { + const r = validateCommitMessage('docs(qa): add full phpdoc for shared ICU detector', relaxed); + assert.equal(r.valid, true); + assert.equal(r.skipped, false); + }); + + it('accepts emoji-less commit with scope and !', () => { + const r = validateCommitMessage('feat(api)!: remove legacy endpoint', relaxed); + assert.equal(r.valid, true); + }); + + it('accepts emoji-less commit without scope', () => { + const r = validateCommitMessage('refactor: share ICU source detection logic across LQA flows', relaxed); + assert.equal(r.valid, true); + }); + + it('still accepts emoji commits in relaxed mode', () => { + const r = validateCommitMessage('\u2728 feat: add user login', relaxed); + assert.equal(r.valid, true); + }); + + it('still validates emoji-type consistency in relaxed mode', () => { + const r = validateCommitMessage('\u{1F41B} feat: wrong emoji', relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('not "feat"'))); + }); + + it('skips GitHub web edit in relaxed mode', () => { + const r = validateCommitMessage('Update .github/workflows/pr-readiness-check.yml', relaxed); + assert.equal(r.valid, true); + assert.equal(r.skipped, true); + }); + + it('does NOT skip GitHub web edit in strict mode', () => { + const r = validateCommitMessage('Update .github/workflows/pr-readiness-check.yml'); + assert.equal(r.valid, false); + }); + + it('still rejects invalid type in relaxed mode', () => { + const r = validateCommitMessage('feature: add login', relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('Invalid type'))); + }); + + it('still rejects capitalized description in relaxed mode', () => { + const r = validateCommitMessage('fix: Update broken thing', relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('lowercase'))); + }); + + it('still rejects trailing period in relaxed mode', () => { + const r = validateCommitMessage('fix: update broken thing.', relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('period'))); + }); + + it('still rejects over-length in relaxed mode', () => { + const desc = 'a'.repeat(96); + const r = validateCommitMessage(`fix: ${desc}`, relaxed); + assert.equal(r.valid, false); + assert.ok(r.errors.some(e => e.includes('exceeds'))); + }); + + it('skips merge commits in relaxed mode', () => { + const r = validateCommitMessage('Merge branch \'main\' into feature', relaxed); + assert.equal(r.valid, true); + assert.equal(r.skipped, true); + }); +}); diff --git a/.github/scripts/pr-readiness-check.js b/.github/scripts/pr-readiness-check.js new file mode 100644 index 0000000000..5007679d2d --- /dev/null +++ b/.github/scripts/pr-readiness-check.js @@ -0,0 +1,212 @@ +'use strict'; + +// ── Helpers ─────────────────────────────────────────────────── + +function escapeRegex(str) { + return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +} + +function getChecked(items, body) { + return items.filter((item) => { + return new RegExp(`-\\s*\\[[xX]\\]\\s*${escapeRegex(item)}`).test(body); + }); +} + +function getUnchecked(items, body) { + return items.filter((item) => { + return !new RegExp(`-\\s*\\[[xX]\\]\\s*${escapeRegex(item)}`).test(body); + }); +} + +function isChecked(item, body) { + return new RegExp(`-\\s*\\[[xX]\\]\\s*${escapeRegex(item)}`).test(body); +} + +// ── Section validators ──────────────────────────────────────── + +function validateExactlyOne(items, body, {none, multiple}) { + const checked = getChecked(items, body); + if (checked.length === 0) return none; + if (checked.length > 1) return multiple; + return null; +} + +function validateAtLeastOne(items, body, {none}) { + if (getChecked(items, body).length === 0) return none; + return null; +} + +function validateAll(items, body, {prefix}) { + const unchecked = getUnchecked(items, body); + if (unchecked.length === 0) return null; + return [prefix, ...unchecked.map((m) => ` - ${m}`)].join('\n'); +} + +function hasNonEmptySection(sectionHeader, body) { + const re = new RegExp(`##\\s*${escapeRegex(sectionHeader)}\\s*\\n([\\s\\S]*?)(?=\\n##\\s|$)`); + const match = body.match(re); + if (!match) return false; + let cleaned = match[1]; + let prev; + do { + prev = cleaned; + cleaned = cleaned.replace(//g, ''); + } while (cleaned !== prev); + return cleaned.trim().length > 0; +} + +// ── Checklist items ─────────────────────────────────────────── + +const TYPE_ITEMS = [ + '`feat` — new user-facing feature', + '`fix` — bug fix', + '`refactor` — restructure without behavior change', + '`chore` — build, deps, config, docs', + '`perf` — performance improvement', + '`test` — test coverage', +]; + +const TYPE_FIX = '`fix` — bug fix'; +const TYPE_FEAT = '`feat` — new user-facing feature'; + +const TESTING_ITEMS = [ + '`vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes', + '`./vendor/bin/phpstan` passes (0 errors, with baseline)', + 'Manual testing performed (describe below)', + 'New tests added for changed behavior', + 'Regression tests added for bug fixes', +]; + +const REGRESSION_ITEM = 'Regression tests added for bug fixes'; + +const AI_ITEMS = [ + 'No AI tools were used in this PR', + 'AI tools were used — details below', +]; + +const MIGRATION_REQUIRED_ITEMS = [ + 'Migration file added in `migrations/` directory', + 'Tested on a fresh database and on an existing one', +]; + +const MIGRATION_COMPAT_ITEMS = [ + 'Backward-compatible with current production schema', + 'NOT backward-compatible — breaking changes documented in Notes section', +]; + +const NOT_BACKWARD_COMPATIBLE = 'NOT backward-compatible — breaking changes documented in Notes section'; + +// ── Main validator ──────────────────────────────────────────── + +/** + * @param {string} body - PR body markdown text + * @param {object} files + * @param {string[]} files.migrationFilenames - filenames under migrations/ from the PR diff + * @param {string[]} files.testFilesWithAdditions - test filenames (under tests/) that have additions > 0 + * @returns {string[]} error messages (empty = all checks pass) + */ +function validatePrChecklist(body, {migrationFilenames = [], testFilesWithAdditions = []} = {}) { + const errors = []; + + // ── Type: exactly one ──────────────────────────────────── + const typeErr = validateExactlyOne(TYPE_ITEMS, body, { + none: 'No PR type selected. Check exactly one item under **Type**.', + multiple: 'Multiple PR types selected. Check exactly one item under **Type**.', + }); + if (typeErr) errors.push(typeErr); + + const isFix = isChecked(TYPE_FIX, body); + const isFeat = isChecked(TYPE_FEAT, body); + + // ── Testing: at least one ──────────────────────────────── + const testErr = validateAtLeastOne(TESTING_ITEMS, body, { + none: 'No testing items checked. Check at least one item under **Testing**.', + }); + if (testErr) errors.push(testErr); + + // ── fix → regression tests checkbox must be checked ────── + if (isFix && !isChecked(REGRESSION_ITEM, body)) { + errors.push( + 'PR type is `fix` but "Regression tests added for bug fixes" is not checked.\n' + + 'Bug fixes must include regression tests.', + ); + } + + // ── feat/fix → test files must be present with additions ─ + if ((isFeat || isFix) && testFilesWithAdditions.length === 0) { + errors.push( + `PR type is \`${isFix ? 'fix' : 'feat'}\` but no test files with added lines found in the diff.\n` + + 'Features and bug fixes must include new or updated tests (under tests/).', + ); + } + + // ── AI Disclosure: exactly one ─────────────────────────── + const aiErr = validateExactlyOne(AI_ITEMS, body, { + none: 'AI disclosure not filled. Check one item under **AI Disclosure**.', + multiple: 'Both AI disclosure options checked. Select only one.', + }); + if (aiErr) errors.push(aiErr); + + // ── Migration: bidirectional enforcement ────────────────── + const hasMigrationSection = /## Migration Notes/.test(body); + const hasMigrationFiles = migrationFilenames.length > 0; + + if (hasMigrationSection && !hasMigrationFiles) { + errors.push( + 'Migration Notes section is present but no migration file found in migrations/ directory.\n' + + 'Either add a migration file (migrations/YYYYMMDDHHMMSS_description.php)\n' + + 'or delete the Migration Notes section if no migration is needed.', + ); + } + + if (hasMigrationFiles && !hasMigrationSection) { + errors.push( + 'PR contains migration files but the Migration Notes section is missing:\n' + + migrationFilenames.map((f) => ` - ${f}`).join('\n') + '\n\n' + + 'Add the Migration Notes section from the PR template and complete all checklist items.', + ); + } + + if (hasMigrationSection && hasMigrationFiles) { + const migErr = validateAll(MIGRATION_REQUIRED_ITEMS, body, { + prefix: 'Migration section present but not all items checked:', + }); + if (migErr) errors.push(migErr); + + const compatErr = validateExactlyOne(MIGRATION_COMPAT_ITEMS, body, { + none: 'Migration compatibility not specified. Check exactly one: backward-compatible OR not backward-compatible.', + multiple: 'Both migration compatibility options checked. Select only one.', + }); + if (compatErr) errors.push(compatErr); + + // ── NOT backward-compatible → Notes section must have content + if (isChecked(NOT_BACKWARD_COMPATIBLE, body) && !hasNonEmptySection('Notes', body)) { + errors.push( + 'Migration is marked as NOT backward-compatible but the Notes section is empty.\n' + + 'Document breaking changes, migration impact, and deployment steps in the Notes section.', + ); + } + } + + return errors; +} + +module.exports = { + validatePrChecklist, + getChecked, + getUnchecked, + isChecked, + validateExactlyOne, + validateAtLeastOne, + validateAll, + hasNonEmptySection, + TYPE_ITEMS, + TYPE_FIX, + TYPE_FEAT, + TESTING_ITEMS, + REGRESSION_ITEM, + AI_ITEMS, + MIGRATION_REQUIRED_ITEMS, + MIGRATION_COMPAT_ITEMS, + NOT_BACKWARD_COMPATIBLE, +}; diff --git a/.github/scripts/pr-readiness-check.test.js b/.github/scripts/pr-readiness-check.test.js new file mode 100644 index 0000000000..a9a14de166 --- /dev/null +++ b/.github/scripts/pr-readiness-check.test.js @@ -0,0 +1,388 @@ +'use strict'; + +const {describe, it} = require('node:test'); +const assert = require('node:assert/strict'); +const { + validatePrChecklist, + getChecked, + getUnchecked, + hasNonEmptySection, +} = require('./pr-readiness-check.js'); + +// ── Test fixtures ───────────────────────────────────────────── + +function validBody({ + type = '`fix` — bug fix', + testing = '`vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes', + regression = true, + ai = 'No AI tools were used in this PR', + migrationSection = false, + migrationChecked = false, + compat = null, + notes = '', + } = {}) { + let body = `## Summary\n\nFix something.\n\n## Type\n\n- [x] ${type}\n\n`; + body += `## Testing\n\n- [x] ${testing}\n`; + if (regression) { + body += '- [x] Regression tests added for bug fixes\n'; + } + body += '\n'; + body += `## AI Disclosure\n\n- [x] ${ai}\n\n`; + + if (migrationSection) { + body += '## Migration Notes\n\n'; + if (migrationChecked) { + body += '- [x] Migration file added in `migrations/` directory\n'; + body += '- [x] Tested on a fresh database and on an existing one\n'; + } else { + body += '- [ ] Migration file added in `migrations/` directory\n'; + body += '- [ ] Tested on a fresh database and on an existing one\n'; + } + if (compat === 'backward') { + body += '- [x] Backward-compatible with current production schema\n'; + body += '- [ ] NOT backward-compatible — breaking changes documented in Notes section\n'; + } else if (compat === 'breaking') { + body += '- [ ] Backward-compatible with current production schema\n'; + body += '- [x] NOT backward-compatible — breaking changes documented in Notes section\n'; + } else if (compat === 'both') { + body += '- [x] Backward-compatible with current production schema\n'; + body += '- [x] NOT backward-compatible — breaking changes documented in Notes section\n'; + } else { + body += '- [ ] Backward-compatible with current production schema\n'; + body += '- [ ] NOT backward-compatible — breaking changes documented in Notes section\n'; + } + } + + body += `## Notes\n\n${notes}\n`; + + return body; +} + +const TEST_FILES = ['tests/unit/SomeTest.php']; + +// ── Helper tests ────────────────────────────────────────────── + +describe('getChecked', () => { + it('finds checked items with [x]', () => { + const body = '- [x] alpha\n- [ ] beta\n- [X] gamma'; + assert.deepEqual(getChecked(['alpha', 'beta', 'gamma'], body), ['alpha', 'gamma']); + }); + + it('returns empty when nothing is checked', () => { + const body = '- [ ] alpha\n- [ ] beta'; + assert.deepEqual(getChecked(['alpha', 'beta'], body), []); + }); + + it('handles regex special characters in item text', () => { + const body = '- [x] `vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes'; + const result = getChecked( + ['`vendor/bin/phpunit --exclude-group=ExternalServices --no-coverage` passes'], + body, + ); + assert.equal(result.length, 1); + }); +}); + +describe('getUnchecked', () => { + it('finds unchecked items', () => { + const body = '- [x] alpha\n- [ ] beta'; + assert.deepEqual(getUnchecked(['alpha', 'beta'], body), ['beta']); + }); +}); + +describe('hasNonEmptySection', () => { + it('returns true when section has content', () => { + const body = '## Notes\n\nBreaking changes: removed column X.\n'; + assert.equal(hasNonEmptySection('Notes', body), true); + }); + + it('returns false when section is empty', () => { + const body = '## Notes\n\n'; + assert.equal(hasNonEmptySection('Notes', body), false); + }); + + it('returns false when section only has HTML comments', () => { + const body = '## Notes\n\n\n'; + assert.equal(hasNonEmptySection('Notes', body), false); + }); + + it('returns false when section is missing', () => { + assert.equal(hasNonEmptySection('Notes', '## Summary\n\nHello\n'), false); + }); + + it('returns true when section has content after a comment', () => { + const body = '## Notes\n\n\nActual breaking change here.\n'; + assert.equal(hasNonEmptySection('Notes', body), true); + }); +}); + +// ── validatePrChecklist ─────────────────────────────────────── + +describe('validatePrChecklist', () => { + describe('valid PRs', () => { + it('passes with all required sections filled (fix)', () => { + const errors = validatePrChecklist(validBody(), {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + + it('passes with feat type and test files', () => { + const body = validBody({type: '`feat` — new user-facing feature', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + + it('passes with refactor type and no test files', () => { + const body = validBody({type: '`refactor` — restructure without behavior change', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.deepEqual(errors, []); + }); + + it('passes with AI tools used', () => { + const body = validBody({ai: 'AI tools were used — details below'}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + }); + + describe('Type section', () => { + it('fails when no type is selected', () => { + const body = '## Summary\n\n## Testing\n\n- [x] Manual testing performed (describe below)\n\n## AI Disclosure\n\n- [x] No AI tools were used in this PR\n## Notes\n\n'; + const errors = validatePrChecklist(body, {}); + assert.ok(errors.some((e) => e.includes('No PR type selected'))); + }); + + it('fails when multiple types are selected', () => { + let body = validBody(); + body = body.replace('## Type\n\n- [x] `fix` — bug fix', '## Type\n\n- [x] `fix` — bug fix\n- [x] `feat` — new user-facing feature'); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.ok(errors.some((e) => e.includes('Multiple PR types selected'))); + }); + }); + + describe('Testing section', () => { + it('fails when no testing item is checked', () => { + const body = '## Summary\n\n## Type\n\n- [x] `chore` — build, deps, config, docs\n\n## Testing\n\n- [ ] Manual testing performed (describe below)\n\n## AI Disclosure\n\n- [x] No AI tools were used in this PR\n## Notes\n\n'; + const errors = validatePrChecklist(body, {}); + assert.ok(errors.some((e) => e.includes('No testing items checked'))); + }); + }); + + describe('fix → regression tests mandatory', () => { + it('fails when type is fix but regression checkbox not checked', () => { + const body = validBody({regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.ok(errors.some((e) => e.includes('Regression tests added for bug fixes'))); + }); + + it('passes when type is fix and regression checkbox is checked', () => { + const errors = validatePrChecklist(validBody(), {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + + it('does not require regression checkbox for non-fix types', () => { + const body = validBody({type: '`feat` — new user-facing feature', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: TEST_FILES}); + assert.ok(!errors.some((e) => e.includes('Regression tests'))); + }); + }); + + describe('feat/fix → test files must be in diff', () => { + it('fails when type is fix but no test files with additions', () => { + const body = validBody(); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.ok(errors.some((e) => e.includes('no test files with added lines'))); + }); + + it('fails when type is feat but no test files with additions', () => { + const body = validBody({type: '`feat` — new user-facing feature', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.ok(errors.some((e) => e.includes('no test files with added lines'))); + }); + + it('passes when type is fix and test files have additions', () => { + const errors = validatePrChecklist(validBody(), {testFilesWithAdditions: ['tests/unit/FooTest.php']}); + assert.deepEqual(errors, []); + }); + + it('does not require test files for chore type', () => { + const body = validBody({type: '`chore` — build, deps, config, docs', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.ok(!errors.some((e) => e.includes('no test files'))); + }); + + it('does not require test files for refactor type', () => { + const body = validBody({type: '`refactor` — restructure without behavior change', regression: false}); + const errors = validatePrChecklist(body, {testFilesWithAdditions: []}); + assert.ok(!errors.some((e) => e.includes('no test files'))); + }); + }); + + describe('AI Disclosure section', () => { + it('fails when no AI option is selected', () => { + const body = '## Summary\n\n## Type\n\n- [x] `chore` — build, deps, config, docs\n\n## Testing\n\n- [x] Manual testing performed (describe below)\n\n## AI Disclosure\n\n- [ ] No AI tools were used in this PR\n- [ ] AI tools were used — details below\n## Notes\n\n'; + const errors = validatePrChecklist(body, {}); + assert.ok(errors.some((e) => e.includes('AI disclosure not filled'))); + }); + + it('fails when both AI options are selected', () => { + const body = '## Summary\n\n## Type\n\n- [x] `chore` — build, deps, config, docs\n\n## Testing\n\n- [x] Manual testing performed (describe below)\n\n## AI Disclosure\n\n- [x] No AI tools were used in this PR\n- [x] AI tools were used — details below\n## Notes\n\n'; + const errors = validatePrChecklist(body, {}); + assert.ok(errors.some((e) => e.includes('Both AI disclosure options'))); + }); + }); + + describe('Migration — bidirectional enforcement', () => { + it('fails when section present but no migration files in diff', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'backward'}); + const errors = validatePrChecklist(body, {migrationFilenames: [], testFilesWithAdditions: TEST_FILES}); + assert.ok(errors.some((e) => e.includes('no migration file found'))); + }); + + it('fails when migration files in diff but no section in body', () => { + const body = validBody(); + const errors = validatePrChecklist(body, { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES, + }); + assert.ok(errors.some((e) => e.includes('Migration Notes section is missing'))); + }); + + it('lists the migration filenames when section is missing', () => { + const body = validBody(); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php', 'migrations/20260420130000_add_index.php'], + testFilesWithAdditions: TEST_FILES, + }; + const errors = validatePrChecklist(body, files); + const migError = errors.find((e) => e.includes('Migration Notes section is missing')); + assert.ok(migError.includes('20260420120000_add_column.php')); + assert.ok(migError.includes('20260420130000_add_index.php')); + }); + + it('passes when no section and no migration files', () => { + const errors = validatePrChecklist(validBody(), {testFilesWithAdditions: TEST_FILES}); + assert.deepEqual(errors, []); + }); + }); + + describe('Migration — checklist completeness', () => { + it('fails when required items are unchecked', () => { + const body = validBody({migrationSection: true, migrationChecked: false, compat: 'backward'}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('not all items checked'))); + }); + + it('passes when all items checked + backward-compatible', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'backward'}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.deepEqual(errors, []); + }); + + it('passes when all items checked + NOT backward-compatible + notes filled', () => { + const body = validBody({ + migrationSection: true, + migrationChecked: true, + compat: 'breaking', + notes: 'Column X removed. Run migration before deploying.' + }); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.deepEqual(errors, []); + }); + }); + + describe('Migration — compatibility selection', () => { + it('fails when no compat option is selected', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: null}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('Migration compatibility not specified'))); + }); + + it('fails when both compat options are selected', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'both'}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('Both migration compatibility'))); + }); + }); + + describe('NOT backward-compatible → Notes must have content', () => { + it('fails when breaking compat selected but Notes section is empty', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'breaking', notes: ''}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('Notes section is empty'))); + }); + + it('fails when breaking compat selected but Notes has only HTML comments', () => { + const body = validBody({ + migrationSection: true, + migrationChecked: true, + compat: 'breaking', + notes: '' + }); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.ok(errors.some((e) => e.includes('Notes section is empty'))); + }); + + it('passes when breaking compat selected and Notes has content', () => { + const body = validBody({ + migrationSection: true, + migrationChecked: true, + compat: 'breaking', + notes: 'Column removed. Deploy migration first.' + }); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.deepEqual(errors, []); + }); + + it('does not require Notes content when backward-compatible', () => { + const body = validBody({migrationSection: true, migrationChecked: true, compat: 'backward', notes: ''}); + const files = { + migrationFilenames: ['migrations/20260420120000_add_column.php'], + testFilesWithAdditions: TEST_FILES + }; + const errors = validatePrChecklist(body, files); + assert.deepEqual(errors, []); + }); + }); + + describe('empty body', () => { + it('fails with errors for type, testing, and AI', () => { + const errors = validatePrChecklist('', {}); + assert.equal(errors.length, 3); + assert.ok(errors.some((e) => e.includes('No PR type selected'))); + assert.ok(errors.some((e) => e.includes('No testing items checked'))); + assert.ok(errors.some((e) => e.includes('AI disclosure not filled'))); + }); + }); +}); diff --git a/.github/workflows/_ci-cd.yml b/.github/workflows/_ci-cd.yml index 690e4e674e..7530d7c80d 100644 --- a/.github/workflows/_ci-cd.yml +++ b/.github/workflows/_ci-cd.yml @@ -33,8 +33,9 @@ env: # Opt into Node.js 24 for all JavaScript-based actions (checkout@v4, etc.) # Remove once actions/checkout@v5 is released with native Node 24 support. FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true -permissions: - contents: read +# Permissions are set per-job (not workflow-level) because test-guard +# requires pull-requests:write while other jobs only need contents:read. +# The calling workflow (aws_dev.yml / aws_prod.yml) sets the ceiling. jobs: # ─────────────────────────────────────────────────────────────────────────── # JOB 1 – tests @@ -46,6 +47,8 @@ jobs: name: Run tests runs-on: ubuntu-24.04 environment: ci_test + permissions: + contents: read steps: # Checkout the repo including all git submodules. # Falls back to the built-in github.token for fork PRs where @@ -74,6 +77,22 @@ jobs: docker compose -f docker/docker-compose-ci.yml build test-node > /dev/null 2>&1 # Run tests — exit code propagated to the workflow step docker compose -f docker/docker-compose-ci.yml up test-node --exit-code-from test-node || exit 1 + + # ── Coverage artifacts (consumed by test-guard job) ───────────────── + - name: Extract coverage reports from test container + run: | + CONTAINER_ID=$(docker compose -f docker/docker-compose-ci.yml ps -aq test-node | head -1) + docker cp "$CONTAINER_ID":/var/www/matecat/coverage.xml ./php-coverage.xml + docker cp "$CONTAINER_ID":/var/www/matecat/js-coverage/clover.xml ./js-coverage.xml + + - name: Upload coverage artifacts + uses: actions/upload-artifact@v4 + with: + name: coverage-report + path: | + php-coverage.xml + js-coverage.xml + retention-days: 7 # ─────────────────────────────────────────────────────────────────────────── # JOB 2 – deploy (only when should_deploy is true) # @@ -89,6 +108,8 @@ jobs: name: Deploy to ${{ inputs.deploy_environment }} runs-on: ubuntu-24.04 environment: ${{ inputs.deploy_environment }} + permissions: + contents: read if: ${{ inputs.should_deploy }} needs: - tests @@ -163,3 +184,39 @@ jobs: # ── :latest aliases together ────────────────────────────────────── docker push $WEB_REPO:latest docker push $DAEMONS_REPO:latest + + # ─────────────────────────────────────────────────────────────────────────── + # JOB – test-guard (PR only) + # + # Downloads the "coverage-report" artifact produced by the tests job and + # runs ostico/test-guard to evaluate test adequacy on changed files. + # ─────────────────────────────────────────────────────────────────────────── + test-guard: + name: Test adequacy gate + runs-on: ubuntu-latest + needs: tests + if: github.event_name == 'pull_request' + permissions: + contents: read + pull-requests: write + checks: write + models: read + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Download coverage artifact + uses: actions/download-artifact@v4 + with: + name: coverage-report + + - name: Test Guard + uses: ostico/test-guard@v1 + with: + coverage-file: | + php-coverage.xml + js-coverage.xml + coverage-threshold: '80' + ai-enabled: 'true' diff --git a/.github/workflows/aws_dev.yml b/.github/workflows/aws_dev.yml index 907bd9b7b8..5eea011722 100644 --- a/.github/workflows/aws_dev.yml +++ b/.github/workflows/aws_dev.yml @@ -9,6 +9,9 @@ on: branches: [ "develop" ] permissions: contents: read + pull-requests: write + checks: write + models: read jobs: ci-cd: uses: ./.github/workflows/_ci-cd.yml diff --git a/.github/workflows/aws_prod.yml b/.github/workflows/aws_prod.yml index 6fbe2d5550..7ad9fc4661 100644 --- a/.github/workflows/aws_prod.yml +++ b/.github/workflows/aws_prod.yml @@ -15,6 +15,9 @@ on: branches: [ "master" ] permissions: contents: read + pull-requests: write + checks: write + models: read jobs: ci-cd: uses: ./.github/workflows/_ci-cd.yml diff --git a/.github/workflows/commit-message-check.yml b/.github/workflows/commit-message-check.yml new file mode 100644 index 0000000000..2f39758ac7 --- /dev/null +++ b/.github/workflows/commit-message-check.yml @@ -0,0 +1,112 @@ +name: Commit Message Check + +on: + pull_request: + types: [opened, edited, reopened, synchronize] + +permissions: + contents: read + pull-requests: read + +jobs: + pr-title: + name: Validate PR title (required) + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate PR title + uses: actions/github-script@v7 + with: + script: | + const { validateCommitMessage } = require('./.github/scripts/commit-message-check.js'); + const pr = context.payload.pull_request; + + const labels = (pr.labels || []).map((l) => l.name); + if (labels.includes('commit-message-exception')) { + core.notice('Bypassing PR title check — label: commit-message-exception'); + return; + } + + const result = validateCommitMessage(pr.title); + if (!result.valid) { + const lines = [ + '## PR title does not follow conventional-commit format', + '', + 'Expected: ` [()][!]: `', + '', + '**Errors:**', + ...result.errors.map((e) => `- ${e}`), + '', + 'See `.github/prompts/conventional-commit.prompt.md` for the full spec.', + ]; + core.setFailed(lines.join('\n')); + } + + commit-messages: + name: Validate commit messages (hygiene) + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate commits + uses: actions/github-script@v7 + with: + script: | + const { validateCommitMessage } = require('./.github/scripts/commit-message-check.js'); + const pr = context.payload.pull_request; + + const labels = (pr.labels || []).map((l) => l.name); + if (labels.includes('commit-message-exception')) { + core.notice('Bypassing commit message check — label: commit-message-exception'); + return; + } + + const commits = await github.paginate(github.rest.pulls.listCommits, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pr.number, + per_page: 100, + }); + + const failures = []; + for (const c of commits) { + const msg = c.commit.message; + const result = validateCommitMessage(msg, {requireEmoji: false}); + if (result.skipped) continue; + if (!result.valid) { + const sha = c.sha.slice(0, 7); + failures.push(`\`${sha}\`: ${result.errors.join('; ')}`); + } + } + + if (failures.length > 0) { + const lines = [ + `## ${failures.length} commit message(s) violate conventional-commit format`, + '', + ...failures.map((f) => `- ${f}`), + '', + '> This is a hygiene gate. Fix via interactive rebase or amend.', + '> Add label `commit-message-exception` to bypass.', + ]; + core.setFailed(lines.join('\n')); + } + + commit-message-tests: + name: Unit tests for commit-message-check + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '24' + + - name: Run tests + run: node --test .github/scripts/commit-message-check.test.js diff --git a/.github/workflows/pr-readiness-check.yml b/.github/workflows/pr-readiness-check.yml new file mode 100644 index 0000000000..d65af01026 --- /dev/null +++ b/.github/workflows/pr-readiness-check.yml @@ -0,0 +1,75 @@ +name: PR Readiness Checklist + +on: + pull_request: + types: [ opened, edited, reopened, synchronize, ready_for_review, labeled, unlabeled ] + +permissions: + contents: read + pull-requests: read + +jobs: + readiness-checklist: + name: Validate mandatory PR checklist + runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate checklist + uses: actions/github-script@v7 + with: + script: | + const { validatePrChecklist } = require('./.github/scripts/pr-readiness-check.js'); + const pr = context.payload.pull_request; + + const labels = (pr.labels || []).map((l) => l.name); + if (labels.includes('checklist-exception')) { + core.notice('Bypassing checklist — PR has label: checklist-exception'); + return; + } + + const files = await github.paginate(github.rest.pulls.listFiles, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pr.number, + per_page: 100, + }); + + const migrationFilenames = files + .map((f) => f.filename) + .filter((name) => name.startsWith('migrations/') && name !== 'migrations/AbstractMatecatMigration.php'); + + const testFilesWithAdditions = files + .filter((f) => f.filename.startsWith('tests/') && f.additions > 0) + .map((f) => f.filename); + + const errors = validatePrChecklist(pr.body || '', { migrationFilenames, testFilesWithAdditions }); + + if (errors.length > 0) { + core.setFailed( + [ + 'PR readiness checklist incomplete:', + '', + ...errors, + '', + 'Update the PR body checklist. To bypass, apply label: checklist-exception', + ].join('\n'), + ); + } + + readiness-tests: + name: PR checklist script tests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '24' + + - name: Run tests + run: node --test .github/scripts/pr-readiness-check.test.js diff --git a/docker b/docker index c8ac253cd2..b0553a128b 160000 --- a/docker +++ b/docker @@ -1 +1 @@ -Subproject commit c8ac253cd2993e88088ea23777f05bae0fabe6b6 +Subproject commit b0553a128b136e615216d555e49ba0d7882f5b8b diff --git a/jest.config.js b/jest.config.js index 08f262730c..d8f345fd30 100644 --- a/jest.config.js +++ b/jest.config.js @@ -11,7 +11,8 @@ module.exports = { '!/public/api/**', '!/public/**/*.min.js', ], - transformIgnorePatterns: ['node_modules/(?!@bundled-es-modules)/'], + testPathIgnorePatterns: ['/node_modules/', '/.github/'], + transformIgnorePatterns: ['node_modules/(?!@bundled-es-modules)/', '.github/scripts/'], transform: { '^.+\\.js$': 'babel-jest', '.+\\.(css|styl|less|sass|scss)$': 'jest-transform-css', diff --git a/lib/Model/DataAccess/Database.php b/lib/Model/DataAccess/Database.php index b302f129bd..9537be4e64 100644 --- a/lib/Model/DataAccess/Database.php +++ b/lib/Model/DataAccess/Database.php @@ -185,6 +185,8 @@ public function rollback(): void /** * @Override * {@inheritdoc} + * + * @throws \Throwable Re-throws the original exception after rollback */ public function transaction(callable $callback): mixed { diff --git a/lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php b/lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php index c2f2f7d181..0d2b614db8 100644 --- a/lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php +++ b/lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php @@ -137,7 +137,7 @@ protected function __construct(string $configFile, ?string $contextIndex = null) * @param array|null $args * * @return void - * @throws Exception + * @throws \Throwable */ public function main(array $args = null): void { @@ -410,7 +410,7 @@ public function cleanShutDown(): void } /** - * @throws ReflectionException + * @throws \Throwable */ protected function _updateProject($pid, $status): void { @@ -476,7 +476,7 @@ protected function _executeInsert($tuple_list, $bind_values): void * @param array|null $subfiltering_handlers * @param bool $icu_enabled * @return int - * @throws Exception + * @throws \Throwable */ protected function _insertFastAnalysis( ProjectStruct $projectStruct, @@ -888,7 +888,7 @@ protected function _getQueueAddressesByPriority(int $queueLen, int $id_mt_engine * @param int $limit * * @return array - * @throws ReflectionException + * @throws \Throwable */ protected function _getLockProjectForVolumeAnalysis(int $limit = 1): array { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index b041402d91..91274019ba 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -6,12 +6,24 @@ parameters: count: 1 path: lib/Bootstrap.php + - + message: '#^Method Bootstrap\:\:formatOutputExceptions\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Bootstrap.php + - message: '#^Method Bootstrap\:\:getConfigurationForEnvironment\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Bootstrap.php + - + message: '#^Method Bootstrap\:\:initMandatoryPlugins\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Bootstrap.php + - message: '#^Parameter \#1 \$directory of function mkdir expects string, string\|null given\.$#' identifier: argument.type @@ -60,18 +72,72 @@ parameters: count: 1 path: lib/Bootstrap.php + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:alternative_translations\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AIAssistantController.php + + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:alternative_translations\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 12 + path: lib/Controller/API/App/AIAssistantController.php + + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:alternative_translations\(\) throws checked exception Matecat\\Locales\\InvalidLanguageException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AIAssistantController.php + - message: '#^Method Controller\\API\\App\\AIAssistantController\:\:enqueueWorker\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/AIAssistantController.php + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:feedback\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AIAssistantController.php + + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:feedback\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Controller/API/App/AIAssistantController.php + + - + message: '#^Method Controller\\API\\App\\AIAssistantController\:\:feedback\(\) throws checked exception Matecat\\Locales\\InvalidLanguageException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AIAssistantController.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|null given\.$#' identifier: argument.type count: 3 path: lib/Controller/API/App/AIAssistantController.php + - + message: '#^Method Controller\\API\\App\\AjaxUtilsController\:\:clearNotCompletedUploads\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/AjaxUtilsController.php + + - + message: '#^Method Controller\\API\\App\\AjaxUtilsController\:\:clearNotCompletedUploads\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/AjaxUtilsController.php + + - + message: '#^Method Controller\\API\\App\\AjaxUtilsController\:\:ping\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/AjaxUtilsController.php + - message: '#^Cannot access offset ''host'' on array\{scheme\?\: string, host\?\: string, port\?\: int\<0, 65535\>, user\?\: string, pass\?\: string, path\?\: string, query\?\: string, fragment\?\: string\}\|false\.$#' identifier: offsetAccess.nonOffsetAccessible @@ -90,6 +156,18 @@ parameters: count: 1 path: lib/Controller/API/App/Authentication/ForgotPasswordController.php + - + message: '#^Method Controller\\API\\App\\Authentication\\ForgotPasswordController\:\:setNewPassword\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/Authentication/ForgotPasswordController.php + + - + message: '#^Method Controller\\API\\App\\Authentication\\ForgotPasswordController\:\:setNewPassword\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/Authentication/ForgotPasswordController.php + - message: '#^Parameter \#1 \$new_password of method Model\\Users\\Authentication\\PasswordResetModel\:\:resetPassword\(\) expects string, string\|false given\.$#' identifier: argument.type @@ -276,6 +354,18 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:delete\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 8 + path: lib/Controller/API/App/CommentController.php + + - + message: '#^Method Controller\\API\\App\\CommentController\:\:delete\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:enqueueComment\(\) has parameter \$id_client with no type specified\.$#' identifier: missingType.parameter @@ -294,6 +384,12 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:enqueueComment\(\) throws checked exception Stomp\\Exception\\ConnectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:enqueueDeleteCommentMessage\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter @@ -330,6 +426,12 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:enqueueDeleteCommentMessage\(\) throws checked exception Stomp\\Exception\\ConnectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:filterUsers\(\) has parameter \$uidSentList with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -360,6 +462,12 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:getRange\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:prepareCommentData\(\) has parameter \$request with no type specified\.$#' identifier: missingType.parameter @@ -372,18 +480,36 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:prepareCommentData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:prepareMentionCommentData\(\) has parameter \$request with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:prepareMentionCommentData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:projectData\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:resolve\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Method Controller\\API\\App\\CommentController\:\:resolveTeamMentions\(\) has parameter \$message with no type specified\.$#' identifier: missingType.parameter @@ -438,6 +564,12 @@ parameters: count: 1 path: lib/Controller/API/App/CommentController.php + - + message: '#^Method Controller\\API\\App\\CommentController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CommentController.php + - message: '#^Parameter \#1 \$body of class Stomp\\Transport\\Message constructor expects string, string\|false given\.$#' identifier: argument.type @@ -690,6 +822,24 @@ parameters: count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:buildProjectStructure\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:buildProjectStructure\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 22 + path: lib/Controller/API/App/CreateProjectController.php + + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:clearSessionFiles\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:generateTargetEngineAssociation\(\) has parameter \$mt_engine with no type specified\.$#' identifier: missingType.parameter @@ -726,6 +876,12 @@ parameters: count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:getFileMetadata\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:getFilesList\(\) has parameter \$arFiles with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -804,12 +960,24 @@ parameters: count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateMtEngine\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validatePayableRateTemplate\(\) never returns Model\\PayableRates\\CustomPayableRateStruct so it can be removed from the return type\.$#' identifier: return.unusedType count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validatePublicTMPenalty\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateQaModelTemplate\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' identifier: throws.unusedType @@ -822,12 +990,24 @@ parameters: count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateSourceLang\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateTargetLangs\(\) has parameter \$target_lang with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/App/CreateProjectController.php + - + message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateTargetLangs\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/CreateProjectController.php + - message: '#^Method Controller\\API\\App\\CreateProjectController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -1098,6 +1278,12 @@ parameters: count: 1 path: lib/Controller/API/App/DeleteContributionController.php + - + message: '#^Method Controller\\API\\App\\DeleteContributionController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/DeleteContributionController.php + - message: '#^Method Controller\\API\\App\\DeleteContributionController\:\:updateSuggestionsArray\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -1122,6 +1308,18 @@ parameters: count: 1 path: lib/Controller/API/App/DeleteContributionController.php + - + message: '#^Method Controller\\API\\App\\DeleteContributionController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Controller/API/App/DeleteContributionController.php + + - + message: '#^Method Controller\\API\\App\\DeleteContributionController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/DeleteContributionController.php + - message: '#^PHPDoc tag @var has invalid value \(\$tm_key TmKeyStruct\)\: Unexpected token "\$tm_key", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -1152,12 +1350,24 @@ parameters: count: 1 path: lib/Controller/API/App/DeleteContributionController.php + - + message: '#^Method Controller\\API\\App\\DownloadAnalysisReportController\:\:download\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/DownloadAnalysisReportController.php + - message: '#^Method Controller\\API\\App\\DownloadAnalysisReportController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/DownloadAnalysisReportController.php + - + message: '#^Method Controller\\API\\App\\DownloadAnalysisReportController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/DownloadAnalysisReportController.php + - message: '#^Parameter \#1 \$message of class InvalidArgumentException constructor expects string, int given\.$#' identifier: argument.type @@ -1230,6 +1440,18 @@ parameters: count: 1 path: lib/Controller/API/App/EngineController.php + - + message: '#^Method Controller\\API\\App\\EngineController\:\:add\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Controller/API/App/EngineController.php + + - + message: '#^Method Controller\\API\\App\\EngineController\:\:disable\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/EngineController.php + - message: '#^Method Controller\\API\\App\\EngineController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -1308,6 +1530,12 @@ parameters: count: 1 path: lib/Controller/API/App/FilesController.php + - + message: '#^Method Controller\\API\\App\\FilesController\:\:validateInteger\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/FilesController.php + - message: '#^Access to an undefined property object\:\:\$id_after\.$#' identifier: property.notFound @@ -1344,6 +1572,12 @@ parameters: count: 2 path: lib/Controller/API/App/GetContributionController.php + - + message: '#^Method Controller\\API\\App\\GetContributionController\:\:get\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 12 + path: lib/Controller/API/App/GetContributionController.php + - message: '#^Method Controller\\API\\App\\GetContributionController\:\:getCrossLanguages\(\) has parameter \$cross_language with no type specified\.$#' identifier: missingType.parameter @@ -1356,6 +1590,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetContributionController.php + - + message: '#^Method Controller\\API\\App\\GetContributionController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/GetContributionController.php + - message: '#^Method Controller\\API\\App\\GetContributionController\:\:rewriteContributionContexts\(\) has parameter \$request with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -1368,6 +1608,18 @@ parameters: count: 1 path: lib/Controller/API/App/GetContributionController.php + - + message: '#^Method Controller\\API\\App\\GetContributionController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Controller/API/App/GetContributionController.php + + - + message: '#^Method Controller\\API\\App\\GetContributionController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/GetContributionController.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\MetadataDao\:\:get\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -1572,6 +1824,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetSearchController.php + - + message: '#^Method Controller\\API\\App\\GetSearchController\:\:doSearch\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/GetSearchController.php + - message: '#^Method Controller\\API\\App\\GetSearchController\:\:getJobData\(\) has parameter \$job_id with no type specified\.$#' identifier: missingType.parameter @@ -1614,18 +1872,36 @@ parameters: count: 1 path: lib/Controller/API/App/GetSearchController.php + - + message: '#^Method Controller\\API\\App\\GetSearchController\:\:saveReplacementEvent\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 8 + path: lib/Controller/API/App/GetSearchController.php + - message: '#^Method Controller\\API\\App\\GetSearchController\:\:updateSegments\(\) has parameter \$search_results with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/GetSearchController.php + - + message: '#^Method Controller\\API\\App\\GetSearchController\:\:updateSegments\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/GetSearchController.php + - message: '#^Method Controller\\API\\App\\GetSearchController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/GetSearchController.php + - + message: '#^Method Controller\\API\\App\\GetSearchController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/GetSearchController.php + - message: '#^Offset ''segment_hash'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' identifier: offsetAccess.notFound @@ -1806,6 +2082,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetSegmentsController.php + - + message: '#^Method Controller\\API\\App\\GetSegmentsController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/GetSegmentsController.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\MetadataDao\:\:getSubfilteringCustomHandlers\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -1872,6 +2154,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetTranslationMismatchesController.php + - + message: '#^Method Controller\\API\\App\\GetVolumeAnalysisController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/GetVolumeAnalysisController.php + - message: '#^Parameter \#2 \$features of class Model\\Analysis\\Status constructor expects Model\\FeaturesBase\\FeatureSet, Model\\FeaturesBase\\FeatureSet\|null given\.$#' identifier: argument.type @@ -1944,6 +2232,12 @@ parameters: count: 1 path: lib/Controller/API/App/GetWarningController.php + - + message: '#^Method Controller\\API\\App\\GetWarningController\:\:icuEnabled\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/GetWarningController.php + - message: '#^Method Controller\\API\\App\\GetWarningController\:\:invokeLocalWarningsOnFeatures\(\) has parameter \$src_content with no type specified\.$#' identifier: missingType.parameter @@ -2082,6 +2376,18 @@ parameters: count: 1 path: lib/Controller/API/App/HeartBeat.php + - + message: '#^Method Controller\\API\\App\\HeartBeat\:\:ping\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/HeartBeat.php + + - + message: '#^Method Controller\\API\\App\\IntentoController\:\:routingList\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/IntentoController.php + - message: '#^Ternary operator condition is always true\.$#' identifier: ternary.alwaysTrue @@ -2148,18 +2454,36 @@ parameters: count: 1 path: lib/Controller/API/App/OutsourceConfirmationController.php + - + message: '#^Method Controller\\API\\App\\OutsourceToController\:\:outsource\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/OutsourceToController.php + - message: '#^Method Controller\\API\\App\\OutsourceToController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/OutsourceToController.php + - + message: '#^Method Controller\\API\\App\\OutsourceToController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/OutsourceToController.php + - message: '#^Method Controller\\API\\App\\QualityFrameworkController\:\:renderQualityFramework\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/QualityFrameworkController.php + - + message: '#^Method Controller\\API\\App\\QualityFrameworkController\:\:renderQualityFramework\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/QualityFrameworkController.php + - message: '#^Method Controller\\API\\App\\RequestExportTMXController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -2184,12 +2508,36 @@ parameters: count: 1 path: lib/Controller/API/App/RequestExportTMXController.php + - + message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:complete\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/SetChunkCompletedController.php + + - + message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/SetChunkCompletedController.php + - message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/SetChunkCompletedController.php + - + message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/SetChunkCompletedController.php + + - + message: '#^Method Controller\\API\\App\\SetChunkCompletedController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/SetChunkCompletedController.php + - message: '#^Parameter \#1 \$id_job of static method Model\\Jobs\\JobDao\:\:getByIdAndPassword\(\) expects int, string given\.$#' identifier: argument.type @@ -2208,12 +2556,24 @@ parameters: count: 1 path: lib/Controller/API/App/SetChunkCompletedController.php + - + message: '#^Method Controller\\API\\App\\SetCurrentSegmentController\:\:set\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/SetCurrentSegmentController.php + - message: '#^Method Controller\\API\\App\\SetCurrentSegmentController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/SetCurrentSegmentController.php + - + message: '#^Method Controller\\API\\App\\SetCurrentSegmentController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/SetCurrentSegmentController.php + - message: '#^Parameter \#1 \$value of function count expects array\|Countable, array\|string given\.$#' identifier: argument.type @@ -2316,12 +2676,30 @@ parameters: count: 1 path: lib/Controller/API/App/SetTranslationController.php + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:evalSetContribution\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Controller/API/App/SetTranslationController.php + - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:getOldTranslation\(\) never returns null so it can be removed from the return type\.$#' identifier: return.unusedType count: 1 path: lib/Controller/API/App/SetTranslationController.php + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:getOldTranslation\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:getOldTranslation\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/SetTranslationController.php + - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:getTranslationObject\(\) has parameter \$saved_translation with no type specified\.$#' identifier: missingType.parameter @@ -2341,31 +2719,67 @@ parameters: path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) has parameter \$new_translation with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:icuEnabled\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException count: 1 path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) has parameter \$old_translation with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException count: 1 path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Method Controller\\API\\App\\SetTranslationController\:\:validateTheRequest\(\) should return array\{id_job\: numeric\-string, password\: string, received_password\: string, id_segment\: string, time_to_edit\: int\|numeric\-string, id_translator\: string, translation\: string, segment\: Model\\Segments\\SegmentStruct\|null, \.\.\.\} but returns array\{id_job\: non\-falsy\-string, password\: non\-falsy\-string, received_password\: string\|false, id_segment\: non\-falsy\-string, time_to_edit\: 0\|string, id_translator\: string\|false, translation\: string\|false, segment\: Model\\Segments\\SegmentStruct\|null, \.\.\.\}\.$#' - identifier: return.type + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:setSubFilteringBehavior\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException count: 1 path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Offset ''locked'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' - identifier: offsetAccess.notFound - count: 1 + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:translate\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 9 path: lib/Controller/API/App/SetTranslationController.php - - message: '#^Offset ''match_type'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) has parameter \$new_translation with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) has parameter \$old_translation with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:updateJobPEE\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:validateTheRequest\(\) should return array\{id_job\: numeric\-string, password\: string, received_password\: string, id_segment\: string, time_to_edit\: int\|numeric\-string, id_translator\: string, translation\: string, segment\: Model\\Segments\\SegmentStruct\|null, \.\.\.\} but returns array\{id_job\: non\-falsy\-string, password\: non\-falsy\-string, received_password\: string\|false, id_segment\: non\-falsy\-string, time_to_edit\: 0\|string, id_translator\: string\|false, translation\: string\|false, segment\: Model\\Segments\\SegmentStruct\|null, \.\.\.\}\.$#' + identifier: return.type + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Method Controller\\API\\App\\SetTranslationController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Offset ''locked'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' + identifier: offsetAccess.notFound + count: 1 + path: lib/Controller/API/App/SetTranslationController.php + + - + message: '#^Offset ''match_type'' might not exist on Model\\Translations\\SegmentTranslationStruct\|null\.$#' identifier: offsetAccess.notFound count: 1 path: lib/Controller/API/App/SetTranslationController.php @@ -2646,6 +3060,12 @@ parameters: count: 1 path: lib/Controller/API/App/SplitSegmentController.php + - + message: '#^Method Controller\\API\\App\\SplitSegmentController\:\:split\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/SplitSegmentController.php + - message: '#^Method Controller\\API\\App\\SplitSegmentController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -2712,6 +3132,12 @@ parameters: count: 1 path: lib/Controller/API/App/TmKeyManagementController.php + - + message: '#^Method Controller\\API\\App\\TmKeyManagementController\:\:_checkForAdaptiveEngines\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/TmKeyManagementController.php + - message: '#^Method Controller\\API\\App\\TmKeyManagementController\:\:sortKeysInTheRightOrder\(\) has parameter \$jobKeyList with no type specified\.$#' identifier: missingType.parameter @@ -2754,18 +3180,48 @@ parameters: count: 1 path: lib/Controller/API/App/TmKeyManagementController.php + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:isRevision\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/UpdateJobKeysController.php + - message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:jobOwnerIsMe\(\) has parameter \$owner with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/App/UpdateJobKeysController.php + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTMKeysArray\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/UpdateJobKeysController.php + - message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/App/UpdateJobKeysController.php + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTheRequest\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/UpdateJobKeysController.php + + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/App/UpdateJobKeysController.php + + - + message: '#^Method Controller\\API\\App\\UpdateJobKeysController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/UpdateJobKeysController.php + - message: '#^Parameter \#1 \$Json_clientKeys of static method Utils\\TmKeyManagement\\TmKeyManager\:\:mergeJsonKeys\(\) expects string, string\|false given\.$#' identifier: argument.type @@ -2808,6 +3264,12 @@ parameters: count: 1 path: lib/Controller/API/App/UserKeysController.php + - + message: '#^Method Controller\\API\\App\\UserKeysController\:\:getMemoryToUpdate\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/App/UserKeysController.php + - message: '#^Method Controller\\API\\App\\UserKeysController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -2844,6 +3306,12 @@ parameters: count: 1 path: lib/Controller/API/App/UserKeysController.php + - + message: '#^Method Controller\\API\\App\\XliffToTargetConverterController\:\:convert\(\) throws checked exception Klein\\Exceptions\\ResponseAlreadySentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/App/XliffToTargetConverterController.php + - message: '#^Parameter \#1 \$body of method Klein\\AbstractResponse\:\:body\(\) expects string\|null, string\|false given\.$#' identifier: argument.type @@ -2892,6 +3360,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/Base.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\Base\:\:onFailure\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/Commons/Validators/Base.php + - message: '#^Property Controller\\API\\Commons\\Validators\\Base\:\:\$_failureCallback \(Closure\|null\) does not accept callable\(\)\: mixed\.$#' identifier: assign.propertyType @@ -2910,6 +3384,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/Base.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\ChunkPasswordValidator\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/Commons/Validators/ChunkPasswordValidator.php + - message: '#^Method Controller\\API\\Commons\\Validators\\ChunkPasswordValidator\:\:getChunk\(\) should return Model\\Jobs\\JobStruct but returns Model\\Jobs\\JobStruct\|null\.$#' identifier: return.type @@ -2982,6 +3462,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/JobPasswordValidator.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\ProjectAccessTokenValidator\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/Commons/Validators/ProjectAccessTokenValidator.php + - message: '#^Property Controller\\API\\Commons\\Validators\\ProjectAccessTokenValidator\:\:\$accessToken \(string\) does not accept string\|false\|null\.$#' identifier: assign.propertyType @@ -3006,6 +3492,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/ProjectAccessValidator.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\ProjectPasswordValidator\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/Commons/Validators/ProjectPasswordValidator.php + - message: '#^Method Controller\\API\\Commons\\Validators\\ProjectPasswordValidator\:\:getPassword\(\) should return string but returns string\|null\.$#' identifier: return.type @@ -3054,6 +3546,18 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/ProjectValidator.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\ProjectValidator\:\:setFeature\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/Commons/Validators/ProjectValidator.php + + - + message: '#^Method Controller\\API\\Commons\\Validators\\ProjectValidator\:\:setIdProject\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/Commons/Validators/ProjectValidator.php + - message: '#^Method Controller\\API\\Commons\\Validators\\ProjectValidator\:\:setProject\(\) has no return type specified\.$#' identifier: missingType.return @@ -3084,6 +3588,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/Validators/SegmentTranslationIssueValidator.php + - + message: '#^Method Controller\\API\\Commons\\Validators\\SegmentValidator\:\:_validate\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/Commons/Validators/SegmentValidator.php + - message: '#^PHPDoc tag @return with type mixed is not subtype of native type void\.$#' identifier: return.phpDocType @@ -3108,6 +3618,12 @@ parameters: count: 1 path: lib/Controller/API/Commons/ViewValidators/ViewLoginRedirectValidator.php + - + message: '#^Method Controller\\API\\GDrive\\GDriveController\:\:changeConversionParameters\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/GDrive/GDriveController.php + - message: '#^Method Controller\\API\\GDrive\\GDriveController\:\:doImport\(\) has parameter \$listOfIds with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -3162,6 +3678,12 @@ parameters: count: 1 path: lib/Controller/API/GDrive/OAuthController.php + - + message: '#^Method Controller\\API\\GDrive\\OAuthController\:\:__handleCode\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/GDrive/OAuthController.php + - message: '#^Method Controller\\API\\GDrive\\OAuthController\:\:__handleError\(\) has no return type specified\.$#' identifier: missingType.return @@ -3228,6 +3750,18 @@ parameters: count: 1 path: lib/Controller/API/V1/NewController.php + - + message: '#^Method Controller\\API\\V1\\NewController\:\:buildProjectStructure\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V1/NewController.php + + - + message: '#^Method Controller\\API\\V1\\NewController\:\:buildProjectStructure\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 21 + path: lib/Controller/API/V1/NewController.php + - message: '#^Method Controller\\API\\V1\\NewController\:\:generateTargetEngineAssociation\(\) has parameter \$mt_engine with no type specified\.$#' identifier: missingType.parameter @@ -3258,6 +3792,12 @@ parameters: count: 1 path: lib/Controller/API/V1/NewController.php + - + message: '#^Method Controller\\API\\V1\\NewController\:\:getFileMetadata\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V1/NewController.php + - message: '#^Method Controller\\API\\V1\\NewController\:\:getFilesList\(\) has parameter \$arFiles with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -3300,6 +3840,12 @@ parameters: count: 1 path: lib/Controller/API/V1/NewController.php + - + message: '#^Method Controller\\API\\V1\\NewController\:\:validateCharacterCounterMode\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V1/NewController.php + - message: '#^Method Controller\\API\\V1\\NewController\:\:validateDialectStrictParam\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -3354,6 +3900,12 @@ parameters: count: 1 path: lib/Controller/API/V1/NewController.php + - + message: '#^Method Controller\\API\\V1\\NewController\:\:validatePublicTMPenalty\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V1/NewController.php + - message: '#^Method Controller\\API\\V1\\NewController\:\:validateQaModel\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' identifier: throws.unusedType @@ -3936,6 +4488,30 @@ parameters: count: 1 path: lib/Controller/API/V2/DownloadController.php + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:_saveActivity\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/DownloadController.php + + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:_saveActivity\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/DownloadController.php + + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:downloadFile\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/DownloadController.php + + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:downloadFile\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Controller/API/V2/DownloadController.php + - message: '#^Method Controller\\API\\V2\\DownloadController\:\:getOutputContentsWithZipFiles\(\) has parameter \$output_content with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -3948,6 +4524,12 @@ parameters: count: 1 path: lib/Controller/API/V2/DownloadController.php + - + message: '#^Method Controller\\API\\V2\\DownloadController\:\:ifGlobalSightXliffRemoveTargetMarks\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/DownloadController.php + - message: '#^Method Controller\\API\\V2\\DownloadController\:\:startRemoteFileService\(\) has parameter \$output_content with no type specified\.$#' identifier: missingType.parameter @@ -4086,6 +4668,18 @@ parameters: count: 1 path: lib/Controller/API/V2/DownloadJobTMXController.php + - + message: '#^Method Controller\\API\\V2\\DownloadJobTMXController\:\:_saveActivity\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/DownloadJobTMXController.php + + - + message: '#^Method Controller\\API\\V2\\DownloadJobTMXController\:\:index\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/DownloadJobTMXController.php + - message: '#^PHPDoc tag @var has invalid value \(\$tmx SplTempFileObject\)\: Unexpected token "\$tmx", expected type at offset 28 on line 2$#' identifier: phpDoc.parseError @@ -4134,6 +4728,12 @@ parameters: count: 1 path: lib/Controller/API/V2/DownloadOriginalController.php + - + message: '#^Method Controller\\API\\V2\\DownloadOriginalController\:\:index\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Controller/API/V2/DownloadOriginalController.php + - message: '#^Offset ''basename'' might not exist on array\|string\.$#' identifier: offsetAccess.notFound @@ -4188,6 +4788,12 @@ parameters: count: 3 path: lib/Controller/API/V2/GlossaryFilesController.php + - + message: '#^Method Controller\\API\\V2\\GlossaryFilesController\:\:afterConstruct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/GlossaryFilesController.php + - message: '#^Method Controller\\API\\V2\\GlossaryFilesController\:\:extractCSV\(\) has no return type specified\.$#' identifier: missingType.return @@ -4260,6 +4866,12 @@ parameters: count: 1 path: lib/Controller/API/V2/JobsController.php + - + message: '#^Method Controller\\API\\V2\\JobsTranslatorsController\:\:get\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/JobsTranslatorsController.php + - message: '#^Parameter \#1 \$delivery_date of method Model\\Translators\\TranslatorsModel\:\:setDeliveryDate\(\) expects int\|string, string\|false\|null given\.$#' identifier: argument.type @@ -4302,6 +4914,12 @@ parameters: count: 1 path: lib/Controller/API/V2/MarkAllSegmentStatusController.php + - + message: '#^Method Controller\\API\\V2\\MemoryKeysController\:\:listKeys\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/MemoryKeysController.php + - message: '#^Property Model\\TmKeyManagement\\MemoryKeyStruct\:\:\$uid \(int\) does not accept int\|null\.$#' identifier: assign.propertyType @@ -4332,6 +4950,18 @@ parameters: count: 1 path: lib/Controller/API/V2/ProjectsController.php + - + message: '#^Method Controller\\API\\V2\\ProjectsController\:\:deleteDueDate\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/ProjectsController.php + + - + message: '#^Method Controller\\API\\V2\\ProjectsController\:\:updateDueDate\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/ProjectsController.php + - message: '#^Property Controller\\API\\V2\\ProjectsController\:\:\$project \(Model\\Projects\\ProjectStruct\) does not accept Model\\Projects\\ProjectStruct\|null\.$#' identifier: assign.propertyType @@ -4398,6 +5028,30 @@ parameters: count: 1 path: lib/Controller/API/V2/SegmentTranslationIssueController.php + - + message: '#^Method Controller\\API\\V2\\SegmentTranslationIssueController\:\:checkLoggedUserPermissions\(\) throws checked exception Controller\\API\\Commons\\Exceptions\\AuthorizationError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/SegmentTranslationIssueController.php + + - + message: '#^Method Controller\\API\\V2\\SegmentTranslationIssueController\:\:checkLoggedUserPermissions\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/V2/SegmentTranslationIssueController.php + + - + message: '#^Method Controller\\API\\V2\\SegmentTranslationIssueController\:\:create\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/SegmentTranslationIssueController.php + + - + message: '#^Method Controller\\API\\V2\\SegmentTranslationIssueController\:\:update\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/SegmentTranslationIssueController.php + - message: '#^Parameter \#1 \$entry of method Controller\\API\\V2\\SegmentTranslationIssueController\:\:checkLoggedUserPermissions\(\) expects Model\\LQA\\EntryStruct, Model\\LQA\\EntryStruct\|null given\.$#' identifier: argument.type @@ -4458,12 +5112,24 @@ parameters: count: 1 path: lib/Controller/API/V2/SplitJobController.php + - + message: '#^Method Controller\\API\\V2\\SplitJobController\:\:checkSplit\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/SplitJobController.php + - message: '#^Method Controller\\API\\V2\\SplitJobController\:\:checkSplitAccess\(\) has parameter \$jobList with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/V2/SplitJobController.php + - + message: '#^Method Controller\\API\\V2\\SplitJobController\:\:checkSplitAccess\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/SplitJobController.php + - message: '#^Method Controller\\API\\V2\\SplitJobController\:\:filterJobsById\(\) has parameter \$jobList with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -4482,12 +5148,24 @@ parameters: count: 1 path: lib/Controller/API/V2/SplitJobController.php + - + message: '#^Method Controller\\API\\V2\\SplitJobController\:\:merge\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/SplitJobController.php + - message: '#^Method Controller\\API\\V2\\SplitJobController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/V2/SplitJobController.php + - + message: '#^Method Controller\\API\\V2\\SplitJobController\:\:validateTheRequest\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Controller/API/V2/SplitJobController.php + - message: '#^PHPDoc tag @var has invalid value \(\$data SplitMergeProjectData\)\: Unexpected token "\$data", expected type at offset 10 on line 1$#' identifier: phpDoc.parseError @@ -4524,6 +5202,12 @@ parameters: count: 1 path: lib/Controller/API/V2/TeamMembersController.php + - + message: '#^Method Controller\\API\\V2\\TeamMembersController\:\:index\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/TeamMembersController.php + - message: '#^Parameter \#1 \$emails of method Model\\Teams\\TeamModel\:\:addMemberEmails\(\) expects array, array\\|false\|null given\.$#' identifier: argument.type @@ -4548,6 +5232,12 @@ parameters: count: 1 path: lib/Controller/API/V2/TeamsController.php + - + message: '#^Method Controller\\API\\V2\\TeamsController\:\:getTeamList\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/TeamsController.php + - message: '#^Parameter \#1 \$email of method Model\\Teams\\TeamModel\:\:addMemberEmail\(\) expects string, string\|false given\.$#' identifier: argument.type @@ -4572,6 +5262,12 @@ parameters: count: 1 path: lib/Controller/API/V2/TeamsController.php + - + message: '#^Method Controller\\API\\V2\\TeamsProjectsController\:\:_appendSingleProjectTeamValidators\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V2/TeamsProjectsController.php + - message: '#^Property Controller\\API\\V2\\TeamsProjectsController\:\:\$project \(Model\\Projects\\ProjectStruct\) does not accept Model\\Projects\\ProjectStruct\|null\.$#' identifier: assign.propertyType @@ -4608,6 +5304,18 @@ parameters: count: 1 path: lib/Controller/API/V2/UrlsController.php + - + message: '#^Method Controller\\API\\V2\\UserController\:\:edit\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/UserController.php + + - + message: '#^Method Controller\\API\\V2\\UserController\:\:setMetadata\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V2/UserController.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|null given\.$#' identifier: argument.type @@ -4650,6 +5358,12 @@ parameters: count: 1 path: lib/Controller/API/V3/CountWordController.php + - + message: '#^Method Controller\\API\\V3\\CountWordController\:\:afterConstruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/CountWordController.php + - message: '#^PHPDoc tag @var has invalid value \(\$filter MateCatFilter\)\: Unexpected token "\$filter", expected type at offset 9 on line 1$#' identifier: phpDoc.parseError @@ -4770,6 +5484,12 @@ parameters: count: 1 path: lib/Controller/API/V3/DownloadQRController.php + - + message: '#^Method Controller\\API\\V3\\DownloadQRController\:\:download\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/API/V3/DownloadQRController.php + - message: '#^Parameter \#1 \$stream of function fclose expects resource, resource\|false given\.$#' identifier: argument.type @@ -4812,12 +5532,24 @@ parameters: count: 1 path: lib/Controller/API/V3/FileInfoController.php + - + message: '#^Method Controller\\API\\V3\\FileInfoController\:\:setInstructions\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/FileInfoController.php + - message: '#^Method Controller\\API\\V3\\FiltersConfigTemplateController\:\:validateJSON\(\) has parameter \$json with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/V3/FiltersConfigTemplateController.php + - + message: '#^Method Controller\\API\\V3\\FiltersConfigTemplateController\:\:validateJSON\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/FiltersConfigTemplateController.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|false given\.$#' identifier: argument.type @@ -4884,6 +5616,12 @@ parameters: count: 1 path: lib/Controller/API/V3/IssueCheckController.php + - + message: '#^Method Controller\\API\\V3\\LaraController\:\:glossaries\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/LaraController.php + - message: '#^Parameter \#2 \$engineId of class Controller\\API\\Commons\\Validators\\EngineOwnershipValidator constructor expects int, string\|false given\.$#' identifier: argument.type @@ -4956,6 +5694,12 @@ parameters: count: 1 path: lib/Controller/API/V3/ModernMTController.php + - + message: '#^Method Controller\\API\\V3\\ModernMTController\:\:extractCSV\(\) throws checked exception PhpOffice\\PhpSpreadsheet\\Writer\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/ModernMTController.php + - message: '#^Method Controller\\API\\V3\\ModernMTController\:\:filterResult\(\) has parameter \$memory with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5064,6 +5808,12 @@ parameters: count: 1 path: lib/Controller/API/V3/ModernMTController.php + - + message: '#^Method Controller\\API\\V3\\MyMemoryController\:\:saveMemoryKey\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/MyMemoryController.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, string\|null given\.$#' identifier: argument.type @@ -5106,6 +5856,12 @@ parameters: count: 1 path: lib/Controller/API/V3/PayableRateController.php + - + message: '#^Method Controller\\API\\V3\\PayableRateController\:\:validateJSON\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/PayableRateController.php + - message: '#^Parameter \#1 \$json of class Utils\\Validator\\JSONSchema\\JSONValidatorObject constructor expects string, string\|null given\.$#' identifier: argument.type @@ -5232,6 +5988,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QAModelTemplateController.php + - + message: '#^Method Controller\\API\\V3\\QAModelTemplateController\:\:validateJSON\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/QAModelTemplateController.php + - message: '#^Parameter \#1 \$json of class Utils\\Validator\\JSONSchema\\JSONValidatorObject constructor expects string, string\|null given\.$#' identifier: argument.type @@ -5298,6 +6060,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QualityReportControllerAPI.php + - + message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:_getPaginationLinks\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/QualityReportControllerAPI.php + - message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:getJob\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -5310,6 +6078,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QualityReportControllerAPI.php + - + message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:getSecsPerWord\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/QualityReportControllerAPI.php + - message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:getTteArrayForSegment\(\) has parameter \$tteArray with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5322,6 +6096,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QualityReportControllerAPI.php + - + message: '#^Method Controller\\API\\V3\\QualityReportControllerAPI\:\:show\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/QualityReportControllerAPI.php + - message: '#^PHPDoc tag @var for variable \$filter has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5352,6 +6132,12 @@ parameters: count: 1 path: lib/Controller/API/V3/QualityReportControllerAPI.php + - + message: '#^Method Controller\\API\\V3\\RevisionFeedbackController\:\:feedback\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Controller/API/V3/RevisionFeedbackController.php + - message: '#^Method Controller\\API\\V3\\RevisionFeedbackController\:\:getJob\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -5508,12 +6294,24 @@ parameters: count: 1 path: lib/Controller/API/V3/SegmentAnalysisController.php + - + message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:getSegmentsForAJob\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/SegmentAnalysisController.php + - message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:getSegmentsForAProject\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Controller/API/V3/SegmentAnalysisController.php + - + message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:getSegmentsForAProject\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/SegmentAnalysisController.php + - message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:getSegmentsFromIdJobAndPassword\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5544,6 +6342,12 @@ parameters: count: 1 path: lib/Controller/API/V3/SegmentAnalysisController.php + - + message: '#^Method Controller\\API\\V3\\SegmentAnalysisController\:\:job\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/SegmentAnalysisController.php + - message: '#^PHPDoc tag @var has invalid value \(\$segmentForAnalysis ShapelessConcreteStruct\)\: Unexpected token "\$segmentForAnalysis", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -5622,12 +6426,24 @@ parameters: count: 1 path: lib/Controller/API/V3/TeamsProjectsController.php + - + message: '#^Method Controller\\API\\V3\\TeamsProjectsController\:\:getTotalPages\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/TeamsProjectsController.php + - message: '#^Method Controller\\API\\V3\\TeamsProjectsController\:\:setTeam\(\) has parameter \$team with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Controller/API/V3/TeamsProjectsController.php + - + message: '#^Method Controller\\API\\V3\\TeamsProjectsController\:\:setTeam\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/TeamsProjectsController.php + - message: '#^Access to an undefined property object\:\:\$definitions\.$#' identifier: property.notFound @@ -5646,6 +6462,12 @@ parameters: count: 1 path: lib/Controller/API/V3/XliffConfigTemplateController.php + - + message: '#^Method Controller\\API\\V3\\XliffConfigTemplateController\:\:validateJSON\(\) throws checked exception Swaggest\\JsonSchema\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/API/V3/XliffConfigTemplateController.php + - message: '#^Parameter \#1 \$json of static method Model\\Xliff\\XliffConfigTemplateDao\:\:createFromJSON\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -5706,6 +6528,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/AbstractDownloadController.php + - + message: '#^Method Controller\\Abstracts\\AbstractDownloadController\:\:finalize\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/AbstractDownloadController.php + - message: '#^Method Controller\\Abstracts\\AbstractDownloadController\:\:nocache\(\) has no return type specified\.$#' identifier: missingType.return @@ -5766,6 +6594,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/AbstractDownloadController.php + - + message: '#^Method Controller\\Abstracts\\Authentication\\AuthCookie\:\:destroyAuthentication\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/AuthCookie.php + - message: '#^Method Controller\\Abstracts\\Authentication\\AuthCookie\:\:generateSignedAuthCookie\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5778,6 +6612,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/Authentication/AuthCookie.php + - + message: '#^Method Controller\\Abstracts\\Authentication\\AuthCookie\:\:getCredentials\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/AuthCookie.php + - message: '#^Method Controller\\Abstracts\\Authentication\\AuthCookie\:\:getData\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -5886,6 +6726,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/Authentication/CookieManager.php + - + message: '#^Method Controller\\Abstracts\\Authentication\\SessionTokenStoreHandler\:\:_cacheSetConnection\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + - message: '#^Method Controller\\Abstracts\\Authentication\\SessionTokenStoreHandler\:\:_deleteCacheByKey\(\) should return bool but returns int\.$#' identifier: return.type @@ -5904,6 +6750,18 @@ parameters: count: 1 path: lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + - + message: '#^Method Controller\\Abstracts\\Authentication\\SessionTokenStoreHandler\:\:_setInCacheMap\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + + - + message: '#^Method Controller\\Abstracts\\Authentication\\SessionTokenStoreHandler\:\:isLoginCookieStillActive\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + - message: '#^Parameter \#1 \$key of method Predis\\ClientInterface\:\:get\(\) expects string, int given\.$#' identifier: argument.type @@ -6108,6 +6966,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/BaseKleinViewController.php + - + message: '#^Method Controller\\Abstracts\\BaseKleinViewController\:\:render\(\) throws checked exception Klein\\Exceptions\\ResponseAlreadySentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/BaseKleinViewController.php + - message: '#^Method Controller\\Abstracts\\BaseKleinViewController\:\:setView\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6162,6 +7026,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/KleinController.php + - + message: '#^Method Controller\\Abstracts\\KleinController\:\:broadcastLogout\(\) throws checked exception Stomp\\Exception\\ConnectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Abstracts/KleinController.php + - message: '#^Method Controller\\Abstracts\\KleinController\:\:getFeatureSet\(\) should return Model\\FeaturesBase\\FeatureSet but returns Model\\FeaturesBase\\FeatureSet\|null\.$#' identifier: return.type @@ -6192,6 +7062,12 @@ parameters: count: 1 path: lib/Controller/Abstracts/KleinController.php + - + message: '#^Method Controller\\Abstracts\\KleinController\:\:setAuthKeysIfExists\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/Abstracts/KleinController.php + - message: '#^Method Controller\\Abstracts\\KleinController\:\:startTimer\(\) has no return type specified\.$#' identifier: missingType.return @@ -6246,6 +7122,12 @@ parameters: count: 1 path: lib/Controller/Traits/KleinResponseFileStream.php + - + message: '#^Method Controller\\Traits\\KleinResponseFileStream\:\:streamFileFromPointer\(\) throws checked exception Klein\\Exceptions\\ResponseAlreadySentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Traits/KleinResponseFileStream.php + - message: '#^Method Controller\\Traits\\KleinResponseFileStream\:\:streamFileInlineFromPointer\(\) has no return type specified\.$#' identifier: missingType.return @@ -6318,6 +7200,12 @@ parameters: count: 1 path: lib/Controller/Views/AnalyzeController.php + - + message: '#^Method Controller\\Views\\AnalyzeController\:\:renderView\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/AnalyzeController.php + - message: '#^Method Controller\\Views\\AnalyzeController\:\:validateTheRequest\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6366,6 +7254,12 @@ parameters: count: 1 path: lib/Controller/Views/CattoolController.php + - + message: '#^Method Controller\\Views\\CattoolController\:\:_saveActivity\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/CattoolController.php + - message: '#^Method Controller\\Views\\CattoolController\:\:archived\(\) has parameter \$jobOwnership with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6408,6 +7302,12 @@ parameters: count: 1 path: lib/Controller/Views/CattoolController.php + - + message: '#^Method Controller\\Views\\CattoolController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/Views/CattoolController.php + - message: '#^Offset 0 might not exist on array\\|null\.$#' identifier: offsetAccess.notFound @@ -6474,6 +7374,12 @@ parameters: count: 1 path: lib/Controller/Views/ManageController.php + - + message: '#^Method Controller\\Views\\ManageController\:\:renderView\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/ManageController.php + - message: '#^Property Model\\ActivityLog\\ActivityLogStruct\:\:\$ip \(string\) does not accept string\|null\.$#' identifier: assign.propertyType @@ -6492,12 +7398,30 @@ parameters: count: 1 path: lib/Controller/Views/OauthResponseHandlerController.php + - + message: '#^Method Controller\\Views\\OauthResponseHandlerController\:\:_processSuccessfulOAuth\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Controller/Views/OauthResponseHandlerController.php + - message: '#^Parameter \#2 \$provider of method Controller\\Views\\OauthResponseHandlerController\:\:_processSuccessfulOAuth\(\) expects null, string\|false\|null given\.$#' identifier: argument.type count: 1 path: lib/Controller/Views/OauthResponseHandlerController.php + - + message: '#^Method Controller\\Views\\OutsourceTo\\AbstractController\:\:afterConstruct\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/OutsourceTo/AbstractController.php + + - + message: '#^Method Controller\\Views\\OutsourceTo\\AbstractController\:\:validateTheRequest\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/OutsourceTo/AbstractController.php + - message: '#^Offset ''currency'' might not exist on Utils\\Shop\\AbstractItem\|null\.$#' identifier: offsetAccess.notFound @@ -6522,6 +7446,12 @@ parameters: count: 1 path: lib/Controller/Views/QualityReportController.php + - + message: '#^Method Controller\\Views\\QualityReportController\:\:renderView\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/QualityReportController.php + - message: '#^Method Controller\\Views\\QualityReportController\:\:searchableStatuses\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6540,6 +7470,12 @@ parameters: count: 1 path: lib/Controller/Views/QualityReportController.php + - + message: '#^Method Controller\\Views\\TemplateDecorator\\AbstractDecorator\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/TemplateDecorator/AbstractDecorator.php + - message: '#^Method Controller\\Views\\TemplateDecorator\\AbstractDecorator\:\:decorate\(\) has no return type specified\.$#' identifier: missingType.return @@ -6570,6 +7506,12 @@ parameters: count: 1 path: lib/Controller/Views/TemplateDecorator/DownloadOmegaTOutputDecorator.php + - + message: '#^Method Controller\\Views\\TemplateDecorator\\DownloadOmegaTOutputDecorator\:\:createOmegaTZip\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Controller/Views/TemplateDecorator/DownloadOmegaTOutputDecorator.php + - message: '#^Method Controller\\Views\\TemplateDecorator\\DownloadOmegaTOutputDecorator\:\:decorate\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6642,6 +7584,12 @@ parameters: count: 1 path: lib/Model/ActivityLog/ActivityLogDao.php + - + message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:create\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ActivityLog/ActivityLogDao.php + - message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getAllForProject\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -6654,12 +7602,24 @@ parameters: count: 1 path: lib/Model/ActivityLog/ActivityLogDao.php + - + message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getAllForProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ActivityLog/ActivityLogDao.php + - message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getByID\(\) has parameter \$activity_id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ActivityLog/ActivityLogDao.php + - + message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getByID\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ActivityLog/ActivityLogDao.php + - message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getLastActionInProject\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -6672,6 +7632,12 @@ parameters: count: 1 path: lib/Model/ActivityLog/ActivityLogDao.php + - + message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:getLastActionInProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ActivityLog/ActivityLogDao.php + - message: '#^Method Model\\ActivityLog\\ActivityLogDao\:\:read\(\) has parameter \$whereKeys with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6696,6 +7662,18 @@ parameters: count: 1 path: lib/Model/Analysis/AbstractStatus.php + - + message: '#^Method Model\\Analysis\\AbstractStatus\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Analysis/AbstractStatus.php + + - + message: '#^Method Model\\Analysis\\AbstractStatus\:\:_fetchProjectData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Analysis/AbstractStatus.php + - message: '#^Method Model\\Analysis\\AbstractStatus\:\:fetchData\(\) should return \$this\(Model\\Analysis\\AbstractStatus\) but returns Model\\Analysis\\AbstractStatus\.$#' identifier: return.type @@ -6726,6 +7704,12 @@ parameters: count: 1 path: lib/Model/Analysis/AbstractStatus.php + - + message: '#^Method Model\\Analysis\\AbstractStatus\:\:loadObjects\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Analysis/AbstractStatus.php + - message: '#^Parameter \#1 \$mt_we_workflow_enabled of static method Model\\Analysis\\Constants\\MatchConstantsFactory\:\:getInstance\(\) expects bool\|null, string\|false given\.$#' identifier: argument.type @@ -6792,12 +7776,24 @@ parameters: count: 1 path: lib/Model/Analysis/AnalysisDao.php + - + message: '#^Method Model\\Analysis\\AnalysisDao\:\:destroyCacheByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Analysis/AnalysisDao.php + - message: '#^Method Model\\Analysis\\AnalysisDao\:\:getProjectStatsVolumeAnalysis\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Analysis/AnalysisDao.php + - + message: '#^Method Model\\Analysis\\AnalysisDao\:\:getProjectStatsVolumeAnalysis\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Analysis/AnalysisDao.php + - message: '#^Unsafe usage of new static\(\)\.$#' identifier: new.static @@ -6924,6 +7920,12 @@ parameters: count: 1 path: lib/Model/Analysis/XTRFStatus.php + - + message: '#^Method Model\\Analysis\\XTRFStatus\:\:formatFile\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 13 + path: lib/Model/Analysis/XTRFStatus.php + - message: '#^Method Model\\Analysis\\XTRFStatus\:\:getResultArray\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -6954,30 +7956,60 @@ parameters: count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:create\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:deleteByUid\(\) has parameter \$uid with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:deleteByUid\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:findByKey\(\) has parameter \$key with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:findByKey\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:getById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:getByUid\(\) has parameter \$uid with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/ApiKeys/ApiKeyDao.php + - + message: '#^Method Model\\ApiKeys\\ApiKeyDao\:\:getByUid\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ApiKeys/ApiKeyDao.php + - message: '#^Method Model\\ApiKeys\\ApiKeyStruct\:\:validSecret\(\) has parameter \$secret with no type specified\.$#' identifier: missingType.parameter @@ -7002,12 +8034,30 @@ parameters: count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:createFromChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:deleteEvent\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:getByIdAndChunk\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:getByIdAndChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:lastCompletionRecord\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7020,6 +8070,12 @@ parameters: count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:updatePassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:validSources\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7038,6 +8094,12 @@ parameters: count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionUpdateDao\:\:createOrUpdateFromStruct\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionUpdateDao\:\:updatePassword\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -7056,6 +8118,12 @@ parameters: count: 1 path: lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + - + message: '#^Method Model\\ChunksCompletion\\ChunkCompletionUpdateDao\:\:updatePassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + - message: '#^Method Model\\ChunksCompletion\\ChunkCompletionUpdateDao\:\:validSources\(\) has no return type specified\.$#' identifier: missingType.return @@ -7068,12 +8136,30 @@ parameters: count: 1 path: lib/Model/Comments/BaseCommentStruct.php + - + message: '#^Method Model\\Comments\\BaseCommentStruct\:\:templateMessage\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Comments/BaseCommentStruct.php + - message: '#^Parameter \#1 \$object of function date_format expects DateTimeInterface, DateTime\|false given\.$#' identifier: argument.type count: 2 path: lib/Model/Comments/BaseCommentStruct.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:deleteComment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Comments/CommentDao.php + + - + message: '#^Method Model\\Comments\\CommentDao\:\:destroySegmentIdSegmentCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter @@ -7086,6 +8172,12 @@ parameters: count: 1 path: lib/Model/Comments/CommentDao.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:getCommentsForChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getOpenThreadsForProjects\(\) has parameter \$projectIds with no type specified\.$#' identifier: missingType.parameter @@ -7098,12 +8190,24 @@ parameters: count: 1 path: lib/Model/Comments/CommentDao.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:getOpenThreadsForProjects\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getThreadContributorUids\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Comments/CommentDao.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:getThreadContributorUids\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getThreadsBySegments\(\) has parameter \$job_id with no type specified\.$#' identifier: missingType.parameter @@ -7122,6 +8226,12 @@ parameters: count: 1 path: lib/Model/Comments/CommentDao.php + - + message: '#^Method Model\\Comments\\CommentDao\:\:getThreadsBySegments\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Comments/CommentDao.php + - message: '#^Method Model\\Comments\\CommentDao\:\:getUsersIdFromContent\(\) has parameter \$content with no type specified\.$#' identifier: missingType.parameter @@ -7207,27 +8317,63 @@ parameters: path: lib/Model/ConnectedServices/ConnectedServiceDao.php - - message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findServiceByUserAndId\(\) has parameter \$id_service with no type specified\.$#' - identifier: missingType.parameter - count: 1 + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 path: lib/Model/ConnectedServices/ConnectedServiceDao.php - - message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:setServiceExpired\(\) has parameter \$time with no type specified\.$#' - identifier: missingType.parameter - count: 1 + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findDefaultServiceByUserAndName\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 path: lib/Model/ConnectedServices/ConnectedServiceDao.php - - message: '#^Property Model\\ConnectedServices\\ConnectedServiceDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findServiceByUserAndId\(\) has parameter \$id_service with no type specified\.$#' + identifier: missingType.parameter count: 1 path: lib/Model/ConnectedServices/ConnectedServiceDao.php - - message: '#^Property Model\\ConnectedServices\\ConnectedServiceDao\:\:\$primary_keys type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue - count: 1 + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findServiceByUserAndId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findServicesByUser\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:findUserServicesByNameAndEmail\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:setDefaultService\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Method Model\\ConnectedServices\\ConnectedServiceDao\:\:setServiceExpired\(\) has parameter \$time with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Property Model\\ConnectedServices\\ConnectedServiceDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: lib/Model/ConnectedServices/ConnectedServiceDao.php + + - + message: '#^Property Model\\ConnectedServices\\ConnectedServiceDao\:\:\$primary_keys type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 path: lib/Model/ConnectedServices/ConnectedServiceDao.php - @@ -7296,6 +8442,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/GDriveTokenVerifyModel.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\GDriveUserAuthorizationModel\:\:__collectProperties\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/ConnectedServices/GDrive/GDriveUserAuthorizationModel.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\GDriveUserAuthorizationModel\:\:__insertService\(\) should return Model\\ConnectedServices\\ConnectedServiceStruct but returns Model\\ConnectedServices\\ConnectedServiceStruct\|false\.$#' identifier: return.type @@ -7326,6 +8478,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/RemoteFileService.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/RemoteFileService.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:copyFile\(\) has parameter \$copyTitle with no type specified\.$#' identifier: missingType.parameter @@ -7350,6 +8508,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/RemoteFileService.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:getService\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/RemoteFileService.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:updateFileOnGDrive\(\) has parameter \$parents with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7392,6 +8556,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/Session.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:deleteDirectory\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:doConversion\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7428,6 +8598,18 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/Session.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:getInstanceForCLI\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:getInstanceForCLI\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + - message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:getToken\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7440,6 +8622,24 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/Session.php + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:removeFile\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:removeFile\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + + - + message: '#^Method Model\\ConnectedServices\\GDrive\\Session\:\:sanitizeFileName\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/GDrive/Session.php + - message: '#^Parameter \#1 \$googleMime of static method Model\\ConnectedServices\\GDrive\\RemoteFileService\:\:officeExtensionFromMime\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -7476,6 +8676,18 @@ parameters: count: 1 path: lib/Model/ConnectedServices/GDrive/Session.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\DefuseEncryption\:\:decrypt\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/DefuseEncryption.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\DefuseEncryption\:\:encrypt\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/DefuseEncryption.php + - message: '#^Parameter \#2 \$key of static method Defuse\\Crypto\\Crypto\:\:decrypt\(\) expects Defuse\\Crypto\\Key, Defuse\\Crypto\\Key\|null given\.$#' identifier: argument.type @@ -7500,6 +8712,24 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/DefuseEncryption.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Facebook\\FacebookProvider\:\:getAccessTokenFromAuthCode\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Facebook\\FacebookProvider\:\:getClient\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Facebook\\FacebookProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + - message: '#^Property Model\\ConnectedServices\\Oauth\\ProviderUser\:\:\$email \(string\) does not accept string\|null\.$#' identifier: assign.propertyType @@ -7512,6 +8742,30 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Github\\GithubProvider\:\:getAccessTokenFromAuthCode\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Github\\GithubProvider\:\:getAuthorizationUrl\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Github\\GithubProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Github\\GithubProvider\:\:getResourceOwner\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + - message: '#^Method Model\\ConnectedServices\\Oauth\\Google\\AccessToken\:\:__construct\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7548,6 +8802,12 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/Google/GoogleClientLogsFormatter.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Google\\GoogleProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/ConnectedServices/Oauth/Google/GoogleProvider.php + - message: '#^Parameter \#1 \$applicationName of method Google\\Client\:\:setApplicationName\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -7578,6 +8838,48 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/Google/GoogleProvider.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\LinkedIn\\LinkedInProvider\:\:getAccessTokenFromAuthCode\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/LinkedIn/LinkedInProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\LinkedIn\\LinkedInProvider\:\:getResourceOwner\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/LinkedIn/LinkedInProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\LinkedIn\\LinkedInProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/ConnectedServices/Oauth/LinkedIn/LinkedInProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Microsoft\\MicrosoftProvider\:\:getAccessTokenFromAuthCode\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Microsoft\\MicrosoftProvider\:\:getAuthorizationUrl\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Microsoft\\MicrosoftProvider\:\:getResourceOwner\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + + - + message: '#^Method Model\\ConnectedServices\\Oauth\\Microsoft\\MicrosoftProvider\:\:getResourceOwner\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + - message: '#^PHPDoc tag @return with type mixed is not subtype of native type Model\\ConnectedServices\\Oauth\\ProviderUser\.$#' identifier: return.phpDocType @@ -7596,12 +8898,24 @@ parameters: count: 1 path: lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\OauthClient\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/OauthClient.php + - message: '#^Method Model\\ConnectedServices\\Oauth\\OauthClient\:\:getAuthorizationUrl\(\) has parameter \$_session with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/ConnectedServices/Oauth/OauthClient.php + - + message: '#^Method Model\\ConnectedServices\\Oauth\\OauthClient\:\:getInstance\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ConnectedServices/Oauth/OauthClient.php + - message: '#^Property Model\\ConnectedServices\\Oauth\\OauthClient\:\:\$provider \(Model\\ConnectedServices\\Oauth\\AbstractProvider\) does not accept object\.$#' identifier: assign.propertyType @@ -7878,6 +9192,12 @@ parameters: count: 1 path: lib/Model/Conversion/InternalHashPaths.php + - + message: '#^Method Model\\Conversion\\InternalHashPaths\:\:__construct\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/InternalHashPaths.php + - message: '#^Parameter \#1 \$string of function trim expects string, string\|false given\.$#' identifier: argument.type @@ -7896,6 +9216,12 @@ parameters: count: 1 path: lib/Model/Conversion/MimeTypes/Guesser/FileinfoMimeTypeGuesser.php + - + message: '#^Method Model\\Conversion\\MimeTypes\\Guesser\\SimpleMarkupMimeTypeGuesser\:\:guessMimeType\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/MimeTypes/Guesser/SimpleMarkupMimeTypeGuesser.php + - message: '#^Parameter \#1 \$haystack of function stripos expects string, string\|false given\.$#' identifier: argument.type @@ -7914,6 +9240,12 @@ parameters: count: 1 path: lib/Model/Conversion/MimeTypes/MimeTypes.php + - + message: '#^Method Model\\Conversion\\MimeTypes\\MimeTypes\:\:guessMimeType\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Conversion/MimeTypes/MimeTypes.php + - message: '#^Property Model\\Conversion\\MimeTypes\\MimeTypes\:\:\$extensions type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -7962,12 +9294,24 @@ parameters: count: 1 path: lib/Model/Conversion/Upload.php + - + message: '#^Method Model\\Conversion\\Upload\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/Upload.php + - message: '#^Method Model\\Conversion\\Upload\:\:_filesAreTooMuch\(\) has parameter \$filesToUpload with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Conversion/Upload.php + - + message: '#^Method Model\\Conversion\\Upload\:\:fixFileName\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/Upload.php + - message: '#^Method Model\\Conversion\\Upload\:\:getUniformGlobalFilesStructure\(\) has parameter \$filesToUpload with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8046,6 +9390,12 @@ parameters: count: 1 path: lib/Model/Conversion/ZipArchiveHandler.php + - + message: '#^Method Model\\Conversion\\ZipArchiveHandler\:\:extractFilesInTmp\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Conversion/ZipArchiveHandler.php + - message: '#^Method Model\\Conversion\\ZipArchiveHandler\:\:prependZipFileName\(\) is unused\.$#' identifier: method.unused @@ -8154,6 +9504,12 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDao.php + - + message: '#^Method Model\\DataAccess\\AbstractDao\:\:_cacheSetConnection\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDao.php + - message: '#^Method Model\\DataAccess\\AbstractDao\:\:_deleteCacheByKey\(\) should return bool but returns int\.$#' identifier: return.type @@ -8178,12 +9534,30 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDao.php + - + message: '#^Method Model\\DataAccess\\AbstractDao\:\:_fetchObjectMap\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDao.php + + - + message: '#^Method Model\\DataAccess\\AbstractDao\:\:_fetchObjectMap\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/DataAccess/AbstractDao.php + - message: '#^Method Model\\DataAccess\\AbstractDao\:\:_getStatementForQuery\(\) has parameter \$query with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/DataAccess/AbstractDao.php + - + message: '#^Method Model\\DataAccess\\AbstractDao\:\:_getStatementForQuery\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDao.php + - message: '#^Method Model\\DataAccess\\AbstractDao\:\:_sanitizeInputArray\(\) has parameter \$input with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8382,6 +9756,12 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - + message: '#^Method Model\\DataAccess\\AbstractDaoObjectStruct\:\:__construct\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - message: '#^Method Model\\DataAccess\\AbstractDaoObjectStruct\:\:__get\(\) has parameter \$name with no type specified\.$#' identifier: missingType.parameter @@ -8412,6 +9792,12 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - + message: '#^Method Model\\DataAccess\\AbstractDaoObjectStruct\:\:setTimestamp\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - message: '#^Method Model\\DataAccess\\AbstractDaoObjectStruct\:\:toArray\(\) has parameter \$mask with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8436,6 +9822,12 @@ parameters: count: 1 path: lib/Model/DataAccess/AbstractDaoObjectStruct.php + - + message: '#^Method Model\\DataAccess\\Database\:\:begin\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/Database.php + - message: '#^Method Model\\DataAccess\\Database\:\:buildInsertStatement\(\) has parameter \$attrs with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8454,6 +9846,18 @@ parameters: count: 1 path: lib/Model/DataAccess/Database.php + - + message: '#^Method Model\\DataAccess\\Database\:\:commit\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/Database.php + + - + message: '#^Method Model\\DataAccess\\Database\:\:getConnection\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/DataAccess/Database.php + - message: '#^Method Model\\DataAccess\\Database\:\:insert\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8490,12 +9894,30 @@ parameters: count: 1 path: lib/Model/DataAccess/Database.php + - + message: '#^Method Model\\DataAccess\\Database\:\:last_insert\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/Database.php + - message: '#^Method Model\\DataAccess\\Database\:\:nextSequence\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/DataAccess/Database.php + - + message: '#^Method Model\\DataAccess\\Database\:\:nextSequence\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 9 + path: lib/Model/DataAccess/Database.php + + - + message: '#^Method Model\\DataAccess\\Database\:\:rollback\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/Database.php + - message: '#^Method Model\\DataAccess\\Database\:\:update\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8508,6 +9930,18 @@ parameters: count: 1 path: lib/Model/DataAccess/Database.php + - + message: '#^Method Model\\DataAccess\\Database\:\:update\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/DataAccess/Database.php + + - + message: '#^Method Model\\DataAccess\\Database\:\:useDb\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/DataAccess/Database.php + - message: '#^Parameter \#1 \$server of class Model\\DataAccess\\Database constructor expects string, string\|null given\.$#' identifier: argument.type @@ -8598,6 +10032,30 @@ parameters: count: 1 path: lib/Model/DataAccess/ShapelessConcreteStruct.php + - + message: '#^Method Model\\DataAccess\\ShapelessConcreteStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/ShapelessConcreteStruct.php + + - + message: '#^Method Model\\DataAccess\\ShapelessConcreteStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/ShapelessConcreteStruct.php + + - + message: '#^Method Model\\DataAccess\\ShapelessConcreteStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/DataAccess/ShapelessConcreteStruct.php + + - + message: '#^Method Model\\EditLog\\EditLogSegmentStruct\:\:getSecsPerWord\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/EditLog/EditLogSegmentStruct.php + - message: '#^Loose comparison using \=\= between int and ''NULL'' will always evaluate to false\.$#' identifier: equal.alwaysFalse @@ -8616,6 +10074,24 @@ parameters: count: 1 path: lib/Model/Engines/EngineDAO.php + - + message: '#^Method Model\\Engines\\EngineDAO\:\:create\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Engines/EngineDAO.php + + - + message: '#^Method Model\\Engines\\EngineDAO\:\:disable\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Engines/EngineDAO.php + + - + message: '#^Method Model\\Engines\\EngineDAO\:\:sanitize\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Engines/EngineDAO.php + - message: '#^Negated boolean expression is always false\.$#' identifier: booleanNot.alwaysFalse @@ -8736,6 +10212,18 @@ parameters: count: 1 path: lib/Model/Engines/Structs/EngineStruct.php + - + message: '#^Method Model\\Engines\\Structs\\EngineStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Engines/Structs/EngineStruct.php + + - + message: '#^Method Model\\Engines\\Structs\\EngineStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Engines/Structs/EngineStruct.php + - message: '#^PHPDoc tag @return with type Model\\Engines\\Structs\\EngineStruct is not subtype of native type static\(Model\\Engines\\Structs\\EngineStruct\)\.$#' identifier: return.phpDocType @@ -8970,6 +10458,12 @@ parameters: count: 1 path: lib/Model/FeaturesBase/FeatureSet.php + - + message: '#^Method Model\\FeaturesBase\\FeatureSet\:\:merge\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FeaturesBase/FeatureSet.php + - message: '#^Method Model\\FeaturesBase\\FeatureSet\:\:runOnFeature\(\) has parameter \$args with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -8995,8 +10489,14 @@ parameters: path: lib/Model/FeaturesBase/FeatureSet.php - - message: '#^Method Model\\FeaturesBase\\PluginsLoader\:\:getValidCodes\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Model\\FeaturesBase\\PluginsLoader\:\:getInstance\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FeaturesBase/PluginsLoader.php + + - + message: '#^Method Model\\FeaturesBase\\PluginsLoader\:\:getValidCodes\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: lib/Model/FeaturesBase/PluginsLoader.php @@ -9036,12 +10536,36 @@ parameters: count: 1 path: lib/Model/Files/FileDao.php + - + message: '#^Method Model\\Files\\FileDao\:\:deleteFailedProjectFiles\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Files/FileDao.php + + - + message: '#^Method Model\\Files\\FileDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/FileDao.php + - message: '#^Method Model\\Files\\FileDao\:\:getByJobId\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Files/FileDao.php + - + message: '#^Method Model\\Files\\FileDao\:\:getByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FileDao.php + + - + message: '#^Method Model\\Files\\FileDao\:\:getByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FileDao.php + - message: '#^Method Model\\Files\\FileDao\:\:insertFilesJob\(\) has parameter \$id_file with no type specified\.$#' identifier: missingType.parameter @@ -9054,6 +10578,12 @@ parameters: count: 1 path: lib/Model/Files/FileDao.php + - + message: '#^Method Model\\Files\\FileDao\:\:isFileInProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Files/FileDao.php + - message: '#^Method Model\\Files\\FileDao\:\:updateField\(\) has parameter \$field with no type specified\.$#' identifier: missingType.parameter @@ -9072,6 +10602,12 @@ parameters: count: 1 path: lib/Model/Files/FileDao.php + - + message: '#^Method Model\\Files\\FileDao\:\:updateField\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/FileDao.php + - message: '#^Property Model\\Files\\FileDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9138,18 +10674,66 @@ parameters: count: 1 path: lib/Model/Files/FilesInfoUtility.php + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:getByFileId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FilesPartsDao.php + + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FilesPartsDao.php + + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:getBySegmentId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FilesPartsDao.php + + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:getFirstAndLastSegment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Files/FilesPartsDao.php + - message: '#^Method Model\\Files\\FilesPartsDao\:\:insert\(\) should return int but returns string\|false\.$#' identifier: return.type count: 1 path: lib/Model/Files/FilesPartsDao.php + - + message: '#^Method Model\\Files\\FilesPartsDao\:\:insert\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Files/FilesPartsDao.php + - message: '#^Method Model\\Files\\MetadataDao\:\:bulkInsert\(\) has parameter \$metadata with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Files/MetadataDao.php + - + message: '#^Method Model\\Files\\MetadataDao\:\:bulkInsert\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/MetadataDao.php + + - + message: '#^Method Model\\Files\\MetadataDao\:\:insert\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/MetadataDao.php + + - + message: '#^Method Model\\Files\\MetadataDao\:\:update\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Files/MetadataDao.php + - message: '#^Cannot call method format\(\) on DateTime\|false\.$#' identifier: method.nonObject @@ -9168,12 +10752,24 @@ parameters: count: 1 path: lib/Model/FilesStorage/AbstractFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\AbstractFilesStorage\:\:deleteHashFromUploadDir\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/AbstractFilesStorage.php + - message: '#^Method Model\\FilesStorage\\AbstractFilesStorage\:\:getFilesForJob\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/AbstractFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\AbstractFilesStorage\:\:getFilesForJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/FilesStorage/AbstractFilesStorage.php + - message: '#^Method Model\\FilesStorage\\AbstractFilesStorage\:\:pathinfo_fix\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9252,24 +10848,66 @@ parameters: count: 2 path: lib/Model/FilesStorage/FsFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:cacheZipArchive\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/FilesStorage/FsFilesStorage.php + - message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:getFastAnalysisData\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/FsFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:getFastAnalysisData\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + - message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:getHashesFromDir\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/FsFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:linkZipToProject\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:moveFileFromUploadSessionToQueuePath\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:moveFileFromUploadSessionToQueuePath\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:moveFromCacheToFileDir\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + - message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:storeFastAnalysisFile\(\) has parameter \$segments_metadata with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/FsFilesStorage.php + - + message: '#^Method Model\\FilesStorage\\FsFilesStorage\:\:storeFastAnalysisFile\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/FsFilesStorage.php + - message: '#^PHPDoc tag @return with type bool\|string is not subtype of native type string\|false\.$#' identifier: return.phpDocType @@ -9366,6 +11004,12 @@ parameters: count: 3 path: lib/Model/FilesStorage/S3FilesStorage.php + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:cacheZipArchive\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + - message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:createFileName\(\) has parameter \$file_info with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9414,6 +11058,12 @@ parameters: count: 1 path: lib/Model/FilesStorage/S3FilesStorage.php + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:getFastAnalysisData\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + - message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:getFastAnalysisFileName\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -9426,12 +11076,42 @@ parameters: count: 1 path: lib/Model/FilesStorage/S3FilesStorage.php + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:getHashesFromDir\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:getStaticS3Client\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:moveFileFromUploadSessionToQueuePath\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/FilesStorage/S3FilesStorage.php + + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:moveFileFromUploadSessionToQueuePath\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + - message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:storeFastAnalysisFile\(\) has parameter \$segments_metadata with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/FilesStorage/S3FilesStorage.php + - + message: '#^Method Model\\FilesStorage\\S3FilesStorage\:\:storeFastAnalysisFile\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/FilesStorage/S3FilesStorage.php + - message: '#^Offset ''basename'' might not exist on array\|string\.$#' identifier: offsetAccess.notFound @@ -9792,6 +11472,12 @@ parameters: count: 1 path: lib/Model/Filters/DTO/Yaml.php + - + message: '#^Method Model\\Filters\\DTO\\Yaml\:\:setInnerContentType\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/DTO/Yaml.php + - message: '#^Method Model\\Filters\\DTO\\Yaml\:\:setTranslateKeys\(\) has parameter \$translate_keys with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9822,6 +11508,24 @@ parameters: count: 1 path: lib/Model/Filters/DTO/Yaml.php + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:destroyQueryByUidAndNameCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + - message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -9834,6 +11538,24 @@ parameters: count: 1 path: lib/Model/Filters/FiltersConfigTemplateDao.php + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:hydrateTemplateStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Filters/FiltersConfigTemplateDao.php + - message: '#^Parameter \#1 \$uid of static method Model\\Filters\\FiltersConfigTemplateDao\:\:destroyQueryPaginated\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -9894,6 +11616,18 @@ parameters: count: 1 path: lib/Model/Filters/FiltersConfigTemplateStruct.php + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Filters/FiltersConfigTemplateStruct.php + + - + message: '#^Method Model\\Filters\\FiltersConfigTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Filters/FiltersConfigTemplateStruct.php + - message: '#^Parameter \#1 \$date of static method Utils\\Date\\DateTimeUtil\:\:formatIsoDate\(\) expects null, string\|null given\.$#' identifier: argument.type @@ -9984,18 +11718,120 @@ parameters: count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:createFromStruct\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:deleteOnMerge\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/JobDao.php + - message: '#^Method Model\\Jobs\\JobDao\:\:destroyCacheByProjectId\(\) has parameter \$project_id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:destroyCacheByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getAllModifiedSegmentsForPee\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getByIdAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getByIdProjectAndIdJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getBySegmentTranslation\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getFirstSegmentOfFilesInJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getOwnerUid\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getPeeStats\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getReviewedWordsCountGroupedByFileParts\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + - message: '#^Method Model\\Jobs\\JobDao\:\:getSegmentTranslationsCount\(\) has parameter \$idJobs with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:getSegmentTranslationsCount\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getSegmentsCount\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getSplitData\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:getSplitJobPreparedStatement\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/JobDao.php + - message: '#^Method Model\\Jobs\\JobDao\:\:getTimeToEdit\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -10008,6 +11844,18 @@ parameters: count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:getTimeToEdit\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:hasACustomPayableRate\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobDao.php + - message: '#^Method Model\\Jobs\\JobDao\:\:updateAllJobsStatusesByProjectId\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -10020,6 +11868,24 @@ parameters: count: 1 path: lib/Model/Jobs/JobDao.php + - + message: '#^Method Model\\Jobs\\JobDao\:\:updateJobWeightedPeeAndTTE\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:updateOwner\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Jobs/JobDao.php + + - + message: '#^Method Model\\Jobs\\JobDao\:\:updateStdWcAndTotalWc\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Jobs/JobDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$res JobStruct\)\: Unexpected token "\$res", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -10074,6 +11940,12 @@ parameters: count: 1 path: lib/Model/Jobs/JobStruct.php + - + message: '#^Method Model\\Jobs\\JobStruct\:\:getClientKeys\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + - message: '#^Method Model\\Jobs\\JobStruct\:\:getOpenThreadsCount\(\) has no return type specified\.$#' identifier: missingType.return @@ -10081,8 +11953,20 @@ parameters: path: lib/Model/Jobs/JobStruct.php - - message: '#^Method Model\\Jobs\\JobStruct\:\:getQualityOverall\(\) has parameter \$chunkReviews with no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Model\\Jobs\\JobStruct\:\:getOpenThreadsCount\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:getOutsource\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:getQualityOverall\(\) has parameter \$chunkReviews with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue count: 1 path: lib/Model/Jobs/JobStruct.php @@ -10092,12 +11976,48 @@ parameters: count: 1 path: lib/Model/Jobs/JobStruct.php + - + message: '#^Method Model\\Jobs\\JobStruct\:\:getTranslator\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + + - + message: '#^Method Model\\Jobs\\JobStruct\:\:setIsReview\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + - message: '#^Method Model\\Jobs\\JobStruct\:\:setSourcePage\(\) has parameter \$_revisionNumber with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Jobs/JobStruct.php + - + message: '#^Method Model\\Jobs\\JobStruct\:\:setSourcePage\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Jobs/JobStruct.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\JobDao\:\:getPeeStats\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -10164,6 +12084,12 @@ parameters: count: 1 path: lib/Model/Jobs/MetadataDao.php + - + message: '#^Method Model\\Jobs\\MetadataDao\:\:bulkSet\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/MetadataDao.php + - message: '#^Method Model\\Jobs\\MetadataDao\:\:delete\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -10182,12 +12108,24 @@ parameters: count: 1 path: lib/Model/Jobs/MetadataDao.php + - + message: '#^Method Model\\Jobs\\MetadataDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/MetadataDao.php + - message: '#^Method Model\\Jobs\\MetadataDao\:\:getSubfilteringCustomHandlers\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Jobs/MetadataDao.php + - + message: '#^Method Model\\Jobs\\MetadataDao\:\:set\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Jobs/MetadataDao.php + - message: '#^Unsafe access to private property Model\\Jobs\\MetadataDao\:\:\$__transactionStarted through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -10206,6 +12144,18 @@ parameters: count: 1 path: lib/Model/LQA/CategoryDao.php + - + message: '#^Method Model\\LQA\\CategoryDao\:\:createRecord\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/CategoryDao.php + + - + message: '#^Method Model\\LQA\\CategoryDao\:\:createRecord\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/CategoryDao.php + - message: '#^Method Model\\LQA\\CategoryDao\:\:extractOptions\(\) has parameter \$json with no type specified\.$#' identifier: missingType.parameter @@ -10236,6 +12186,12 @@ parameters: count: 1 path: lib/Model/LQA/CategoryDao.php + - + message: '#^Method Model\\LQA\\CategoryDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/CategoryDao.php + - message: '#^Method Model\\LQA\\CategoryDao\:\:findByIdModelAndIdParent\(\) has parameter \$id_model with no type specified\.$#' identifier: missingType.parameter @@ -10248,6 +12204,12 @@ parameters: count: 1 path: lib/Model/LQA/CategoryDao.php + - + message: '#^Method Model\\LQA\\CategoryDao\:\:findByIdModelAndIdParent\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/CategoryDao.php + - message: '#^Method Model\\LQA\\CategoryDao\:\:getCategoriesAndSeverities\(\) has parameter \$id_model with no type specified\.$#' identifier: missingType.parameter @@ -10260,6 +12222,18 @@ parameters: count: 1 path: lib/Model/LQA/CategoryDao.php + - + message: '#^Method Model\\LQA\\CategoryDao\:\:getCategoriesAndSeverities\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/CategoryDao.php + + - + message: '#^Method Model\\LQA\\CategoryDao\:\:getCategoriesByModel\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/CategoryDao.php + - message: '#^Offset ''id'' might not exist on array\{subcategories\: list\, label\?\: mixed, id\?\: int, options\?\: array, severities\?\: array\}\.$#' identifier: offsetAccess.notFound @@ -10314,6 +12288,12 @@ parameters: count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:_findChunkReviews\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:_findChunkReviewsStatement\(\) has parameter \$chunksArray with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10338,18 +12318,66 @@ parameters: count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:countTimeToEdit\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:createRecord\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:createRecord\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:createRecord\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:deleteByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:exists\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findByIdJob\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findByIdJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findByIdJobAndPasswordAndSourcePage\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findByProjectId\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10374,12 +12402,48 @@ parameters: count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:findLastReviewByJobIdPasswordAndSourcePage\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:getPenaltyPointsForChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:getReviewedWordsCountForSecondPass\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:isTOrR1OrR2\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^Method Model\\LQA\\ChunkReviewDao\:\:passFailCountsAtomicUpdate\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/LQA/ChunkReviewDao.php + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:updatePassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + + - + message: '#^Method Model\\LQA\\ChunkReviewDao\:\:updateReviewPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ChunkReviewDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$chunkReview ChunkReviewStruct\)\: Unexpected token "\$chunkReview", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -10434,6 +12498,18 @@ parameters: count: 1 path: lib/Model/LQA/EntryCommentDao.php + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:createComment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/LQA/EntryCommentDao.php + + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:createComment\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/EntryCommentDao.php + - message: '#^Method Model\\LQA\\EntryCommentDao\:\:fetchCommentsGroupedByIssueIds\(\) has parameter \$ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10446,18 +12522,42 @@ parameters: count: 1 path: lib/Model/LQA/EntryCommentDao.php + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:fetchCommentsGroupedByIssueIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/EntryCommentDao.php + - message: '#^Method Model\\LQA\\EntryCommentDao\:\:findById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/EntryCommentDao.php + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryCommentDao.php + - message: '#^Method Model\\LQA\\EntryCommentDao\:\:findByIssueId\(\) has parameter \$id_issue with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/EntryCommentDao.php + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:findByIssueId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryCommentDao.php + + - + message: '#^Method Model\\LQA\\EntryCommentDao\:\:move\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/EntryCommentDao.php + - message: '#^Property Model\\LQA\\EntryCommentStruct\:\:\$id \(int\|null\) does not accept string\|false\.$#' identifier: assign.propertyType @@ -10482,24 +12582,90 @@ parameters: count: 1 path: lib/Model/LQA/EntryDao.php + - + message: '#^Method Model\\LQA\\EntryDao\:\:createEntry\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:createEntry\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:deleteEntry\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:findAllByChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:findAllByTranslationVersion\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + - message: '#^Method Model\\LQA\\EntryDao\:\:findById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/EntryDao.php + - + message: '#^Method Model\\LQA\\EntryDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:findByIdSegmentAndSourcePage\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + - message: '#^Method Model\\LQA\\EntryDao\:\:getBySegmentIds\(\) has parameter \$ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/LQA/EntryDao.php + - + message: '#^Method Model\\LQA\\EntryDao\:\:getBySegmentIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:getIssuesGroupedByIdFilePart\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/EntryDao.php + + - + message: '#^Method Model\\LQA\\EntryDao\:\:modifyEntry\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/EntryDao.php + - message: '#^Method Model\\LQA\\EntryDao\:\:updateRepliesCount\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/LQA/EntryDao.php + - + message: '#^Method Model\\LQA\\EntryDao\:\:updateRepliesCount\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/EntryDao.php + - message: '#^Property Model\\LQA\\EntryStruct\:\:\$id \(int\|null\) does not accept string\|false\.$#' identifier: assign.propertyType @@ -10536,6 +12702,12 @@ parameters: count: 1 path: lib/Model/LQA/EntryStruct.php + - + message: '#^Method Model\\LQA\\EntryStruct\:\:setDefaults\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/EntryStruct.php + - message: '#^PHPDoc tag @return with type array\|null is not subtype of native type float\|null\.$#' identifier: return.phpDocType @@ -10632,12 +12804,30 @@ parameters: count: 1 path: lib/Model/LQA/ModelDao.php + - + message: '#^Method Model\\LQA\\ModelDao\:\:createRecord\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/LQA/ModelDao.php + + - + message: '#^Method Model\\LQA\\ModelDao\:\:createRecord\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ModelDao.php + - message: '#^Method Model\\LQA\\ModelDao\:\:decodePassOptions\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/LQA/ModelDao.php + - + message: '#^Method Model\\LQA\\ModelDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/ModelDao.php + - message: '#^Method Model\\LQA\\ModelDao\:\:insertCategory\(\) has parameter \$category with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10800,6 +12990,30 @@ parameters: count: 1 path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateDao\:\:remove\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateDao\:\:update\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + - message: '#^Parameter \#1 \$date of static method Utils\\Date\\DateTimeUtil\:\:formatIsoDate\(\) expects null, string given\.$#' identifier: argument.type @@ -10908,6 +13122,12 @@ parameters: count: 1 path: lib/Model/LQA/QAModelTemplate/QAModelTemplateStruct.php + - + message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 15 + path: lib/Model/LQA/QAModelTemplate/QAModelTemplateStruct.php + - message: '#^Method Model\\LQA\\QAModelTemplate\\QAModelTemplateStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10950,6 +13170,18 @@ parameters: count: 1 path: lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\:\:hydrateFromJSON\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 7 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + - message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10962,6 +13194,24 @@ parameters: count: 1 path: lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:destroyQueryByUidCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + - message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -10987,9 +13237,21 @@ parameters: path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php - - message: '#^PHPDoc tag @return with type Model\\MTQE\\PayableRate\\DTO\\MTQEPayableRateBreakdowns\|null is not subtype of native type Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\|null\.$#' - identifier: return.phpDocType - count: 1 + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:hydrateTemplateStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + + - + message: '#^Method Model\\MTQE\\PayableRate\\MTQEPayableRateTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + + - + message: '#^PHPDoc tag @return with type Model\\MTQE\\PayableRate\\DTO\\MTQEPayableRateBreakdowns\|null is not subtype of native type Model\\MTQE\\PayableRate\\MTQEPayableRateStruct\|null\.$#' + identifier: return.phpDocType + count: 1 path: lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php - @@ -11016,6 +13278,24 @@ parameters: count: 1 path: lib/Model/MTQE/Templates/DTO/MTQEWorkflowParams.php + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:destroyQueryByUidCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + - message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11040,6 +13320,18 @@ parameters: count: 1 path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:hydrateTemplateStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + - message: '#^Unsafe access to private property Model\\MTQE\\Templates\\MTQEWorkflowTemplateDao\:\:\$instance through static\:\:\.$#' identifier: staticClassAccess.privateProperty @@ -11058,6 +13350,18 @@ parameters: count: 1 path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateStruct.php + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateStruct.php + + - + message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/MTQE/Templates/MTQEWorkflowTemplateStruct.php + - message: '#^Method Model\\MTQE\\Templates\\MTQEWorkflowTemplateStruct\:\:hydrateParamsFromDataArray\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11094,6 +13398,12 @@ parameters: count: 1 path: lib/Model/Outsource/ConfirmationDao.php + - + message: '#^Method Model\\Outsource\\ConfirmationDao\:\:updatePassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Outsource/ConfirmationDao.php + - message: '#^Property Model\\Outsource\\ConfirmationDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11172,18 +13482,42 @@ parameters: count: 2 path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - + message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:create\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:destroyCacheByIdCustomer\(\) has parameter \$id_customer with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - + message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + + - + message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getByIdCustomer\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getByUserId\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - + message: '#^Method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getByUserId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/OwnerFeatures/OwnerFeatureDao.php + - message: '#^Parameter \#1 \$id of method Model\\OwnerFeatures\\OwnerFeatureDao\:\:getById\(\) expects int, string\|false given\.$#' identifier: argument.type @@ -11208,6 +13542,12 @@ parameters: count: 1 path: lib/Model/OwnerFeatures/OwnerFeatureStruct.php + - + message: '#^Method Model\\Pagination\\Pager\:\:_cacheSetConnection\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Pagination/Pager.php + - message: '#^Method Model\\Pagination\\Pager\:\:_deleteCacheByKey\(\) should return bool but returns int\.$#' identifier: return.type @@ -11232,6 +13572,12 @@ parameters: count: 1 path: lib/Model/Pagination/Pager.php + - + message: '#^Method Model\\Pagination\\Pager\:\:count\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Pagination/Pager.php + - message: '#^Method Model\\Pagination\\Pager\:\:format\(\) has parameter \$items with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11250,6 +13596,24 @@ parameters: count: 1 path: lib/Model/Pagination/Pager.php + - + message: '#^Method Model\\Pagination\\Pager\:\:getPagination\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Pagination/Pager.php + + - + message: '#^Method Model\\Pagination\\Pager\:\:getPagination\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Pagination/Pager.php + + - + message: '#^Method Model\\Pagination\\Pager\:\:getPagination\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Pagination/Pager.php + - message: '#^Parameter \#1 \$key of method Predis\\ClientInterface\:\:get\(\) expects string, int given\.$#' identifier: argument.type @@ -11286,6 +13650,12 @@ parameters: count: 1 path: lib/Model/Pagination/PaginationParameters.php + - + message: '#^Method Model\\Pagination\\PaginationParameters\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Pagination/PaginationParameters.php + - message: '#^Method Model\\Pagination\\PaginationParameters\:\:getBindParams\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11340,6 +13710,24 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateDao.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:assocModelToJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/PayableRates/CustomPayableRateDao.php + + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateDao.php + + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateDao.php + - message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11358,6 +13746,18 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateDao.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/PayableRates/CustomPayableRateDao.php + + - + message: '#^Method Model\\PayableRates\\CustomPayableRateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$result CustomPayableRateStruct\[\]\)\: Unexpected token "\$result", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -11424,12 +13824,24 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateStruct.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:getBreakdownsArray\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateStruct.php + - message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:getPayableRates\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/PayableRates/CustomPayableRateStruct.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/PayableRates/CustomPayableRateStruct.php + - message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11448,6 +13860,12 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateStruct.php + - + message: '#^Method Model\\PayableRates\\CustomPayableRateStruct\:\:validateLanguage\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/PayableRates/CustomPayableRateStruct.php + - message: '#^Parameter \#1 \$date of static method Utils\\Date\\DateTimeUtil\:\:formatIsoDate\(\) expects null, string given\.$#' identifier: argument.type @@ -11466,6 +13884,12 @@ parameters: count: 1 path: lib/Model/PayableRates/CustomPayableRateStruct.php + - + message: '#^Method Model\\ProjectCreation\\JobCreationService\:\:buildTmKeysJson\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/ProjectCreation/JobCreationService.php + - message: '#^Property Model\\ProjectCreation\\ProjectStructure\:\:\$instance_id \(int\) on left side of \?\? is not nullable\.$#' identifier: nullCoalesce.property @@ -11484,12 +13908,24 @@ parameters: count: 1 path: lib/Model/ProjectCreation/SegmentExtractor.php + - + message: '#^Method Model\\ProjectCreation\\SegmentExtractor\:\:persistXliffFileAttributes\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ProjectCreation/SegmentExtractor.php + - message: '#^Result of \|\| is always true\.$#' identifier: booleanOr.alwaysTrue count: 1 path: lib/Model/ProjectCreation/SegmentExtractor.php + - + message: '#^Method Model\\ProjectCreation\\SegmentStorageService\:\:linkSegmentIdsToRelatedData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ProjectCreation/SegmentStorageService.php + - message: '#^Parameter \#1 \$id_segment of method Model\\ProjectCreation\\SegmentStorageService\:\:insertOriginalDataRecord\(\) expects int, int\|string given\.$#' identifier: argument.type @@ -11502,12 +13938,24 @@ parameters: count: 1 path: lib/Model/ProjectCreation/SegmentStorageService.php + - + message: '#^Method Model\\ProjectCreation\\TmKeyService\:\:setPrivateTMKeys\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ProjectCreation/TmKeyService.php + - message: '#^Method Model\\Projects\\ManageModel\:\:_getProjects\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ManageModel.php + - + message: '#^Method Model\\Projects\\ManageModel\:\:_getProjects\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ManageModel.php + - message: '#^Method Model\\Projects\\ManageModel\:\:conditionsForProjectsQuery\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11556,6 +14004,12 @@ parameters: count: 1 path: lib/Model/Projects/ManageModel.php + - + message: '#^Method Model\\Projects\\ManageModel\:\:getProjectsNumber\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ManageModel.php + - message: '#^Parameter \#1 \$datetime of class DateTime constructor expects string, string\|null given\.$#' identifier: argument.type @@ -11574,6 +14028,24 @@ parameters: count: 1 path: lib/Model/Projects/MetadataDao.php + - + message: '#^Method Model\\Projects\\MetadataDao\:\:allByProjectId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/MetadataDao.php + + - + message: '#^Method Model\\Projects\\MetadataDao\:\:bulkSet\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Projects/MetadataDao.php + + - + message: '#^Method Model\\Projects\\MetadataDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Projects/MetadataDao.php + - message: '#^Method Model\\Projects\\MetadataDao\:\:getProjectStaticSubfilteringCustomHandlers\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11586,6 +14058,12 @@ parameters: count: 1 path: lib/Model/Projects/MetadataDao.php + - + message: '#^Method Model\\Projects\\MetadataDao\:\:set\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/MetadataDao.php + - message: '#^Using nullsafe property access "\?\-\>value" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' identifier: nullsafe.neverNull @@ -11604,12 +14082,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:assignToAssignee\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:assignToTeam\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:assignToTeam\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:changeProjectStatus\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -11622,6 +14112,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:deleteFailedProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:destroyCacheById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:destroyCacheByIdAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:destroyCacheForProjectData\(\) has parameter \$jid with no type specified\.$#' identifier: missingType.parameter @@ -11646,12 +14154,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:exists\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:findById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:findByIdAndPassword\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter @@ -11664,18 +14184,42 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findByIdAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:findByIdCustomer\(\) has parameter \$id_customer with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findByIdCustomer\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:findByTeamId\(\) has parameter \$filter with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:findByTeamId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getByIdList\(\) has parameter \$id_list with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -11688,6 +14232,12 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getByIdList\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getJobIds\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -11700,6 +14250,12 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getJobIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getPasswordsMap\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -11712,30 +14268,72 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getPasswordsMap\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getProjectAndJobData\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getProjectAndJobData\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getRemoteFileServiceName\(\) has parameter \$project_ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getRemoteFileServiceName\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:getTotalCountByTeamId\(\) has parameter \$filter with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:getTotalCountByTeamId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:isGDriveProject\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:isGDriveProject\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:massiveSelfAssignment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + + - + message: '#^Method Model\\Projects\\ProjectDao\:\:unassignProjects\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:uncompletedChunksByProjectId\(\) has parameter \$id_project with no type specified\.$#' identifier: missingType.parameter @@ -11766,12 +14364,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:updateAnalysisStatus\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Projects/ProjectDao.php + - message: '#^Method Model\\Projects\\ProjectDao\:\:updateField\(\) has parameter \$value with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectDao.php + - + message: '#^Method Model\\Projects\\ProjectDao\:\:updateField\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectDao.php + - message: '#^PHPDoc tag @return has invalid value \(ProjectStruct\[\]\|IDaoStruct\[\]\|\[\]\)\: Unexpected token "\[", expected type at offset 84 on line 4$#' identifier: phpDoc.parseError @@ -11904,6 +14514,24 @@ parameters: count: 1 path: lib/Model/Projects/ProjectStruct.php + - + message: '#^Method Model\\Projects\\ProjectStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectStruct.php + + - + message: '#^Method Model\\Projects\\ProjectStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectStruct.php + + - + message: '#^Method Model\\Projects\\ProjectStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectStruct.php + - message: '#^Parameter \#1 \$id of method Model\\Projects\\MetadataDao\:\:allByProjectId\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -11935,23 +14563,71 @@ parameters: path: lib/Model/Projects/ProjectStruct.php - - message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' - identifier: missingType.iterableValue + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:destroyDefaultTemplateCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException count: 1 path: lib/Model/Projects/ProjectTemplateDao.php - - message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getDefaultTemplate\(\) has parameter \$uid with no type specified\.$#' + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:destroyQueryByIdAndUserCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getDefaultTemplate\(\) has parameter \$uid with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Projects/ProjectTemplateDao.php + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getDefaultTemplate\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Projects/ProjectTemplateDao.php + - message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:getUserDefaultMt\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Projects/ProjectTemplateDao.php + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:markAsNotDefault\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:removeSubTemplateByIdAndUser\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Projects/ProjectTemplateDao.php + + - + message: '#^Method Model\\Projects\\ProjectTemplateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Projects/ProjectTemplateDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$result ProjectTemplateStruct\[\]\)\: Unexpected token "\$result", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -12156,6 +14832,12 @@ parameters: count: 1 path: lib/Model/Projects/ProjectTemplateStruct.php + - + message: '#^Method Model\\Projects\\ProjectTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 24 + path: lib/Model/Projects/ProjectTemplateStruct.php + - message: '#^Method Model\\Projects\\ProjectTemplateStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12276,6 +14958,12 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportDao.php + - + message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getAverages\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/QualityReport/QualityReportDao.php + - message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getIssuesBySegments\(\) has parameter \$segments_id with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12288,12 +14976,30 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportDao.php + - + message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getIssuesBySegments\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/QualityReport/QualityReportDao.php + + - + message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getReviseIssuesByChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/QualityReport/QualityReportDao.php + - message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getSegmentsForQualityReport\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/QualityReport/QualityReportDao.php + - + message: '#^Method Model\\QualityReport\\QualityReportDao\:\:getSegmentsForQualityReport\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/QualityReport/QualityReportDao.php + - message: '#^Cannot call method fullName\(\) on Model\\Users\\UserStruct\|null\.$#' identifier: method.nonObject @@ -12342,6 +15048,12 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportModel.php + - + message: '#^Method Model\\QualityReport\\QualityReportModel\:\:resetScore\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/QualityReport/QualityReportModel.php + - message: '#^Method Model\\QualityReport\\QualityReportModel\:\:structureNestComment\(\) has parameter \$record with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12426,6 +15138,12 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportSegmentModel.php + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_assignComments\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentModel.php + - message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_assignIssues\(\) has no return type specified\.$#' identifier: missingType.return @@ -12456,6 +15174,24 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportSegmentModel.php + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_commonSegmentAssignments\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentModel.php + + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_getChunkReviews\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentModel.php + + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:_populateLastTranslationAndRevision\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentModel.php + - message: '#^Method Model\\QualityReport\\QualityReportSegmentModel\:\:getSegmentsForQR\(\) has parameter \$segment_ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12534,6 +15270,12 @@ parameters: count: 1 path: lib/Model/QualityReport/QualityReportSegmentStruct.php + - + message: '#^Method Model\\QualityReport\\QualityReportSegmentStruct\:\:getSecsPerWord\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/QualityReport/QualityReportSegmentStruct.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\MetadataDao\:\:getSubfilteringCustomHandlers\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -12594,6 +15336,36 @@ parameters: count: 1 path: lib/Model/RemoteFiles/RemoteFileDao.php + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:getByFileAndJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:getByFileId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:getByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:getOriginalsByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + + - + message: '#^Method Model\\RemoteFiles\\RemoteFileDao\:\:jobHasRemoteFiles\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/RemoteFiles/RemoteFileDao.php + - message: '#^Method Model\\ReviseFeedback\\FeedbackDAO\:\:getFeedback\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -12612,18 +15384,66 @@ parameters: count: 1 path: lib/Model/ReviseFeedback/FeedbackDAO.php + - + message: '#^Method Model\\ReviseFeedback\\FeedbackDAO\:\:getFeedback\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/ReviseFeedback/FeedbackDAO.php + + - + message: '#^Method Model\\ReviseFeedback\\FeedbackDAO\:\:insertOrUpdate\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ReviseFeedback/FeedbackDAO.php + + - + message: '#^Method Model\\ReviseFeedback\\FeedbackDAO\:\:updateFeedbackPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/ReviseFeedback/FeedbackDAO.php + - message: '#^Expression on left side of \?\? is not nullable\.$#' identifier: nullCoalesce.expr count: 1 path: lib/Model/Search/MySQLReplaceEventDAO.php + - + message: '#^Method Model\\Search\\MySQLReplaceEventDAO\:\:getEvents\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Search/MySQLReplaceEventDAO.php + + - + message: '#^Method Model\\Search\\MySQLReplaceEventDAO\:\:save\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Search/MySQLReplaceEventDAO.php + + - + message: '#^Method Model\\Search\\MySQLReplaceEventIndexDAO\:\:getActualIndex\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Search/MySQLReplaceEventIndexDAO.php + + - + message: '#^Method Model\\Search\\MySQLReplaceEventIndexDAO\:\:save\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Search/MySQLReplaceEventIndexDAO.php + - message: '#^Call to an undefined method Predis\\Client\:\:hgetAll\(\)\.$#' identifier: method.notFound count: 1 path: lib/Model/Search/RedisReplaceEventDAO.php + - + message: '#^Method Model\\Search\\RedisReplaceEventDAO\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Search/RedisReplaceEventDAO.php + - message: '#^Parameter \#2 \$field of method Predis\\ClientInterface\:\:hset\(\) expects string, int given\.$#' identifier: argument.type @@ -12642,6 +15462,12 @@ parameters: count: 1 path: lib/Model/Search/RedisReplaceEventDAO.php + - + message: '#^Method Model\\Search\\RedisReplaceEventIndexDAO\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Search/RedisReplaceEventIndexDAO.php + - message: '#^PHPDoc tag @return with type mixed is not subtype of native type int\.$#' identifier: return.phpDocType @@ -12660,6 +15486,12 @@ parameters: count: 1 path: lib/Model/Search/SearchModel.php + - + message: '#^Method Model\\Search\\SearchModel\:\:_loadParams\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Search/SearchModel.php + - message: '#^Method Model\\Search\\SearchModel\:\:find\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12756,6 +15588,24 @@ parameters: count: 1 path: lib/Model/Segments/ContextStruct.php + - + message: '#^Method Model\\Segments\\ContextStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/ContextStruct.php + + - + message: '#^Method Model\\Segments\\ContextStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/ContextStruct.php + + - + message: '#^Method Model\\Segments\\ContextStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/ContextStruct.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, array\|string given\.$#' identifier: argument.type @@ -12780,6 +15630,30 @@ parameters: count: 2 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:countByFile\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getByChunkId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getByChunkIdAndSegmentId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getContextAndSegmentByIDs\(\) has parameter \$id_list with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12792,18 +15666,48 @@ parameters: count: 1 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getNextSegment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getPaginationSegments\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getPaginationSegments\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsDownload\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsDownload\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsForAnalysisFromIdJobAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentDao.php + + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsForAnalysisFromIdProjectAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsForQr\(\) has parameter \$job_id with no type specified\.$#' identifier: missingType.parameter @@ -12822,6 +15726,12 @@ parameters: count: 1 path: lib/Model/Segments/SegmentDao.php + - + message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsForQr\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Segments/SegmentDao.php + - message: '#^Method Model\\Segments\\SegmentDao\:\:getSegmentsIdForQR\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12864,12 +15774,36 @@ parameters: count: 1 path: lib/Model/Segments/SegmentMetadataDao.php + - + message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:get\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentMetadataDao.php + + - + message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:getAll\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentMetadataDao.php + - message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:getBySegmentIds\(\) has parameter \$ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentMetadataDao.php + - + message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:getBySegmentIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentMetadataDao.php + + - + message: '#^Method Model\\Segments\\SegmentMetadataDao\:\:save\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Segments/SegmentMetadataDao.php + - message: '#^Method Model\\Segments\\SegmentNoteDao\:\:_buildResult\(\) has no return type specified\.$#' identifier: missingType.return @@ -12888,18 +15822,54 @@ parameters: count: 1 path: lib/Model/Segments/SegmentNoteDao.php + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getAggregatedBySegmentIdInInterval\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Segments/SegmentNoteDao.php + - message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getAllAggregatedBySegmentIdInInterval\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentNoteDao.php + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getAllAggregatedBySegmentIdInInterval\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Segments/SegmentNoteDao.php + + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getBySegmentId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentNoteDao.php + - message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getBySegmentIds\(\) has parameter \$ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentNoteDao.php + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getBySegmentIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentNoteDao.php + + - + message: '#^Method Model\\Segments\\SegmentNoteDao\:\:getJsonNotesByRange\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentNoteDao.php + + - + message: '#^Method Model\\Segments\\SegmentOriginalDataDao\:\:getBySegmentId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentOriginalDataDao.php + - message: '#^Method Model\\Segments\\SegmentOriginalDataDao\:\:getSegmentDataRefMap\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12912,6 +15882,12 @@ parameters: count: 1 path: lib/Model/Segments/SegmentOriginalDataDao.php + - + message: '#^Method Model\\Segments\\SegmentOriginalDataDao\:\:insertRecord\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Segments/SegmentOriginalDataDao.php + - message: '#^Parameter \#1 \$string of function trim expects string, string\|null given\.$#' identifier: argument.type @@ -12930,12 +15906,24 @@ parameters: count: 1 path: lib/Model/Segments/SegmentOriginalDataStruct.php + - + message: '#^Method Model\\Segments\\SegmentOriginalDataStruct\:\:getMap\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentOriginalDataStruct.php + - message: '#^Method Model\\Segments\\SegmentOriginalDataStruct\:\:setMap\(\) has parameter \$map with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Segments/SegmentOriginalDataStruct.php + - + message: '#^Method Model\\Segments\\SegmentOriginalDataStruct\:\:setMap\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentOriginalDataStruct.php + - message: '#^Property Model\\Segments\\SegmentOriginalDataStruct\:\:\$decoded_map type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -12954,12 +15942,48 @@ parameters: count: 1 path: lib/Model/Segments/SegmentStruct.php + - + message: '#^Method Model\\Segments\\SegmentStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentStruct.php + + - + message: '#^Method Model\\Segments\\SegmentStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentStruct.php + + - + message: '#^Method Model\\Segments\\SegmentStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentStruct.php + - message: '#^Class Model\\Segments\\SegmentUIStruct implements generic interface ArrayAccess but does not specify its types\: TKey, TValue$#' identifier: missingType.generics count: 1 path: lib/Model/Segments/SegmentUIStruct.php + - + message: '#^Method Model\\Segments\\SegmentUIStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentUIStruct.php + + - + message: '#^Method Model\\Segments\\SegmentUIStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentUIStruct.php + + - + message: '#^Method Model\\Segments\\SegmentUIStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Segments/SegmentUIStruct.php + - message: '#^Property Model\\Segments\\SegmentUIStruct\:\:\$data_ref_map type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13002,24 +16026,54 @@ parameters: count: 1 path: lib/Model/TMSService/TMSServiceDao.php + - + message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getMTForTMXExport\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/TMSService/TMSServiceDao.php + - message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getTMForTMXExport\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/TMSService/TMSServiceDao.php + - + message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getTMForTMXExport\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/TMSService/TMSServiceDao.php + - message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getTranslationsForTMXExport\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/TMSService/TMSServiceDao.php + - + message: '#^Method Model\\TMSService\\TMSServiceDao\:\:getTranslationsForTMXExport\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/TMSService/TMSServiceDao.php + - message: '#^Method Model\\Teams\\InvitedUser\:\:completeTeamSignUp\(\) has parameter \$invitation with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Teams/InvitedUser.php + - + message: '#^Method Model\\Teams\\InvitedUser\:\:completeTeamSignUp\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Teams/InvitedUser.php + + - + message: '#^Method Model\\Teams\\InvitedUser\:\:hasPendingInvitations\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/InvitedUser.php + - message: '#^Parameter \#1 \$struct of class Model\\Teams\\TeamModel constructor expects Model\\Teams\\TeamStruct, Model\\Teams\\TeamStruct\|null given\.$#' identifier: argument.type @@ -13044,6 +16098,12 @@ parameters: count: 1 path: lib/Model/Teams/MembershipDao.php + - + message: '#^Method Model\\Teams\\MembershipDao\:\:deleteUserFromTeam\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Teams/MembershipDao.php + - message: '#^Method Model\\Teams\\MembershipDao\:\:findById\(\) has no return type specified\.$#' identifier: missingType.return @@ -13056,6 +16116,12 @@ parameters: count: 1 path: lib/Model/Teams/MembershipDao.php + - + message: '#^Method Model\\Teams\\MembershipDao\:\:findById\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Teams/MembershipDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$members MembershipStruct\[\]\)\: Unexpected token "\$members", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -13134,18 +16200,54 @@ parameters: count: 1 path: lib/Model/Teams/PendingInvitations.php + - + message: '#^Method Model\\Teams\\TeamDao\:\:createPersonalTeam\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamDao.php + - message: '#^Method Model\\Teams\\TeamDao\:\:createUserTeam\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Teams/TeamDao.php + - + message: '#^Method Model\\Teams\\TeamDao\:\:createUserTeam\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamDao.php + + - + message: '#^Method Model\\Teams\\TeamDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Teams/TeamDao.php + + - + message: '#^Method Model\\Teams\\TeamDao\:\:deleteTeam\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Teams/TeamDao.php + + - + message: '#^Method Model\\Teams\\TeamDao\:\:destroyCacheUserCreatedTeams\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamDao.php + - message: '#^Method Model\\Teams\\TeamDao\:\:findById\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Teams/TeamDao.php + - + message: '#^Method Model\\Teams\\TeamDao\:\:updateTeamName\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Teams/TeamDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$res TeamStruct\)\: Unexpected token "\$res", expected type at offset 9 on line 1$#' identifier: phpDoc.parseError @@ -13194,18 +16296,60 @@ parameters: count: 1 path: lib/Model/Teams/TeamModel.php + - + message: '#^Method Model\\Teams\\TeamModel\:\:_checkAddMembersToPersonalTeam\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + + - + message: '#^Method Model\\Teams\\TeamModel\:\:_checkPersonalUnique\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + + - + message: '#^Method Model\\Teams\\TeamModel\:\:_checkType\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + + - + message: '#^Method Model\\Teams\\TeamModel\:\:_createTeamWithMatecatUsers\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + + - + message: '#^Method Model\\Teams\\TeamModel\:\:_createTeamWithMatecatUsers\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Teams/TeamModel.php + - message: '#^Method Model\\Teams\\TeamModel\:\:_getInvitedEmails\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Teams/TeamModel.php + - + message: '#^Method Model\\Teams\\TeamModel\:\:_getInvitedEmails\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + - message: '#^Method Model\\Teams\\TeamModel\:\:_getRemovedMembersEmailList\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Teams/TeamModel.php + - + message: '#^Method Model\\Teams\\TeamModel\:\:_setPendingStatuses\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Teams/TeamModel.php + - message: '#^Method Model\\Teams\\TeamModel\:\:addMemberEmails\(\) has parameter \$emails with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13446,6 +16590,12 @@ parameters: count: 1 path: lib/Model/TmKeyManagement/UserKeysModel.php + - + message: '#^Method Model\\TmKeyManagement\\UserKeysModel\:\:getKeys\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/TmKeyManagement/UserKeysModel.php + - message: '#^PHPDoc tag @var has invalid value \(\$_client_tm_key TmKeyStruct\)\: Unexpected token "\$_client_tm_key", expected type at offset 24 on line 2$#' identifier: phpDoc.parseError @@ -13488,6 +16638,18 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:addTranslation\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Translations/SegmentTranslationDao.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:findBySegmentAndJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getAllSegmentsByIdListAndJobId\(\) has parameter \$id_list with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13500,6 +16662,24 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getAllSegmentsByIdListAndJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationDao.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getByFile\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translations/SegmentTranslationDao.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getByJobId\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getLast10TranslatedSegmentIDsInLastHour\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13512,6 +16692,12 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getMaxSegmentIdsFromJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getUnchangeableStatus\(\) has parameter \$segments_ids with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13536,6 +16722,12 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:getWordsPerSecond\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:propagateTranslation\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13548,12 +16740,24 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:rebuildFromReplaceEvents\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:setAnalysisValue\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:setAnalysisValue\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:updateFirstTimeOpenedContribution\(\) has parameter \$data with no type specified\.$#' identifier: missingType.parameter @@ -13572,6 +16776,12 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:updateLastTranslationDateByIdList\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:updateSuggestionsArray\(\) has parameter \$id_segment with no type specified\.$#' identifier: missingType.parameter @@ -13584,6 +16794,12 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationDao.php + - + message: '#^Method Model\\Translations\\SegmentTranslationDao\:\:updateSuggestionsArray\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Translations/SegmentTranslationDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$result SegmentTranslationStruct\[\]\)\: Unexpected token "\$result", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -13626,6 +16842,24 @@ parameters: count: 1 path: lib/Model/Translations/SegmentTranslationStruct.php + - + message: '#^Method Model\\Translations\\SegmentTranslationStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationStruct.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationStruct.php + + - + message: '#^Method Model\\Translations\\SegmentTranslationStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/SegmentTranslationStruct.php + - message: '#^PHPDoc tag @return with type array\\|null is not subtype of native type Model\\Jobs\\JobStruct\|null\.$#' identifier: return.phpDocType @@ -13644,6 +16878,12 @@ parameters: count: 1 path: lib/Model/Translations/WarningDao.php + - + message: '#^Method Model\\Translations\\WarningDao\:\:getErrorsByChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Translations/WarningDao.php + - message: '#^Method Model\\Translations\\WarningDao\:\:getWarningsByJobIdAndPassword\(\) has parameter \$jid with no type specified\.$#' identifier: missingType.parameter @@ -13662,6 +16902,12 @@ parameters: count: 1 path: lib/Model/Translations/WarningDao.php + - + message: '#^Method Model\\Translations\\WarningDao\:\:getWarningsByJobIdAndPassword\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/WarningDao.php + - message: '#^Method Model\\Translations\\WarningDao\:\:getWarningsByProjectIds\(\) has parameter \$projectIds with no type specified\.$#' identifier: missingType.parameter @@ -13674,6 +16920,12 @@ parameters: count: 1 path: lib/Model/Translations/WarningDao.php + - + message: '#^Method Model\\Translations\\WarningDao\:\:getWarningsByProjectIds\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translations/WarningDao.php + - message: '#^Property Model\\TranslationsSplit\\SegmentSplitStruct\:\:\$source_chunk_lengths type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -13698,6 +16950,12 @@ parameters: count: 1 path: lib/Model/TranslationsSplit/SplitDAO.php + - + message: '#^Method Model\\TranslationsSplit\\SplitDAO\:\:_validatePrimaryKey\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' + identifier: throws.unusedType + count: 1 + path: lib/Model/TranslationsSplit/SplitDAO.php + - message: '#^Property Model\\TranslationsSplit\\SegmentSplitStruct\:\:\$source_chunk_lengths \(array\|string\) does not accept string\|false\|null\.$#' identifier: assign.propertyType @@ -13740,6 +16998,12 @@ parameters: count: 1 path: lib/Model/Translators/TranslatorsModel.php + - + message: '#^Method Model\\Translators\\TranslatorsModel\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Translators/TranslatorsModel.php + - message: '#^Method Model\\Translators\\TranslatorsModel\:\:getTranslator\(\) has no return type specified\.$#' identifier: missingType.return @@ -13752,6 +17016,24 @@ parameters: count: 1 path: lib/Model/Translators/TranslatorsModel.php + - + message: '#^Method Model\\Translators\\TranslatorsModel\:\:saveProfile\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Translators/TranslatorsModel.php + + - + message: '#^Method Model\\Translators\\TranslatorsModel\:\:setDeliveryDate\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Translators/TranslatorsModel.php + + - + message: '#^Method Model\\Translators\\TranslatorsModel\:\:update\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/Translators/TranslatorsModel.php + - message: '#^PHPDoc tag @param for parameter \$job_password with type mixed is not subtype of native type string\.$#' identifier: parameter.phpDocType @@ -13878,6 +17160,12 @@ parameters: count: 1 path: lib/Model/Users/Authentication/OAuthSignInModel.php + - + message: '#^Method Model\\Users\\Authentication\\OAuthSignInModel\:\:_createNewUser\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/Authentication/OAuthSignInModel.php + - message: '#^Parameter \#1 \$email of method Model\\Users\\UserDao\:\:getByEmail\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -13908,6 +17196,12 @@ parameters: count: 1 path: lib/Model/Users/Authentication/PasswordResetModel.php + - + message: '#^Method Model\\Users\\Authentication\\PasswordResetModel\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/Authentication/PasswordResetModel.php + - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' identifier: argument.type @@ -13938,6 +17232,12 @@ parameters: count: 1 path: lib/Model/Users/Authentication/SignupModel.php + - + message: '#^Method Model\\Users\\Authentication\\SignupModel\:\:processSignup\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/Authentication/SignupModel.php + - message: '#^Parameter \#1 \$datetime of function strtotime expects string, string\|null given\.$#' identifier: argument.type @@ -13998,6 +17298,12 @@ parameters: count: 1 path: lib/Model/Users/MetadataDao.php + - + message: '#^Method Model\\Users\\MetadataDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Users/MetadataDao.php + - message: '#^Method Model\\Users\\MetadataDao\:\:destroyCacheKey\(\) has parameter \$key with no type specified\.$#' identifier: missingType.parameter @@ -14034,6 +17340,12 @@ parameters: count: 1 path: lib/Model/Users/MetadataDao.php + - + message: '#^Method Model\\Users\\MetadataDao\:\:getAllByUid\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Users/MetadataDao.php + - message: '#^Method Model\\Users\\MetadataDao\:\:getAllByUidList\(\) has parameter \$UIDs with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14052,6 +17364,12 @@ parameters: count: 1 path: lib/Model/Users/MetadataDao.php + - + message: '#^Method Model\\Users\\MetadataDao\:\:set\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Users/MetadataDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$result MetadataStruct\)\: Unexpected token "\$result", expected type at offset 9 on line 1$#' identifier: phpDoc.parseError @@ -14124,6 +17442,12 @@ parameters: count: 1 path: lib/Model/Users/RedeemableProject.php + - + message: '#^Method Model\\Users\\RedeemableProject\:\:tryToRedeem\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/RedeemableProject.php + - message: '#^Parameter \#1 \$project of method Model\\Jobs\\JobDao\:\:updateOwner\(\) expects Model\\Projects\\ProjectStruct, Model\\Projects\\ProjectStruct\|null given\.$#' identifier: argument.type @@ -14154,12 +17478,30 @@ parameters: count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:createUser\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Users/UserDao.php + + - + message: '#^Method Model\\Users\\UserDao\:\:delete\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Users/UserDao.php + - message: '#^Method Model\\Users\\UserDao\:\:destroyCacheByEmail\(\) has parameter \$email with no type specified\.$#' identifier: missingType.parameter count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:destroyCacheByEmail\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/UserDao.php + - message: '#^Method Model\\Users\\UserDao\:\:destroyCacheByUid\(\) has parameter \$uid with no type specified\.$#' identifier: missingType.parameter @@ -14172,6 +17514,18 @@ parameters: count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:getByConfirmationToken\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Users/UserDao.php + + - + message: '#^Method Model\\Users\\UserDao\:\:getByEmails\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Users/UserDao.php + - message: '#^Method Model\\Users\\UserDao\:\:getByUid\(\) has parameter \$id with no type specified\.$#' identifier: missingType.parameter @@ -14184,12 +17538,24 @@ parameters: count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:getProjectOwner\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Users/UserDao.php + - message: '#^Method Model\\Users\\UserDao\:\:updateUser\(\) should return Model\\Users\\UserStruct but returns Model\\Users\\UserStruct\|null\.$#' identifier: return.type count: 1 path: lib/Model/Users/UserDao.php + - + message: '#^Method Model\\Users\\UserDao\:\:updateUser\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Users/UserDao.php + - message: '#^PHPDoc tag @var has invalid value \(\$__resultSet UserStruct\[\]\)\: Unexpected token "\$__resultSet", expected type at offset 20 on line 2$#' identifier: phpDoc.parseError @@ -14280,6 +17646,24 @@ parameters: count: 1 path: lib/Model/Warnings/GlobalWarningStruct.php + - + message: '#^Method Model\\Warnings\\GlobalWarningStruct\:\:offsetGet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Warnings/GlobalWarningStruct.php + + - + message: '#^Method Model\\Warnings\\GlobalWarningStruct\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Warnings/GlobalWarningStruct.php + + - + message: '#^Method Model\\Warnings\\GlobalWarningStruct\:\:offsetUnset\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Warnings/GlobalWarningStruct.php + - message: '#^Cannot call method getApproved2RawWords\(\) on Model\\WordCount\\WordCountStruct\|null\.$#' identifier: method.nonObject @@ -14370,6 +17754,18 @@ parameters: count: 1 path: lib/Model/WordCount/CounterModel.php + - + message: '#^Method Model\\WordCount\\CounterModel\:\:_verifyStatus\(\) throws checked exception BadMethodCallException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/WordCount/CounterModel.php + + - + message: '#^Method Model\\WordCount\\CounterModel\:\:getUpdatedValues\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/WordCount/CounterModel.php + - message: '#^Method Model\\WordCount\\CounterModel\:\:methodNameForStatusCall\(\) has parameter \$name with no type specified\.$#' identifier: missingType.parameter @@ -14388,6 +17784,12 @@ parameters: count: 1 path: lib/Model/WordCount/WordCountStruct.php + - + message: '#^Method Model\\WordCount\\WordCountStruct\:\:loadFromJob\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/WordCount/WordCountStruct.php + - message: '#^Method Model\\WordCount\\WordCountStruct\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14406,12 +17808,24 @@ parameters: count: 1 path: lib/Model/WordCount/WordCounterDao.php + - + message: '#^Method Model\\WordCount\\WordCounterDao\:\:getStatsForJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 5 + path: lib/Model/WordCount/WordCounterDao.php + - message: '#^Method Model\\WordCount\\WordCounterDao\:\:initializeWordCount\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Model/WordCount/WordCounterDao.php + - + message: '#^Method Model\\WordCount\\WordCounterDao\:\:updateWordCount\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/WordCount/WordCounterDao.php + - message: '#^Cannot assign new offset to string\.$#' identifier: offsetAssign.dimType @@ -14460,12 +17874,36 @@ parameters: count: 1 path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - + message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setAnalysis\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/DTO/AbstractXliffRule.php + + - + message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setEditor\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Xliff/DTO/AbstractXliffRule.php + + - + message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setMatchCategory\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setStates\(\) has parameter \$states with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - + message: '#^Method Model\\Xliff\\DTO\\AbstractXliffRule\:\:setStates\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - message: '#^Parameter \#1 \.\.\.\$arrays of function array_merge expects array, string given\.$#' identifier: argument.type @@ -14502,6 +17940,18 @@ parameters: count: 1 path: lib/Model/Xliff/DTO/AbstractXliffRule.php + - + message: '#^Method Model\\Xliff\\DTO\\DefaultRule\:\:isTranslated\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Model/Xliff/DTO/DefaultRule.php + + - + message: '#^Method Model\\Xliff\\DTO\\DefaultRule\:\:setAnalysis\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/DTO/DefaultRule.php + - message: '#^Property Model\\Xliff\\DTO\\DefaultRule\:\:\$_STATES type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14556,6 +18006,12 @@ parameters: count: 1 path: lib/Model/Xliff/DTO/XliffRulesModel.php + - + message: '#^Method Model\\Xliff\\DTO\\XliffRulesModel\:\:getRulesForVersion\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/DTO/XliffRulesModel.php + - message: '#^Method Model\\Xliff\\DTO\\XliffRulesModel\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14580,6 +18036,24 @@ parameters: count: 1 path: lib/Model/Xliff/DTO/XliffRulesModel.php + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:destroyQueryByIdAndUidCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:destroyQueryByIdCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:destroyQueryByUidCache\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + - message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:getAllPaginated\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14604,6 +18078,24 @@ parameters: count: 1 path: lib/Model/Xliff/XliffConfigTemplateDao.php + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:hydrateTemplateStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:remove\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateDao\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Model/Xliff/XliffConfigTemplateDao.php + - message: '#^Property Model\\Xliff\\XliffConfigTemplateStruct\:\:\$id \(int\) does not accept string\|false\.$#' identifier: assign.propertyType @@ -14622,6 +18114,12 @@ parameters: count: 1 path: lib/Model/Xliff/XliffConfigTemplateDao.php + - + message: '#^Method Model\\Xliff\\XliffConfigTemplateStruct\:\:hydrateFromJSON\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Model/Xliff/XliffConfigTemplateStruct.php + - message: '#^Method Model\\Xliff\\XliffConfigTemplateStruct\:\:hydrateRulesFromDataArray\(\) has parameter \$rules with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14664,6 +18162,12 @@ parameters: count: 1 path: lib/Plugins/Features/AbstractRevisionFeature.php + - + message: '#^Method Plugins\\Features\\AbstractRevisionFeature\:\:alter_chunk_review_struct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/AbstractRevisionFeature.php + - message: '#^Method Plugins\\Features\\AbstractRevisionFeature\:\:createQaChunkReviewRecords\(\) has parameter \$options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -14706,6 +18210,12 @@ parameters: count: 1 path: lib/Plugins/Features/AbstractRevisionFeature.php + - + message: '#^Method Plugins\\Features\\AbstractRevisionFeature\:\:postProjectCreate\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/AbstractRevisionFeature.php + - message: '#^Method Plugins\\Features\\AbstractRevisionFeature\:\:project_completion_event_saved\(\) has parameter \$completion_event_id with no type specified\.$#' identifier: missingType.parameter @@ -14892,6 +18402,12 @@ parameters: count: 1 path: lib/Plugins/Features/ProjectCompletion.php + - + message: '#^Method Plugins\\Features\\ProjectCompletion\:\:postAddSegmentTranslation\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/ProjectCompletion.php + - message: '#^Parameter \#1 \$id_job of method Model\\ChunksCompletion\\ChunkCompletionEventDao\:\:updatePassword\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -14964,6 +18480,12 @@ parameters: count: 1 path: lib/Plugins/Features/ProjectCompletion/Decorator/CatDecorator.php + - + message: '#^Method Plugins\\Features\\ProjectCompletion\\Model\\EventModel\:\:save\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ProjectCompletion/Model/EventModel.php + - message: '#^Parameter \#1 \$project of method Model\\FeaturesBase\\FeatureSet\:\:loadForProject\(\) expects Model\\Projects\\ProjectStruct, Model\\Projects\\ProjectStruct\|null given\.$#' identifier: argument.type @@ -14988,6 +18510,12 @@ parameters: count: 1 path: lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php + - + message: '#^Method Plugins\\Features\\ProjectCompletion\\Model\\ProjectCompletionStatusModel\:\:getStatus\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php + - message: '#^Method Plugins\\Features\\ProjectCompletion\\Model\\ProjectCompletionStatusModel\:\:populateStatus\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15012,12 +18540,24 @@ parameters: count: 1 path: lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\BatchReviewProcessor\:\:getOrCreateChunkReviews\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + - message: '#^Method Plugins\\Features\\ReviewExtended\\BatchReviewProcessor\:\:setPreparedEvents\(\) has parameter \$prepared_events with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\BatchReviewProcessor\:\:updateJobWordCounter\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + - message: '#^PHPDoc tag @var for property Plugins\\Features\\ReviewExtended\\BatchReviewProcessor\:\:\$chunk with type mixed is not subtype of native type Model\\Jobs\\JobStruct\.$#' identifier: property.phpDocType @@ -15078,6 +18618,12 @@ parameters: count: 1 path: lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\ChunkReviewModel\:\:recountAndUpdatePassFailResult\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php + - message: '#^Parameter \#1 \$chunkReviewID of method Model\\LQA\\ChunkReviewDao\:\:passFailCountsAtomicUpdate\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -15186,6 +18732,12 @@ parameters: count: 1 path: lib/Plugins/Features/ReviewExtended/ReviewUtils.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\ReviewUtils\:\:validRevisionNumbers\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ReviewExtended/ReviewUtils.php + - message: '#^Unreachable statement \- code above always terminates\.$#' identifier: deadCode.unreachable @@ -15336,6 +18888,18 @@ parameters: count: 1 path: lib/Plugins/Features/ReviewExtended/TranslationIssueModel.php + - + message: '#^Method Plugins\\Features\\ReviewExtended\\TranslationIssueModel\:\:__construct\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/ReviewExtended/TranslationIssueModel.php + + - + message: '#^Method Plugins\\Features\\ReviewExtended\\TranslationIssueModel\:\:saveDiff\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/ReviewExtended/TranslationIssueModel.php + - message: '#^Method Plugins\\Features\\ReviewExtended\\TranslationIssueModel\:\:setDiff\(\) has parameter \$diff with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15450,12 +19014,30 @@ parameters: count: 1 path: lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + - + message: '#^Method Plugins\\Features\\SegmentFilter\\Model\\SegmentFilterDao\:\:__getLimit\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + - message: '#^Method Plugins\\Features\\SegmentFilter\\Model\\SegmentFilterDao\:\:_buildResult\(\) has parameter \$array_result with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + - + message: '#^Method Plugins\\Features\\SegmentFilter\\Model\\SegmentFilterDao\:\:getSqlForRegularIntervals\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEvent\:\:__construct\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEvent.php + - message: '#^Parameter \#1 \$id_job of method Model\\Segments\\SegmentDao\:\:getByChunkIdAndSegmentId\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -15486,6 +19068,12 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getAllFinalRevisionsForSegment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getLatestEventForSegment\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -15498,6 +19086,18 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getLatestEventForSegment\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getLatestEventsInSegmentInterval\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:getTteForSegments\(\) has parameter \$id_segment_list with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15516,6 +19116,12 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - + message: '#^Method Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:unsetFinalRevisionFlag\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + - message: '#^Property Plugins\\Features\\TranslationEvents\\Model\\TranslationEventDao\:\:\$auto_increment_field type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15534,6 +19140,18 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationEvents/TranslationEventsHandler.php + - + message: '#^Method Plugins\\Features\\TranslationEvents\\TranslationEventsHandler\:\:prepareEventStruct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Plugins/Features/TranslationEvents/TranslationEventsHandler.php + + - + message: '#^Method Plugins\\Features\\TranslationEvents\\TranslationEventsHandler\:\:saveEvent\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/TranslationEvents/TranslationEventsHandler.php + - message: '#^Property Plugins\\Features\\TranslationEvents\\Model\\TranslationEventStruct\:\:\$final_revision \(int\) does not accept bool\.$#' identifier: assign.propertyType @@ -15570,12 +19188,24 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Handlers/DummyTranslationVersionHandler.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Handlers\\TranslationVersionsHandler\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/TranslationVersions/Handlers/TranslationVersionsHandler.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Handlers\\TranslationVersionsHandler\:\:propagateTranslation\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Plugins/Features/TranslationVersions/Handlers/TranslationVersionsHandler.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Handlers\\TranslationVersionsHandler\:\:saveVersion\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/TranslationVersions/Handlers/TranslationVersionsHandler.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Handlers\\TranslationVersionsHandler\:\:storeTranslationEvent\(\) has parameter \$params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15624,6 +19254,12 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getAllRelevantEvents\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getLastRevisionsBySegmentsAndSourcePage\(\) has parameter \$job_id with no type specified\.$#' identifier: missingType.parameter @@ -15642,18 +19278,42 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getLastRevisionsBySegmentsAndSourcePage\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionNumberForTranslation\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForChunk\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForChunk\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForJob\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForJob\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForRevision\(\) has parameter \$id_job with no type specified\.$#' identifier: missingType.parameter @@ -15666,6 +19326,24 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForRevision\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForRevision\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:getVersionsForTranslation\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:insertVersionRecords\(\) has no return type specified\.$#' identifier: missingType.return @@ -15678,18 +19356,42 @@ parameters: count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:insertVersionRecords\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:insertVersionRecords\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:saveVersion\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:saveVersion\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:updateVersion\(\) has no return type specified\.$#' identifier: missingType.return count: 1 path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - + message: '#^Method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:updateVersion\(\) throws checked exception PDOException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + - message: '#^Parameter \$segmentsToUpdate of method Plugins\\Features\\TranslationVersions\\Model\\TranslationVersionDao\:\:savePropagationVersions\(\) has invalid type Plugins\\Features\\TranslationVersions\\Model\\Propagation_PropagationTotalStruct\.$#' identifier: class.notFound @@ -15846,6 +19548,18 @@ parameters: count: 1 path: lib/Utils/ActiveMQ/AMQHandler.php + - + message: '#^Method Utils\\ActiveMQ\\AMQHandler\:\:getNewInstanceForDaemons\(\) throws checked exception Stomp\\Exception\\ConnectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/AMQHandler.php + + - + message: '#^Method Utils\\ActiveMQ\\AMQHandler\:\:getRedisClient\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/AMQHandler.php + - message: '#^Method Utils\\ActiveMQ\\AMQHandler\:\:subscribe\(\) has parameter \$header with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15882,6 +19596,18 @@ parameters: count: 1 path: lib/Utils/ActiveMQ/ClientHelpers/ProjectQueue.php + - + message: '#^Method Utils\\ActiveMQ\\ClientHelpers\\ProjectQueue\:\:getPublishedResults\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/ClientHelpers/ProjectQueue.php + + - + message: '#^Method Utils\\ActiveMQ\\ClientHelpers\\ProjectQueue\:\:publishResults\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/ClientHelpers/ProjectQueue.php + - message: '#^Method Utils\\ActiveMQ\\WorkerClient\:\:enqueue\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15906,6 +19632,12 @@ parameters: count: 1 path: lib/Utils/ActiveMQ/WorkerClient.php + - + message: '#^Method Utils\\ActiveMQ\\WorkerClient\:\:enqueueWithClient\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ActiveMQ/WorkerClient.php + - message: '#^Property Utils\\ActiveMQ\\WorkerClient\:\:\$_QUEUES type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -15942,6 +19674,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\AIAssistantWorker\:\:alternative_translations\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\AIAssistantWorker\:\:emitErrorMessage\(\) has parameter \$payload with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -16152,6 +19890,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:getProjectSegmentsTranslationSummary\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\FastAnalysis\:\:main\(\) has parameter \$args with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -16284,6 +20028,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:_endQueueCallback\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:_getMT\(\) has parameter \$_config with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -16386,6 +20136,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:_tryToCloseProject\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:getProjectSegmentsTranslationSummary\(\) has parameter \$pid with no type specified\.$#' identifier: missingType.parameter @@ -16398,6 +20154,12 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:getProjectSegmentsTranslationSummary\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + - message: '#^Method Utils\\AsyncTasks\\Workers\\Analysis\\TMAnalysisWorker\:\:initPostProcess\(\) has parameter \$source_lang with no type specified\.$#' identifier: missingType.parameter @@ -16944,6 +20706,18 @@ parameters: count: 1 path: lib/Utils/AsyncTasks/Workers/GlossaryWorker.php + - + message: '#^Method Utils\\AsyncTasks\\Workers\\JobsWorker\:\:_recountAvgPee\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/JobsWorker.php + + - + message: '#^Method Utils\\AsyncTasks\\Workers\\JobsWorker\:\:process\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/AsyncTasks/Workers/JobsWorker.php + - message: '#^Parameter \#1 \$queueElement of method Utils\\AsyncTasks\\Workers\\JobsWorker\:\:_checkForReQueueEnd\(\) expects Utils\\TaskRunner\\Commons\\QueueElement, Utils\\TaskRunner\\Commons\\AbstractElement given\.$#' identifier: argument.type @@ -17460,6 +21234,12 @@ parameters: count: 1 path: lib/Utils/Currency/ChangeRatesFetcher.php + - + message: '#^Method Utils\\Currency\\TranslatedChangeRatesFetcher\:\:fetchChangeRates\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Currency/TranslatedChangeRatesFetcher.php + - message: '#^Parameter \#1 \$json of function json_decode expects string, bool\|string given\.$#' identifier: argument.type @@ -17676,6 +21456,12 @@ parameters: count: 1 path: lib/Utils/Email/ProjectAssignedEmail.php + - + message: '#^Method Utils\\Email\\ProjectAssignedEmail\:\:_getTemplateVariables\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Email/ProjectAssignedEmail.php + - message: '#^Parameter \#1 \$id_job of method Model\\WordCount\\WordCountStruct\:\:setIdJob\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -17796,6 +21582,12 @@ parameters: count: 1 path: lib/Utils/Email/WelcomeEmail.php + - + message: '#^Method Utils\\Email\\WelcomeEmail\:\:send\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Email/WelcomeEmail.php + - message: '#^Parameter \#2 \$subject of method Utils\\Email\\AbstractEmail\:\:doSend\(\) expects string, string\|null given\.$#' identifier: argument.type @@ -17826,6 +21618,18 @@ parameters: count: 1 path: lib/Utils/Engines/AbstractEngine.php + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/AbstractEngine.php + + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/AbstractEngine.php + - message: '#^Method Utils\\Engines\\AbstractEngine\:\:__get\(\) has parameter \$key with no type specified\.$#' identifier: missingType.parameter @@ -17844,6 +21648,12 @@ parameters: count: 1 path: lib/Utils/Engines/AbstractEngine.php + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Engines/AbstractEngine.php + - message: '#^Method Utils\\Engines\\AbstractEngine\:\:_call\(\) has parameter \$curl_options with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -17886,6 +21696,12 @@ parameters: count: 1 path: lib/Utils/Engines/AbstractEngine.php + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:deleteMemory\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' + identifier: throws.unusedType + count: 1 + path: lib/Utils/Engines/AbstractEngine.php + - message: '#^Method Utils\\Engines\\AbstractEngine\:\:deleteMemory\(\) has parameter \$memoryKey with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -17928,6 +21744,12 @@ parameters: count: 1 path: lib/Utils/Engines/AbstractEngine.php + - + message: '#^Method Utils\\Engines\\AbstractEngine\:\:memoryExists\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' + identifier: throws.unusedType + count: 1 + path: lib/Utils/Engines/AbstractEngine.php + - message: '#^Method Utils\\Engines\\AbstractEngine\:\:memoryExists\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18150,6 +21972,12 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL.php + - + message: '#^Method Utils\\Engines\\DeepL\:\:_getClient\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL.php + - message: '#^Method Utils\\Engines\\DeepL\:\:createGlossary\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18162,6 +21990,12 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL.php + - + message: '#^Method Utils\\Engines\\DeepL\:\:delete\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL.php + - message: '#^Method Utils\\Engines\\DeepL\:\:deleteGlossary\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18198,6 +22032,18 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL.php + - + message: '#^Method Utils\\Engines\\DeepL\:\:set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL.php + + - + message: '#^Method Utils\\Engines\\DeepL\:\:update\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL.php + - message: '#^Using nullsafe property access "\?\-\>value" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' identifier: nullsafe.neverNull @@ -18216,6 +22062,12 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:allGlossaries\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:createGlossary\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18228,24 +22080,48 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:createGlossary\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:deleteGlossary\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:deleteGlossary\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:getGlossary\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:getGlossary\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:getGlossaryEntries\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:getGlossaryEntries\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:parse\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18270,6 +22146,12 @@ parameters: count: 1 path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - + message: '#^Method Utils\\Engines\\DeepL\\DeepLApiClient\:\:translate\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/DeepL/DeepLApiClient.php + - message: '#^Parameter \#1 \$body of method Utils\\Engines\\DeepL\\DeepLApiClient\:\:parse\(\) expects string, bool\|string\|null given\.$#' identifier: argument.type @@ -18504,6 +22386,12 @@ parameters: count: 1 path: lib/Utils/Engines/Intento.php + - + message: '#^Method Utils\\Engines\\Intento\:\:getProviderList\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Intento.php + - message: '#^Method Utils\\Engines\\Intento\:\:getRoutingList\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18708,6 +22596,12 @@ parameters: count: 1 path: lib/Utils/Engines/Lara.php + - + message: '#^Method Utils\\Engines\\Lara\:\:getMemoryIfMine\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Lara.php + - message: '#^Method Utils\\Engines\\Lara\:\:memoryExists\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -18750,6 +22644,12 @@ parameters: count: 1 path: lib/Utils/Engines/Lara.php + - + message: '#^Method Utils\\Engines\\Lara\:\:validateLaraStyle\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Lara.php + - message: '#^Parameter \#1 \$body of class Stomp\\Transport\\Message constructor expects string, string\|false given\.$#' identifier: argument.type @@ -18948,6 +22848,12 @@ parameters: count: 1 path: lib/Utils/Engines/MMT.php + - + message: '#^Method Utils\\Engines\\MMT\:\:delete\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/MMT.php + - message: '#^Method Utils\\Engines\\MMT\:\:deleteMemory\(\) has parameter \$memoryKey with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -19032,6 +22938,12 @@ parameters: count: 1 path: lib/Utils/Engines/MMT.php + - + message: '#^Method Utils\\Engines\\MMT\:\:getMemoryIfMine\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/MMT.php + - message: '#^Method Utils\\Engines\\MMT\:\:importGlossary\(\) has parameter \$data with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -19734,6 +23646,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/ErrorResponse.php + - + message: '#^Method Utils\\Engines\\Results\\ErrorResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Engines/Results/ErrorResponse.php + - message: '#^Method Utils\\Engines\\Results\\ErrorResponse\:\:get_as_array\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -19746,6 +23664,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MTResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MTResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Engines/Results/MTResponse.php + - message: '#^Method Utils\\Engines\\Results\\MTResponse\:\:get_as_array\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -19758,6 +23682,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/AnalyzeResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\AnalyzeResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/AnalyzeResponse.php + - message: '#^Method Utils\\Engines\\Results\\MyMemory\\AuthKeyResponse\:\:__construct\(\) has parameter \$response with no type specified\.$#' identifier: missingType.parameter @@ -19770,6 +23700,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/CheckGlossaryResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\CheckGlossaryResponse\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/CheckGlossaryResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\CheckGlossaryResponse\:\:\$matches has no type specified\.$#' identifier: missingType.property @@ -19782,6 +23718,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/CreateUserResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\CreateUserResponse\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/CreateUserResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\CreateUserResponse\:\:\$id has no type specified\.$#' identifier: missingType.property @@ -19806,6 +23748,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/DomainsResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\DomainsResponse\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/DomainsResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\DomainsResponse\:\:\$entries has no type specified\.$#' identifier: missingType.property @@ -19818,6 +23766,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/ExportResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\ExportResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/ExportResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\ExportResponse\:\:\$id has no type specified\.$#' identifier: missingType.property @@ -19836,6 +23790,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/FileImportAndStatusResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\FileImportAndStatusResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/FileImportAndStatusResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\FileImportAndStatusResponse\:\:\$id has no type specified\.$#' identifier: missingType.property @@ -19860,6 +23820,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/GetMemoryResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\GetMemoryResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Engines/Results/MyMemory/GetMemoryResponse.php + - message: '#^Method Utils\\Engines\\Results\\MyMemory\\GetMemoryResponse\:\:buildMyMemoryMatch\(\) has parameter \$match with no type specified\.$#' identifier: missingType.parameter @@ -19890,6 +23856,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/KeysGlossaryResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\KeysGlossaryResponse\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/KeysGlossaryResponse.php + - message: '#^Property Utils\\Engines\\Results\\MyMemory\\KeysGlossaryResponse\:\:\$entries has no type specified\.$#' identifier: missingType.property @@ -20166,6 +24138,12 @@ parameters: count: 1 path: lib/Utils/Engines/Results/MyMemory/SetContributionResponse.php + - + message: '#^Method Utils\\Engines\\Results\\MyMemory\\SetContributionResponse\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Engines/Results/MyMemory/SetContributionResponse.php + - message: '#^Call to an undefined method Matecat\\SubFiltering\\AbstractFilter\:\:fromLayer1ToLayer2\(\)\.$#' identifier: method.notFound @@ -20466,6 +24444,12 @@ parameters: count: 1 path: lib/Utils/Engines/Validators/GoogleTranslateEngineValidator.php + - + message: '#^Method Utils\\Engines\\Validators\\IntentoEngineOptionsValidator\:\:validate\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Utils/Engines/Validators/IntentoEngineOptionsValidator.php + - message: '#^Access to an undefined property Utils\\Engines\\Validators\\Contracts\\EngineValidatorObject\:\:\$engineStruct\.$#' identifier: property.notFound @@ -20568,6 +24552,12 @@ parameters: count: 1 path: lib/Utils/Engines/YandexTranslate.php + - + message: '#^Method Utils\\Files\\CSV\:\:extract\(\) throws checked exception PhpOffice\\PhpSpreadsheet\\Writer\\Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Files/CSV.php + - message: '#^Method Utils\\Files\\CSV\:\:headers\(\) has parameter \$filepath with no type specified\.$#' identifier: missingType.parameter @@ -20772,6 +24762,12 @@ parameters: count: 1 path: lib/Utils/LQA/QA.php + - + message: '#^Method Utils\\LQA\\QA\:\:prepareDOMStructures\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/LQA/QA.php + - message: '#^Parameter \#2 \$subject of function preg_match expects string, string\|false given\.$#' identifier: argument.type @@ -20988,6 +24984,12 @@ parameters: count: 1 path: lib/Utils/LQA/QA/ErrObject.php + - + message: '#^Method Utils\\LQA\\QA\\ErrObject\:\:get\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 4 + path: lib/Utils/LQA/QA/ErrObject.php + - message: '#^Method Utils\\LQA\\QA\\ErrorManager\:\:JSONtoExceptionList\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21270,6 +25272,12 @@ parameters: count: 11 path: lib/Utils/LQA/SizeRestriction/SizeRestriction.php + - + message: '#^Method Utils\\Logger\\Handlers\\CloudWatchHandlerProvider\:\:getClient\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/Handlers/CloudWatchHandlerProvider.php + - message: '#^Method Utils\\Logger\\Handlers\\CloudWatchHandlerProvider\:\:getHandlerParams\(\) has parameter \$configurationParams with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21390,36 +25398,72 @@ parameters: count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:alert\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:critical\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:critical\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:debug\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:debug\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:emergency\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:emergency\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:error\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:error\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:info\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:info\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:log\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21432,12 +25476,24 @@ parameters: count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:notice\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Logger\\MatecatLogger\:\:warning\(\) has parameter \$context with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/Logger/MatecatLogger.php + - + message: '#^Method Utils\\Logger\\MatecatLogger\:\:warning\(\) throws checked exception Psr\\Log\\InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Logger/MatecatLogger.php + - message: '#^Method Utils\\Network\\MultiCurlHandler\:\:_callbackExecute\(\) has parameter \$record with no type specified\.$#' identifier: missingType.parameter @@ -21636,12 +25692,24 @@ parameters: count: 1 path: lib/Utils/OutsourceTo/Translated.php + - + message: '#^Method Utils\\OutsourceTo\\Translated\:\:__addCartElementToCart\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/OutsourceTo/Translated.php + - message: '#^Method Utils\\OutsourceTo\\Translated\:\:__getProjectData\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/OutsourceTo/Translated.php + - + message: '#^Method Utils\\OutsourceTo\\Translated\:\:__getProjectData\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/OutsourceTo/Translated.php + - message: '#^Method Utils\\OutsourceTo\\Translated\:\:__prepareOutsourcedJobCart\(\) has parameter \$apiCallResult with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21702,6 +25770,12 @@ parameters: count: 1 path: lib/Utils/OutsourceTo/Translated.php + - + message: '#^Method Utils\\OutsourceTo\\Translated\:\:performQuote\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/OutsourceTo/Translated.php + - message: '#^Offset ''currency'' might not exist on Utils\\Shop\\AbstractItem\|null\.$#' identifier: offsetAccess.notFound @@ -21828,6 +25902,12 @@ parameters: count: 1 path: lib/Utils/Redis/RedisHandler.php + - + message: '#^Method Utils\\Redis\\RedisHandler\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Redis/RedisHandler.php + - message: '#^Method Utils\\Redis\\RedisHandler\:\:formatDSN\(\) has parameter \$dsnString with no type specified\.$#' identifier: missingType.parameter @@ -21876,6 +25956,12 @@ parameters: count: 1 path: lib/Utils/Registry/AppConfig.php + - + message: '#^Method Utils\\Registry\\AppConfig\:\:__construct\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Registry/AppConfig.php + - message: '#^Method Utils\\Registry\\AppConfig\:\:init\(\) has parameter \$configuration with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -21954,6 +26040,12 @@ parameters: count: 1 path: lib/Utils/Search/ReplaceHistory.php + - + message: '#^Method Utils\\Search\\ReplaceHistoryFactory\:\:_checkDriver\(\) throws checked exception InvalidArgumentException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Search/ReplaceHistoryFactory.php + - message: '#^Method Utils\\Search\\ReplaceHistoryFactory\:\:create\(\) has parameter \$driver with no type specified\.$#' identifier: missingType.parameter @@ -21972,6 +26064,12 @@ parameters: count: 1 path: lib/Utils/Search/ReplaceHistoryFactory.php + - + message: '#^Method Utils\\Search\\ReplaceHistoryFactory\:\:create\(\) throws checked exception ReflectionException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/Search/ReplaceHistoryFactory.php + - message: '#^Method Utils\\ServerCheck\\ServerCheck\:\:getByteValue\(\) has parameter \$value with no type specified\.$#' identifier: missingType.parameter @@ -22002,6 +26100,12 @@ parameters: count: 1 path: lib/Utils/ServerCheck/UploadParams.php + - + message: '#^Method Utils\\ServerCheck\\UploadParams\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/ServerCheck/UploadParams.php + - message: '#^Call to an undefined method object\:\:offsetSet\(\)\.$#' identifier: method.notFound @@ -22032,6 +26136,18 @@ parameters: count: 1 path: lib/Utils/Shop/AbstractItem.php + - + message: '#^Method Utils\\Shop\\AbstractItem\:\:offsetSet\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Shop/AbstractItem.php + + - + message: '#^Method Utils\\Shop\\AbstractItem\:\:offsetSet\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Shop/AbstractItem.php + - message: '#^PHPDoc tag @throws has invalid value \(LogicException/DomainException\)\: Unexpected token "/DomainException", expected TOKEN_HORIZONTAL_WS at offset 438 on line 15$#' identifier: phpDoc.parseError @@ -22044,6 +26160,12 @@ parameters: count: 1 path: lib/Utils/Shop/AbstractItem.php + - + message: '#^Method Utils\\Shop\\Cart\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Shop/Cart.php + - message: '#^Property Utils\\Shop\\Cart\:\:\$cart type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22092,6 +26214,12 @@ parameters: count: 1 path: lib/Utils/TMS/TMSService.php + - + message: '#^Method Utils\\TMS\\TMSService\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TMS/TMSService.php + - message: '#^Method Utils\\TMS\\TMSService\:\:_fileUploadStatus\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22128,6 +26256,18 @@ parameters: count: 1 path: lib/Utils/TMS/TMSService.php + - + message: '#^Method Utils\\TMS\\TMSService\:\:exportJobAsCSV\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/TMS/TMSService.php + + - + message: '#^Method Utils\\TMS\\TMSService\:\:getUserAdaptiveMTEngines\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TMS/TMSService.php + - message: '#^Method Utils\\TMS\\TMSService\:\:glossaryUploadStatus\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22212,6 +26352,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/Commons/AbstractDaemon.php + - + message: '#^Method Utils\\TaskRunner\\Commons\\AbstractDaemon\:\:installHandler\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/Commons/AbstractDaemon.php + - message: '#^Method Utils\\TaskRunner\\Commons\\AbstractDaemon\:\:main\(\) has parameter \$args with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22242,6 +26388,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/Commons/AbstractElement.php + - + message: '#^Method Utils\\TaskRunner\\Commons\\AbstractElement\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/Commons/AbstractElement.php + - message: '#^Method Utils\\TaskRunner\\Commons\\AbstractElement\:\:__toString\(\) should return string but returns string\|false\.$#' identifier: return.type @@ -22308,6 +26460,12 @@ parameters: count: 2 path: lib/Utils/TaskRunner/Commons/AbstractWorker.php + - + message: '#^Method Utils\\TaskRunner\\Commons\\Configuration\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/Commons/Configuration.php + - message: '#^Method Utils\\TaskRunner\\Commons\\Configuration\:\:getRaw\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22326,6 +26484,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/Commons/Context.php + - + message: '#^Method Utils\\TaskRunner\\Commons\\Context\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/TaskRunner/Commons/Context.php + - message: '#^Method Utils\\TaskRunner\\Commons\\Context\:\:__toString\(\) should return string but returns string\|false\.$#' identifier: return.type @@ -22404,6 +26568,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/Executor.php + - + message: '#^Method Utils\\TaskRunner\\Executor\:\:installHandler\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/Executor.php + - message: '#^PHPDoc tag @var has invalid value \(\$msgFrame Frame\)\: Unexpected token "\$msgFrame", expected type at offset 28 on line 2$#' identifier: phpDoc.parseError @@ -22464,6 +26634,12 @@ parameters: count: 1 path: lib/Utils/TaskRunner/TaskManager.php + - + message: '#^Method Utils\\TaskRunner\\TaskManager\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TaskRunner/TaskManager.php + - message: '#^Method Utils\\TaskRunner\\TaskManager\:\:_balanceQueues\(\) has no return type specified\.$#' identifier: missingType.return @@ -22686,12 +26862,30 @@ parameters: count: 1 path: lib/Utils/TmKeyManagement/TmKeyManager.php + - + message: '#^Method Utils\\TmKeyManagement\\TmKeyManager\:\:sanitize\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TmKeyManagement/TmKeyManager.php + + - + message: '#^Method Utils\\TmKeyManagement\\TmKeyManager\:\:sanitize\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 6 + path: lib/Utils/TmKeyManagement/TmKeyManager.php + - message: '#^Method Utils\\TmKeyManagement\\TmKeyManager\:\:shareKey\(\) has parameter \$emailList with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/Utils/TmKeyManagement/TmKeyManager.php + - + message: '#^Method Utils\\TmKeyManagement\\TmKeyManager\:\:shareKey\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 2 + path: lib/Utils/TmKeyManagement/TmKeyManager.php + - message: '#^PHPDoc tag @var has invalid value \(\$_client_tm_key TmKeyStruct\)\: Unexpected token "\$_client_tm_key", expected type at offset 24 on line 2$#' identifier: phpDoc.parseError @@ -22782,6 +26976,12 @@ parameters: count: 1 path: lib/Utils/TmKeyManagement/TmKeyStruct.php + - + message: '#^Method Utils\\TmKeyManagement\\TmKeyStruct\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/TmKeyManagement/TmKeyStruct.php + - message: '#^Method Utils\\TmKeyManagement\\TmKeyStruct\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -22854,6 +27054,12 @@ parameters: count: 1 path: lib/Utils/Tools/CatUtils.php + - + message: '#^Method Utils\\Tools\\CatUtils\:\:_performanceEstimationTime\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/CatUtils.php + - message: '#^Method Utils\\Tools\\CatUtils\:\:clean_raw_string_4_word_count\(\) should return string but returns string\|null\.$#' identifier: return.type @@ -23208,6 +27414,24 @@ parameters: count: 1 path: lib/Utils/Tools/SimpleJWT.php + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:getInstanceFromString\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/SimpleJWT.php + + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:getInstanceFromString\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/Utils/Tools/SimpleJWT.php + + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:getInstanceFromString\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/SimpleJWT.php + - message: '#^Method Utils\\Tools\\SimpleJWT\:\:getPayload\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23220,6 +27444,12 @@ parameters: count: 1 path: lib/Utils/Tools/SimpleJWT.php + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:offsetSet\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/SimpleJWT.php + - message: '#^Method Utils\\Tools\\SimpleJWT\:\:parseJWTString\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23232,6 +27462,12 @@ parameters: count: 1 path: lib/Utils/Tools/SimpleJWT.php + - + message: '#^Method Utils\\Tools\\SimpleJWT\:\:sign\(\) throws checked exception UnexpectedValueException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Tools/SimpleJWT.php + - message: '#^PHPDoc tag @property has invalid value \(int exp\)\: Unexpected token "exp", expected variable at offset 216 on line 10$#' identifier: phpDoc.parseError @@ -23742,6 +27978,18 @@ parameters: count: 1 path: lib/Utils/Validator/JSONSchema/JSONValidator.php + - + message: '#^Method Utils\\Validator\\JSONSchema\\JSONValidator\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Validator/JSONSchema/JSONValidator.php + + - + message: '#^Method Utils\\Validator\\JSONSchema\\JSONValidator\:\:getValidJSONSchema\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/Validator/JSONSchema/JSONValidator.php + - message: '#^Parameter \#1 \$jsonSchema of static method Utils\\Validator\\JSONSchema\\JSONValidator\:\:getValidJSONSchema\(\) expects string, string\|false given\.$#' identifier: argument.type @@ -23760,6 +28008,12 @@ parameters: count: 1 path: lib/Utils/Validator/JSONSchema/JSONValidatorObject.php + - + message: '#^Method Utils\\XliffReplacer\\SilentXliffReplacerCallback\:\:thereAreErrors\(\) has Exception in PHPDoc @throws tag but it''s not thrown\.$#' + identifier: throws.unusedType + count: 1 + path: lib/Utils/XliffReplacer/SilentXliffReplacerCallback.php + - message: '#^Cannot access property \$target on Model\\Jobs\\JobStruct\|null\.$#' identifier: property.nonObject @@ -23778,6 +28032,12 @@ parameters: count: 1 path: lib/Utils/XliffReplacer/XliffReplacerCallback.php + - + message: '#^Method Utils\\XliffReplacer\\XliffReplacerCallback\:\:icuEnabled\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/Utils/XliffReplacer/XliffReplacerCallback.php + - message: '#^Parameter \#1 \$id_job of method Model\\Jobs\\MetadataDao\:\:getSubfilteringCustomHandlers\(\) expects int, int\|null given\.$#' identifier: argument.type @@ -23832,6 +28092,12 @@ parameters: count: 1 path: lib/View/API/App/Json/Analysis/AnalysisChunk.php + - + message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisChunk\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/Analysis/AnalysisChunk.php + - message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisChunk\:\:getEngines\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23904,6 +28170,12 @@ parameters: count: 1 path: lib/View/API/App/Json/Analysis/AnalysisFile.php + - + message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisFile\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 3 + path: lib/View/API/App/Json/Analysis/AnalysisFile.php + - message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisFile\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23934,6 +28206,12 @@ parameters: count: 1 path: lib/View/API/App/Json/Analysis/AnalysisJobSummary.php + - + message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisMatch\:\:__construct\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/Analysis/AnalysisMatch.php + - message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisMatch\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23964,6 +28242,12 @@ parameters: count: 1 path: lib/View/API/App/Json/Analysis/AnalysisProjectSummary.php + - + message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisProjectSummary\:\:getEstimatedWorkTime\(\) throws checked exception DivisionByZeroError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/Analysis/AnalysisProjectSummary.php + - message: '#^Method View\\API\\App\\Json\\Analysis\\AnalysisProjectSummary\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -23976,12 +28260,24 @@ parameters: count: 1 path: lib/View/API/App/Json/ConnectedService.php + - + message: '#^Method View\\API\\App\\Json\\ConnectedService\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/ConnectedService.php + - message: '#^Method View\\API\\App\\Json\\ConnectedService\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue count: 1 path: lib/View/API/App/Json/ConnectedService.php + - + message: '#^Method View\\API\\App\\Json\\ConnectedService\:\:render\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/ConnectedService.php + - message: '#^Method View\\API\\App\\Json\\ConnectedService\:\:renderItem\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24012,6 +28308,12 @@ parameters: count: 1 path: lib/View/API/App/Json/UserProfile.php + - + message: '#^Method View\\API\\App\\Json\\UserProfile\:\:renderItem\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/App/Json/UserProfile.php + - message: '#^Method View\\API\\Commons\\Error\:\:jsonSerialize\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24048,6 +28350,12 @@ parameters: count: 1 path: lib/View/API/Commons/ZipContentObject.php + - + message: '#^Method View\\API\\Commons\\ZipContentObject\:\:__set\(\) throws checked exception DomainException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/Commons/ZipContentObject.php + - message: '#^Method View\\API\\Commons\\ZipContentObject\:\:build\(\) has parameter \$_array_params with no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24060,6 +28368,18 @@ parameters: count: 1 path: lib/View/API/Commons/ZipContentObject.php + - + message: '#^Method View\\API\\Commons\\ZipContentObject\:\:setDocumentContentFromFileSystem\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/Commons/ZipContentObject.php + + - + message: '#^Method View\\API\\Commons\\ZipContentObject\:\:setDocumentContentFromS3\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/Commons/ZipContentObject.php + - message: '#^Method View\\API\\Commons\\ZipContentObject\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24216,6 +28536,12 @@ parameters: count: 1 path: lib/View/API/V2/Json/Membership.php + - + message: '#^Method View\\API\\V2\\Json\\Membership\:\:__construct\(\) throws checked exception TypeError but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/Membership.php + - message: '#^Method View\\API\\V2\\Json\\Membership\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24276,6 +28602,12 @@ parameters: count: 1 path: lib/View/API/V2/Json/Project.php + - + message: '#^Method View\\API\\V2\\Json\\Project\:\:render\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/Project.php + - message: '#^Method View\\API\\V2\\Json\\Project\:\:renderItem\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24432,6 +28764,18 @@ parameters: count: 1 path: lib/View/API/V2/Json/SegmentTranslationIssue.php + - + message: '#^Method View\\API\\V2\\Json\\SegmentTranslationIssue\:\:genCSVTmpFile\(\) throws checked exception LogicException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/SegmentTranslationIssue.php + + - + message: '#^Method View\\API\\V2\\Json\\SegmentTranslationIssue\:\:genCSVTmpFile\(\) throws checked exception RuntimeException but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/SegmentTranslationIssue.php + - message: '#^Method View\\API\\V2\\Json\\SegmentTranslationIssue\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24462,6 +28806,12 @@ parameters: count: 1 path: lib/View/API/V2/Json/SegmentTranslationMismatches.php + - + message: '#^Method View\\API\\V2\\Json\\SegmentTranslationMismatches\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/SegmentTranslationMismatches.php + - message: '#^Method View\\API\\V2\\Json\\SegmentTranslationMismatches\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24492,6 +28842,12 @@ parameters: count: 1 path: lib/View/API/V2/Json/SegmentVersion.php + - + message: '#^Method View\\API\\V2\\Json\\SegmentVersion\:\:__construct\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/API/V2/Json/SegmentVersion.php + - message: '#^Method View\\API\\V2\\Json\\SegmentVersion\:\:render\(\) return type has no value type specified in iterable type array\.$#' identifier: missingType.iterableValue @@ -24852,6 +29208,12 @@ parameters: count: 1 path: lib/View/fileupload/UploadHandler.php + - + message: '#^Method UploadHandler\:\:normalFileDelete\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/fileupload/UploadHandler.php + - message: '#^Method UploadHandler\:\:set_file_delete_url\(\) has parameter \$file with no type specified\.$#' identifier: missingType.parameter @@ -24918,6 +29280,12 @@ parameters: count: 1 path: lib/View/fileupload/UploadHandler.php + - + message: '#^Method UploadHandler\:\:zipInternalFileDelete\(\) throws checked exception Exception but it''s missing from the PHPDoc @throws tag\.$#' + identifier: missingType.checkedException + count: 1 + path: lib/View/fileupload/UploadHandler.php + - message: '#^Offset ''extension'' might not exist on array\{dirname\?\: string, basename\: string, extension\?\: string, filename\: string\}\.$#' identifier: offsetAccess.notFound @@ -24995,21 +29363,3 @@ parameters: identifier: missingType.iterableValue count: 1 path: lib/View/fileupload/UploadHandler.php - - - - message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|null given\.$#' - identifier: argument.type - count: 1 - path: lib/View/templates/_APIDoc.php - - - - message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, string\|false given\.$#' - identifier: argument.type - count: 1 - path: lib/View/templates/_APIDoc.php - - - - message: '#^Path in require_once\(\) "\.\./\.\./lib/Bootstrap\.php" is not a file or it does not exist\.$#' - identifier: requireOnce.fileNotFound - count: 1 - path: lib/View/templates/_APIDoc.php diff --git a/phpstan-throws-backlog.txt b/phpstan-throws-backlog.txt new file mode 100644 index 0000000000..43be0eb900 --- /dev/null +++ b/phpstan-throws-backlog.txt @@ -0,0 +1,283 @@ +# PHPStan @throws backlog — files to fix sequentially +# Error types: missingCheckedExceptionInThrows, tooWideThrowType, +# checkTooWideThrowTypesInProtectedAndPublicMethods +# Total files: 275 +# Total baseline entries: 726 +# +# Format: BASELINE_ENTRIES FILE_PATH +# + 2 lib/Bootstrap.php + 6 lib/Controller/API/App/AIAssistantController.php + 3 lib/Controller/API/App/AjaxUtilsController.php + 2 lib/Controller/API/App/Authentication/ForgotPasswordController.php + 9 lib/Controller/API/App/CommentController.php + 8 lib/Controller/API/App/CreateProjectController.php + 3 lib/Controller/API/App/DeleteContributionController.php + 2 lib/Controller/API/App/DownloadAnalysisReportController.php + 2 lib/Controller/API/App/EngineController.php + 1 lib/Controller/API/App/FilesController.php + 4 lib/Controller/API/App/GetContributionController.php + 4 lib/Controller/API/App/GetSearchController.php + 1 lib/Controller/API/App/GetSegmentsController.php + 1 lib/Controller/API/App/GetVolumeAnalysisController.php + 1 lib/Controller/API/App/GetWarningController.php + 1 lib/Controller/API/App/HeartBeat.php + 1 lib/Controller/API/App/IntentoController.php + 2 lib/Controller/API/App/OutsourceToController.php + 1 lib/Controller/API/App/QualityFrameworkController.php + 4 lib/Controller/API/App/SetChunkCompletedController.php + 2 lib/Controller/API/App/SetCurrentSegmentController.php + 9 lib/Controller/API/App/SetTranslationController.php + 1 lib/Controller/API/App/SplitSegmentController.php + 1 lib/Controller/API/App/TmKeyManagementController.php + 5 lib/Controller/API/App/UpdateJobKeysController.php + 1 lib/Controller/API/App/UserKeysController.php + 1 lib/Controller/API/App/XliffToTargetConverterController.php + 1 lib/Controller/API/Commons/Validators/Base.php + 1 lib/Controller/API/Commons/Validators/ChunkPasswordValidator.php + 1 lib/Controller/API/Commons/Validators/ProjectAccessTokenValidator.php + 1 lib/Controller/API/Commons/Validators/ProjectPasswordValidator.php + 2 lib/Controller/API/Commons/Validators/ProjectValidator.php + 1 lib/Controller/API/Commons/Validators/SegmentValidator.php + 1 lib/Controller/API/GDrive/GDriveController.php + 1 lib/Controller/API/GDrive/OAuthController.php + 5 lib/Controller/API/V1/NewController.php + 5 lib/Controller/API/V2/DownloadController.php + 2 lib/Controller/API/V2/DownloadJobTMXController.php + 1 lib/Controller/API/V2/DownloadOriginalController.php + 1 lib/Controller/API/V2/GlossaryFilesController.php + 1 lib/Controller/API/V2/JobsTranslatorsController.php + 1 lib/Controller/API/V2/MemoryKeysController.php + 2 lib/Controller/API/V2/ProjectsController.php + 4 lib/Controller/API/V2/SegmentTranslationIssueController.php + 4 lib/Controller/API/V2/SplitJobController.php + 1 lib/Controller/API/V2/TeamMembersController.php + 1 lib/Controller/API/V2/TeamsController.php + 1 lib/Controller/API/V2/TeamsProjectsController.php + 2 lib/Controller/API/V2/UserController.php + 1 lib/Controller/API/V3/CountWordController.php + 1 lib/Controller/API/V3/DownloadQRController.php + 1 lib/Controller/API/V3/FileInfoController.php + 1 lib/Controller/API/V3/FiltersConfigTemplateController.php + 1 lib/Controller/API/V3/LaraController.php + 1 lib/Controller/API/V3/ModernMTController.php + 1 lib/Controller/API/V3/MyMemoryController.php + 1 lib/Controller/API/V3/PayableRateController.php + 1 lib/Controller/API/V3/QAModelTemplateController.php + 3 lib/Controller/API/V3/QualityReportControllerAPI.php + 1 lib/Controller/API/V3/RevisionFeedbackController.php + 3 lib/Controller/API/V3/SegmentAnalysisController.php + 2 lib/Controller/API/V3/TeamsProjectsController.php + 1 lib/Controller/API/V3/XliffConfigTemplateController.php + 1 lib/Controller/Abstracts/AbstractDownloadController.php + 2 lib/Controller/Abstracts/Authentication/AuthCookie.php + 3 lib/Controller/Abstracts/Authentication/SessionTokenStoreHandler.php + 1 lib/Controller/Abstracts/BaseKleinViewController.php + 2 lib/Controller/Abstracts/KleinController.php + 1 lib/Controller/Traits/KleinResponseFileStream.php + 1 lib/Controller/Views/AnalyzeController.php + 2 lib/Controller/Views/CattoolController.php + 1 lib/Controller/Views/ManageController.php + 1 lib/Controller/Views/OauthResponseHandlerController.php + 2 lib/Controller/Views/OutsourceTo/AbstractController.php + 1 lib/Controller/Views/QualityReportController.php + 1 lib/Controller/Views/TemplateDecorator/AbstractDecorator.php + 1 lib/Controller/Views/TemplateDecorator/DownloadOmegaTOutputDecorator.php + 4 lib/Model/ActivityLog/ActivityLogDao.php + 3 lib/Model/Analysis/AbstractStatus.php + 2 lib/Model/Analysis/AnalysisDao.php + 1 lib/Model/Analysis/XTRFStatus.php + 5 lib/Model/ApiKeys/ApiKeyDao.php + 4 lib/Model/ChunksCompletion/ChunkCompletionEventDao.php + 2 lib/Model/ChunksCompletion/ChunkCompletionUpdateDao.php + 1 lib/Model/Comments/BaseCommentStruct.php + 6 lib/Model/Comments/CommentDao.php + 6 lib/Model/ConnectedServices/ConnectedServiceDao.php + 1 lib/Model/ConnectedServices/GDrive/GDriveUserAuthorizationModel.php + 2 lib/Model/ConnectedServices/GDrive/RemoteFileService.php + 6 lib/Model/ConnectedServices/GDrive/Session.php + 2 lib/Model/ConnectedServices/Oauth/DefuseEncryption.php + 3 lib/Model/ConnectedServices/Oauth/Facebook/FacebookProvider.php + 4 lib/Model/ConnectedServices/Oauth/Github/GithubProvider.php + 1 lib/Model/ConnectedServices/Oauth/Google/GoogleProvider.php + 3 lib/Model/ConnectedServices/Oauth/LinkedIn/LinkedInProvider.php + 4 lib/Model/ConnectedServices/Oauth/Microsoft/MicrosoftProvider.php + 2 lib/Model/ConnectedServices/Oauth/OauthClient.php + 1 lib/Model/Conversion/InternalHashPaths.php + 1 lib/Model/Conversion/MimeTypes/Guesser/SimpleMarkupMimeTypeGuesser.php + 1 lib/Model/Conversion/MimeTypes/MimeTypes.php + 2 lib/Model/Conversion/Upload.php + 1 lib/Model/Conversion/ZipArchiveHandler.php + 4 lib/Model/DataAccess/AbstractDao.php + 2 lib/Model/DataAccess/AbstractDaoObjectStruct.php + 8 lib/Model/DataAccess/Database.php + 3 lib/Model/DataAccess/ShapelessConcreteStruct.php + 1 lib/Model/EditLog/EditLogSegmentStruct.php + 3 lib/Model/Engines/EngineDAO.php + 2 lib/Model/Engines/Structs/EngineStruct.php + 1 lib/Model/FeaturesBase/FeatureSet.php + 1 lib/Model/FeaturesBase/PluginsLoader.php + 6 lib/Model/Files/FileDao.php + 5 lib/Model/Files/FilesPartsDao.php + 3 lib/Model/Files/MetadataDao.php + 2 lib/Model/FilesStorage/AbstractFilesStorage.php + 7 lib/Model/FilesStorage/FsFilesStorage.php + 7 lib/Model/FilesStorage/S3FilesStorage.php + 1 lib/Model/Filters/DTO/Yaml.php + 6 lib/Model/Filters/FiltersConfigTemplateDao.php + 2 lib/Model/Filters/FiltersConfigTemplateStruct.php + 22 lib/Model/Jobs/JobDao.php + 9 lib/Model/Jobs/JobStruct.php + 3 lib/Model/Jobs/MetadataDao.php + 6 lib/Model/LQA/CategoryDao.php + 15 lib/Model/LQA/ChunkReviewDao.php + 6 lib/Model/LQA/EntryCommentDao.php + 11 lib/Model/LQA/EntryDao.php + 1 lib/Model/LQA/EntryStruct.php + 3 lib/Model/LQA/ModelDao.php + 4 lib/Model/LQA/QAModelTemplate/QAModelTemplateDao.php + 1 lib/Model/LQA/QAModelTemplate/QAModelTemplateStruct.php + 2 lib/Model/MTQE/PayableRate/MTQEPayableRateStruct.php + 5 lib/Model/MTQE/PayableRate/MTQEPayableRateTemplateDao.php + 5 lib/Model/MTQE/Templates/MTQEWorkflowTemplateDao.php + 2 lib/Model/MTQE/Templates/MTQEWorkflowTemplateStruct.php + 1 lib/Model/Outsource/ConfirmationDao.php + 4 lib/Model/OwnerFeatures/OwnerFeatureDao.php + 5 lib/Model/Pagination/Pager.php + 1 lib/Model/Pagination/PaginationParameters.php + 5 lib/Model/PayableRates/CustomPayableRateDao.php + 3 lib/Model/PayableRates/CustomPayableRateStruct.php + 1 lib/Model/ProjectCreation/JobCreationService.php + 1 lib/Model/ProjectCreation/SegmentExtractor.php + 1 lib/Model/ProjectCreation/SegmentStorageService.php + 1 lib/Model/ProjectCreation/TmKeyService.php + 2 lib/Model/Projects/ManageModel.php + 4 lib/Model/Projects/MetadataDao.php + 22 lib/Model/Projects/ProjectDao.php + 3 lib/Model/Projects/ProjectStruct.php + 8 lib/Model/Projects/ProjectTemplateDao.php + 1 lib/Model/Projects/ProjectTemplateStruct.php + 4 lib/Model/QualityReport/QualityReportDao.php + 1 lib/Model/QualityReport/QualityReportModel.php + 4 lib/Model/QualityReport/QualityReportSegmentModel.php + 1 lib/Model/QualityReport/QualityReportSegmentStruct.php + 5 lib/Model/RemoteFiles/RemoteFileDao.php + 3 lib/Model/ReviseFeedback/FeedbackDAO.php + 2 lib/Model/Search/MySQLReplaceEventDAO.php + 2 lib/Model/Search/MySQLReplaceEventIndexDAO.php + 1 lib/Model/Search/RedisReplaceEventDAO.php + 1 lib/Model/Search/RedisReplaceEventIndexDAO.php + 1 lib/Model/Search/SearchModel.php + 3 lib/Model/Segments/ContextStruct.php + 10 lib/Model/Segments/SegmentDao.php + 4 lib/Model/Segments/SegmentMetadataDao.php + 5 lib/Model/Segments/SegmentNoteDao.php + 2 lib/Model/Segments/SegmentOriginalDataDao.php + 2 lib/Model/Segments/SegmentOriginalDataStruct.php + 3 lib/Model/Segments/SegmentStruct.php + 3 lib/Model/Segments/SegmentUIStruct.php + 3 lib/Model/TMSService/TMSServiceDao.php + 2 lib/Model/Teams/InvitedUser.php + 2 lib/Model/Teams/MembershipDao.php + 6 lib/Model/Teams/TeamDao.php + 7 lib/Model/Teams/TeamModel.php + 1 lib/Model/TmKeyManagement/UserKeysModel.php + 11 lib/Model/Translations/SegmentTranslationDao.php + 3 lib/Model/Translations/SegmentTranslationStruct.php + 3 lib/Model/Translations/WarningDao.php + 4 lib/Model/Translators/TranslatorsModel.php + 1 lib/Model/Users/Authentication/OAuthSignInModel.php + 1 lib/Model/Users/Authentication/PasswordResetModel.php + 1 lib/Model/Users/Authentication/SignupModel.php + 3 lib/Model/Users/MetadataDao.php + 1 lib/Model/Users/RedeemableProject.php + 7 lib/Model/Users/UserDao.php + 3 lib/Model/Warnings/GlobalWarningStruct.php + 2 lib/Model/WordCount/CounterModel.php + 1 lib/Model/WordCount/WordCountStruct.php + 2 lib/Model/WordCount/WordCounterDao.php + 4 lib/Model/Xliff/DTO/AbstractXliffRule.php + 2 lib/Model/Xliff/DTO/DefaultRule.php + 1 lib/Model/Xliff/DTO/XliffRulesModel.php + 6 lib/Model/Xliff/XliffConfigTemplateDao.php + 1 lib/Model/Xliff/XliffConfigTemplateStruct.php + 2 lib/Plugins/Features/AbstractRevisionFeature.php + 1 lib/Plugins/Features/ProjectCompletion.php + 1 lib/Plugins/Features/ProjectCompletion/Model/EventModel.php + 1 lib/Plugins/Features/ProjectCompletion/Model/ProjectCompletionStatusModel.php + 2 lib/Plugins/Features/ReviewExtended/BatchReviewProcessor.php + 1 lib/Plugins/Features/ReviewExtended/ChunkReviewModel.php + 1 lib/Plugins/Features/ReviewExtended/ReviewUtils.php + 2 lib/Plugins/Features/ReviewExtended/TranslationIssueModel.php + 2 lib/Plugins/Features/SegmentFilter/Model/SegmentFilterDao.php + 1 lib/Plugins/Features/TranslationEvents/Model/TranslationEvent.php + 4 lib/Plugins/Features/TranslationEvents/Model/TranslationEventDao.php + 2 lib/Plugins/Features/TranslationEvents/TranslationEventsHandler.php + 2 lib/Plugins/Features/TranslationVersions/Handlers/TranslationVersionsHandler.php + 12 lib/Plugins/Features/TranslationVersions/Model/TranslationVersionDao.php + 2 lib/Utils/ActiveMQ/AMQHandler.php + 2 lib/Utils/ActiveMQ/ClientHelpers/ProjectQueue.php + 1 lib/Utils/ActiveMQ/WorkerClient.php + 1 lib/Utils/AsyncTasks/Workers/AIAssistantWorker.php + 3 lib/Utils/AsyncTasks/Workers/Analysis/FastAnalysis.php + 3 lib/Utils/AsyncTasks/Workers/Analysis/TMAnalysisWorker.php + 2 lib/Utils/AsyncTasks/Workers/JobsWorker.php + 1 lib/Utils/Currency/TranslatedChangeRatesFetcher.php + 1 lib/Utils/Email/ProjectAssignedEmail.php + 1 lib/Utils/Email/WelcomeEmail.php + 3 lib/Utils/Engines/AbstractEngine.php + 4 lib/Utils/Engines/DeepL.php + 6 lib/Utils/Engines/DeepL/DeepLApiClient.php + 1 lib/Utils/Engines/Intento.php + 2 lib/Utils/Engines/Lara.php + 2 lib/Utils/Engines/MMT.php + 1 lib/Utils/Engines/Results/ErrorResponse.php + 1 lib/Utils/Engines/Results/MTResponse.php + 1 lib/Utils/Engines/Results/MyMemory/AnalyzeResponse.php + 1 lib/Utils/Engines/Results/MyMemory/CheckGlossaryResponse.php + 1 lib/Utils/Engines/Results/MyMemory/CreateUserResponse.php + 1 lib/Utils/Engines/Results/MyMemory/DomainsResponse.php + 1 lib/Utils/Engines/Results/MyMemory/ExportResponse.php + 1 lib/Utils/Engines/Results/MyMemory/FileImportAndStatusResponse.php + 1 lib/Utils/Engines/Results/MyMemory/GetMemoryResponse.php + 1 lib/Utils/Engines/Results/MyMemory/KeysGlossaryResponse.php + 1 lib/Utils/Engines/Results/MyMemory/SetContributionResponse.php + 1 lib/Utils/Engines/Validators/IntentoEngineOptionsValidator.php + 1 lib/Utils/Files/CSV.php + 1 lib/Utils/LQA/QA.php + 1 lib/Utils/LQA/QA/ErrObject.php + 1 lib/Utils/Logger/Handlers/CloudWatchHandlerProvider.php + 8 lib/Utils/Logger/MatecatLogger.php + 3 lib/Utils/OutsourceTo/Translated.php + 1 lib/Utils/Redis/RedisHandler.php + 1 lib/Utils/Registry/AppConfig.php + 2 lib/Utils/Search/ReplaceHistoryFactory.php + 1 lib/Utils/ServerCheck/UploadParams.php + 2 lib/Utils/Shop/AbstractItem.php + 1 lib/Utils/Shop/Cart.php + 3 lib/Utils/TMS/TMSService.php + 1 lib/Utils/TaskRunner/Commons/AbstractDaemon.php + 1 lib/Utils/TaskRunner/Commons/AbstractElement.php + 1 lib/Utils/TaskRunner/Commons/Configuration.php + 1 lib/Utils/TaskRunner/Commons/Context.php + 1 lib/Utils/TaskRunner/Executor.php + 1 lib/Utils/TaskRunner/TaskManager.php + 3 lib/Utils/TmKeyManagement/TmKeyManager.php + 1 lib/Utils/TmKeyManagement/TmKeyStruct.php + 1 lib/Utils/Tools/CatUtils.php + 5 lib/Utils/Tools/SimpleJWT.php + 2 lib/Utils/Validator/JSONSchema/JSONValidator.php + 1 lib/Utils/XliffReplacer/XliffReplacerCallback.php + 1 lib/View/API/App/Json/Analysis/AnalysisChunk.php + 1 lib/View/API/App/Json/Analysis/AnalysisFile.php + 1 lib/View/API/App/Json/Analysis/AnalysisMatch.php + 1 lib/View/API/App/Json/Analysis/AnalysisProjectSummary.php + 2 lib/View/API/App/Json/ConnectedService.php + 1 lib/View/API/App/Json/UserProfile.php + 3 lib/View/API/Commons/ZipContentObject.php + 1 lib/View/API/V2/Json/Membership.php + 1 lib/View/API/V2/Json/Project.php + 2 lib/View/API/V2/Json/SegmentTranslationIssue.php + 1 lib/View/API/V2/Json/SegmentTranslationMismatches.php + 1 lib/View/API/V2/Json/SegmentVersion.php + 2 lib/View/fileupload/UploadHandler.php diff --git a/phpstan.neon b/phpstan.neon index 812bdeb9af..e6c38f6a44 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -6,4 +6,16 @@ parameters: paths: - lib excludePaths: - - lib/View/APIDoc.php (?) \ No newline at end of file + - lib/View/APIDoc.php (?) + - lib/View/templates/_APIDoc.php + # Flag @throws \Exception on public/protected methods when only + # a narrower exception (e.g. \InvalidArgumentException) is thrown + checkTooWideThrowTypesInProtectedAndPublicMethods: true + exceptions: + check: + # Report when code throws an exception that has no + # matching @throws tag in the method's PHPDoc + missingCheckedExceptionInThrows: true + # Report when @throws declares a broader type than + # what is actually thrown (applies to all methods) + tooWideThrowType: true