Исправлена ошибка генерации отчёта покрытия#6
Conversation
## Walkthrough
В workflow GitHub Actions для тестирования удалена матрица по операционным системам и подробные шаги, теперь используется внешний переиспользуемый workflow с передачей параметров. В коде генерации отчёта о покрытии добавлен вызов метода для задания имени файла статистики. Версия приложения обновлена с "0.2.3" на "0.2.4".
## Changes
| Файл(ы) | Краткое описание изменений |
|----------------------------------------------|------------------------------------------------------------------------------------------------------------|
| .github/workflows/testing.yml | Упрощён workflow: удалены шаги и матрица по ОС, добавлен вызов внешнего reusable workflow с параметрами. |
| src/cli/Классы/КомандаТестировать.os | В цепочку вызовов генератора отчёта о покрытии добавлен метод `.ИмяФайлаСтатистики("*")`. |
| src/cli/internal/isolated/Классы/Описание... | Обновлена возвращаемая версия приложения с "0.2.3" на "0.2.4". |
## Sequence Diagram(s)
```mermaid
sequenceDiagram
participant GitHubActions
participant ReusableWorkflow
participant TestScript
GitHubActions->>ReusableWorkflow: Запуск тестов (с oscript_version и test_script_path)
ReusableWorkflow->>TestScript: Выполнение тестового скрипта
TestScript-->>ReusableWorkflow: Результаты тестирования
ReusableWorkflow-->>GitHubActions: Отчёт о тестированииPoem
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
src/cli/Классы/КомандаТестировать.os (1)
150-157: Проверьте корректность комбинации.ФайлСтатистики()+.ИмяФайлаСтатистики("*")Сначала задаётся конкретный путь к файлу статистики (
.ФайлСтатистики(ПутьКСтатистике)), а затем шаблон имени"*"для поиска файлов.
Если внутриГенераторОтчетаПокрытияметод.ИмяФайлаСтатистики()перезаписывает предыдущее значение, то явный путь будет проигнорирован и отчёт может не собраться. Уточните контракт класса: возможно, вместо подстановки"*"нужно передавать точное имя файла, например:- .ИмяФайлаСтатистики("*") + .ИмяФайлаСтатистики(Новый Файл(ПутьКСтатистике).Имя)Иначе рискуете получить пустое покрытие или дублирование статистики.
.github/workflows/testing.yml (1)
5-5: Минор: единообразие кавычек в списке ветокИспользуются одиночные кавычки. Чтобы избежать нечитаемых diff-ов в будущем, приведите к стилю всего репозитория (в прошлой версии были без кавычек).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
.github/workflows/testing.yml(1 hunks)src/cli/Классы/КомандаТестировать.os(1 hunks)
🔇 Additional comments (1)
.github/workflows/testing.yml (1)
10-18: Покрытие ОС уменьшено до одной (ubuntu)Раньше тесты шли на Windows и macOS. Если библиотека позиционируется как кросс-платформенная, потеряли защиту от регрессий на этих ОС. Проверьте, действительно ли это допустимо.
| test: | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: ['ubuntu-latest', 'windows-latest', 'macos-latest'] | ||
| oscript_version: ['default', 'dev'] | ||
|
|
||
| steps: | ||
| - name: Актуализация | ||
| uses: actions/checkout@v4.2.2 | ||
| - name: Вычисление версии OneScript | ||
| shell: bash | ||
| id: extract_oscript_version | ||
| run: | | ||
| set -ex | ||
| if [ "${{ matrix.oscript_version }}" = "default" ] | ||
| then | ||
| extracted_version=$(cat packagedef | grep ".ВерсияСреды(" | sed 's|[^"]*"||' | sed -r 's/".+//' || true) | ||
| version="${extracted_version:-stable}" | ||
| else | ||
| version="${{ matrix.oscript_version }}" | ||
| fi | ||
| echo "version=$version" >> $GITHUB_OUTPUT | ||
|
|
||
| - name: Установка OneScript | ||
| uses: otymko/setup-onescript@v1.5 | ||
| with: | ||
| version: ${{ steps.extract_oscript_version.outputs.version }} | ||
|
|
||
| - name: Установка зависимостей | ||
| run: | | ||
| opm install opm | ||
| opm install -l --dev | ||
|
|
||
| - name: Тестирование | ||
| run: | | ||
| oscript ${{ runner.os == 'Windows' && 'src\\cli\\main.os' || 'src/cli/main.os' }} e | ||
| uses: autumn-library/workflows/.github/workflows/test.yml@main | ||
| with: | ||
| oscript_version: ${{ matrix.oscript_version }} | ||
| test_script_path: './src/cli/main.os e' |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Зафиксируйте сторонний workflow на SHA для безопасности
Workflow вызывается по ссылке на ветку main репозитория autumn-library/workflows. Это даёт возможность владельцам внешнего репозитория незаметно изменить выполняемый код.
Рекомендуется пин на конкретный commit SHA:
- uses: autumn-library/workflows/.github/workflows/test.yml@main
+ # Зафиксировано на 1a2b3c4d5e (пример SHA)
+ uses: autumn-library/workflows/.github/workflows/test.yml@1a2b3c4d5eТак минимизируется риск supply-chain атак и «плавающего» поведения CI.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: ['ubuntu-latest', 'windows-latest', 'macos-latest'] | |
| oscript_version: ['default', 'dev'] | |
| steps: | |
| - name: Актуализация | |
| uses: actions/checkout@v4.2.2 | |
| - name: Вычисление версии OneScript | |
| shell: bash | |
| id: extract_oscript_version | |
| run: | | |
| set -ex | |
| if [ "${{ matrix.oscript_version }}" = "default" ] | |
| then | |
| extracted_version=$(cat packagedef | grep ".ВерсияСреды(" | sed 's|[^"]*"||' | sed -r 's/".+//' || true) | |
| version="${extracted_version:-stable}" | |
| else | |
| version="${{ matrix.oscript_version }}" | |
| fi | |
| echo "version=$version" >> $GITHUB_OUTPUT | |
| - name: Установка OneScript | |
| uses: otymko/setup-onescript@v1.5 | |
| with: | |
| version: ${{ steps.extract_oscript_version.outputs.version }} | |
| - name: Установка зависимостей | |
| run: | | |
| opm install opm | |
| opm install -l --dev | |
| - name: Тестирование | |
| run: | | |
| oscript ${{ runner.os == 'Windows' && 'src\\cli\\main.os' || 'src/cli/main.os' }} e | |
| uses: autumn-library/workflows/.github/workflows/test.yml@main | |
| with: | |
| oscript_version: ${{ matrix.oscript_version }} | |
| test_script_path: './src/cli/main.os e' | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| oscript_version: ['default', 'dev'] | |
| # Зафиксировано на 1a2b3c4d5e (пример SHA) | |
| uses: autumn-library/workflows/.github/workflows/test.yml@1a2b3c4d5e | |
| with: | |
| oscript_version: ${{ matrix.oscript_version }} | |
| test_script_path: './src/cli/main.os e' |
🤖 Prompt for AI Agents
In .github/workflows/testing.yml around lines 10 to 18, the external workflow is
referenced by branch name 'main', which can lead to unpredictable changes and
security risks. Replace the branch reference with a specific commit SHA of the
autumn-library/workflows repository to pin the workflow to a fixed version. This
ensures consistent and secure execution by preventing unexpected modifications
from the external repository.
Summary by CodeRabbit