Skip to content

pl Pytest Integration

Krzysztofci edited this page Jun 26, 2026 · 1 revision

Integracja z Pytest & Gap Analysis (Analiza Luk)

Najważniejszą funkcjonalnością logic-cov jest tryb porównawczy (-comp), który łączy statyczną analizę kodu z dynamicznymi wynikami pochodzącymi bezpośrednio z wykonania pakietu testów.

Uruchomienie analizy luk (Gap Analysis)

Aby zestawić wykonane testy z mapą rzeczywistej logiki biznesowej, należy przekazać katalog testów, kod źródłowy oraz flagę -comp:

logic-cov tests/ scripts/ -comp

Jak to działa?

  1. Narzędzie uruchamia w tle proces pytest z automatyczną konfiguracją pokrycia (--cov oraz --cov-report=term-missing).

  2. Przechwytuje surowe numery linii, które pytest-cov uznał za "niewykonane" (unexecuted lines).

  3. Dokonuje operacji iloczynu zbiorów (intersection): odrzuca nieprzetestowane linie kodu odpowiedzialne wyłącznie za GUI (np. konfiguracje layoutu, marginesy komponentów okienkowych), pozostawiając wyłącznie nieprzetestowane linie czystej logiki.

krzysztof@lenovo:~/bing-glava-suite$ logic-cov tests/ scripts/ -comp

========================================================================================
======================== logic-cov: Logic Coverage Gap Analysis ========================
Name                                     Logic Stmts    Covered    Missing  Logic Cover%
----------------------------------------------------------------------------------------
scripts/glava-gui.py                             476        357        119           75%
  ↳ Missing Logic: 892-1010
scripts/gui/__init__.py                            0          0          0          100%
scripts/gui/color_button.py                      122        122          0          100%
scripts/gui/colors.py                            160        160          0          100%
scripts/gui/core.py                              117        117          0          100%
scripts/gui/geometry.py                          157        153          4           97%
  ↳ Missing Logic: 116-119
scripts/gui/glava.py                             359        313         46           87%
  ↳ Missing Logic: 35-38, 60-63, 138-141, 223-226, 304-306, 354-356, 364-367, 387-389, 418-420, 431-444
scripts/gui/instance.py                          108        108          0          100%
scripts/gui/instance_tab_bar.py                   81         69         12           85%
  ↳ Missing Logic: 275-278, 367-370, 407-410
scripts/gui/modules/__init__.py                    0          0          0          100%
scripts/gui/modules/bars.py                       73         64          9           88%
  ↳ Missing Logic: 256-264
scripts/gui/modules/base.py                      163        105         58           64%
  ↳ Missing Logic: 189-197, 226-243, 257-287
scripts/gui/modules/circle.py                     67         54         13           81%
  ↳ Missing Logic: 97-100, 184-186, 328-333
scripts/gui/modules/glsl_io.py                   233        233          0          100%
scripts/gui/modules/graph.py                      40         40          0          100%
scripts/gui/modules/radial.py                     62         58          4           94%
  ↳ Missing Logic: 117-120
scripts/gui/modules/wave.py                       75         45         30           60%
  ↳ Missing Logic: 86-91, 211-220, 333-346
scripts/gui/tab_advanced.py                      133        133          0          100%
scripts/gui/tab_main.py                          362        362          0          100%
scripts/gui/tab_module.py                         94         94          0          100%
scripts/gui/theme.py                               6          3          3           50%
  ↳ Missing Logic: 188-190
scripts/gui/themes/__init__.py                     0          0          0          100%
scripts/gui/widgets.py                            70         55         15           79%
  ↳ Missing Logic: 27-41
----------------------------------------------------------------------------------------
TOTAL LOGIC                                     2958       2645        313           89%
========================================================================================
=============================== target analysis finished ===============================

Inteligentne Marginesy i Kontekst Strukturalny (Padding)

Podczas parsowania kodu przez drzewo AST, logic-cov stosuje inteligentną zasadę przesunięć i doliczania marginesów. Jeśli nieprzetestowana linia znajduje się wewnątrz złożonej struktury sterującej, analizator automatycznie przechwytuje również nagłówek rodzica (if, for, try).

Dzięki temu wygenerowane raporty linii zachowują pełen kontekst logiczny i strukturalny — są one gotowe do bezpośredniego wklejenia w prompt dla modeli LLM w celu błyskawicznego wygenerowania brakujących scenariuszy testowych.

Clone this wiki locally