-
Notifications
You must be signed in to change notification settings - Fork 5
Исправлена ошибка генерации отчёта покрытия #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ 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