Задание состоит из 2 частей:
Проверяется код из коммита, отмеченного тегом, обозначающим завершение 1-й части.
Контроллеры и другие сущности помимо пользовательских функций описывать не обязательно.
Расчет количества баллов осуществляется по формуле
X = (A / B) * 50
Где X - количество баллов, округленное до целого числа вверх
A - количество пользовательских функций, имеющих правильное JSDoc-описание
A = cумма результатов вычисления выражения 1 * k для каждой пользовательской функции, где:
- k = 0, если JSDoc-описание полностью неправильное или отсутствует
- k = 0.5, если JSDoc-описание содержит ошибки в части типов или фактического описания работы функции (без учета орфографических, пунктуационных ошибок)
- k = 1, если JSDoc-описание корректно
B - общее количество пользовательских функций
Примеры JSDoc-описаний
Корректное описание
/**
* Returns the sum of a and b
* @param {number} a first term
* @param {number} b second term
* @returns {number} Sum of a and b
*/
const sum = (a, b) => a + b;
Частично корректное описание (отсутствует описание одного из входных параметров)
/**
* Returns the sum of a and b
* @param {number} a first term
* @returns {number} Sum of a and b
*/
const sum = (a, b) => a + b;
Некорректное описание (неправильные описание функции и возвращаемого значения, отсутствует описание одного из входных параметров)
/**
* Returns the square root from a
* @param {number} a first term
* @returns {number} string "OK" or "NOT_FOUND"
*/
const sum = (a, b) => a + b;
За добавление в package.json
скрипта "doc"
, который генерирует страницу с документацией на основе JSDoc-описаний +10 баллов
- За каждый успешно пройденный тест +10 баллов (максимум 170 баллов)
- В проекте настроен ESLint и имеется
tsconfig.json
с конфигурацией не менее строгой, чем нижеприведенная +20 баллов
{
"compilerOptions": {
"target": "es2020",
"module": "es2020",
"allowJs": false,
"outDir": "./build",
"rootDir": "./src",
"downlevelIteration": false,
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedIndexedAccess": true,
"noPropertyAccessFromIndexSignature": true,
"moduleResolution": "node",
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"exclude": [
"node_modules/"
],
"include": [
"../src/**/*.ts"
]
}
Pull Request должен быть один, после выполнения второй части. Он должен содержать информацию о коммите с решением 1 части задачи (должен быть отмечен соответствующим тегом)
Штрафы:
- Наличие изменений в тестах либо в workflow минус 100 баллов
- Внесение изменений в репозиторий после дедлайна не считая коммиты, вносящие изменения только в
Readme.md
минус 30% от максимального балла за задание (для этого задания 75 баллов) - Не все файлы с кодом в папке src имеют расширение
.ts
-50 баллов - За каждую ошибку линтера при запуске
npm run lint
на основе локального конфига -10 баллов (именноerrors
, неwarnings
) - Имеются явно указанные типы
any
,unknown
-20 баллов за каждое использование - За отсутствие отдельной ветки для разработки -20 баллов
- За отсутствие
Pull Request
-20 баллов - За неполную информацию в описании
Pull Request
(отсутствует либо некорректен один из 3 обязательных пунктов) -10 баллов - За отсутствие тега на коммите с решением 1 задачи или отсутствие его упоминания в
Pull Request
-30 баллов - Меньше 3 коммитов в каждой таске, не считая коммиты, вносящие изменения только в
Readme.md
— -20 баллов
Итоговая оценка за задание = оценка за 1 часть + оценка за 2 часть - штрафы
Помимо несовпадения, отображаемого в workflow во время пулл реквеста (
MD5 check
), есть следующий способ:
- Открыть глобальный
.gitconfig
:git config --global -e
- Добавить в глобальный
.gitconfig
следующие строки. Если вы не используете VSCode заменитеcode
на соответстующую вашей IDE команду (или путь к выполняемому файлу).[diff] tool = vscode [difftool "vscode"] cmd = code --wait --diff $LOCAL $REMOTE
- Добавить в качестве дополнительного удаленного репозитория темплейт
git remote add template https://github.com/rolling-scopes-school/nodejs-course-template.git
- Создать локальную копию ветки master из темплейта
git fetch template master:template-master
- Запустить сравнение для текущей ветки с веткой master темплейта для тестов
git difftool <название текущей ветки> template-master test/
- Запустить сравнение для текущей ветки с веткой master темплейта для workflow
git difftool <название текущей ветки> template-master .github/