Найти в Дзене
SkyNet | Новости ИИ

Руководство по измерению, визуализации и обеспечению когнитивной сложности в проектах на Python с помощью complexipy

Введение в анализ когнитивной сложности В этом руководстве мы создадим комплексный рабочий процесс анализа когнитивной сложности с использованием complexipy. Мы начнём с измерения сложности непосредственно из необработанных строк кода, затем масштабируем тот же анализ на отдельные файлы и весь каталог проекта. Установка необходимых библиотек ``` !pip -q install complexipy pandas matplotlib ``` ``` import os import json import textwrap import subprocess from pathlib import Path import pandas as pd import matplotlib.pyplot as plt from complexipy import codecomplexity, filecomplexity ``` Анализ сложности кода ``` snippet = """ def score_orders(orders): total = 0 for o in orders: if o.get("valid"): if o.get("priority"): if o.get("amount", 0) > 100: total += 3 else: total += 2 else: if o.get("amount", 0) > 100: total += 2 else: total += 1 else: total -= 1 return total """ res = code_complexity(snippet) print("=== Code string complexity ===") print("Overall complexity:", res.complex

Руководство по измерению, визуализации и обеспечению когнитивной сложности в проектах на Python с помощью complexipy

Введение в анализ когнитивной сложности

В этом руководстве мы создадим комплексный рабочий процесс анализа когнитивной сложности с использованием complexipy. Мы начнём с измерения сложности непосредственно из необработанных строк кода, затем масштабируем тот же анализ на отдельные файлы и весь каталог проекта.

Установка необходимых библиотек

```

!pip -q install complexipy pandas matplotlib

```

```

import os

import json

import textwrap

import subprocess

from pathlib import Path

import pandas as pd

import matplotlib.pyplot as plt

from complexipy import codecomplexity, filecomplexity

```

Анализ сложности кода

```

snippet = """

def score_orders(orders):

total = 0

for o in orders:

if o.get("valid"):

if o.get("priority"):

if o.get("amount", 0) > 100:

total += 3

else:

total += 2

else:

if o.get("amount", 0) > 100:

total += 2

else:

total += 1

else:

total -= 1

return total

"""

res = code_complexity(snippet)

print("=== Code string complexity ===")

print("Overall complexity:", res.complexity)

print("Functions:")

for f in res.functions:

print(f" - {f.name}: {f.complexity} (lines {f.linestart}-{f.lineend})")

```

Создание проекта

```

root = Path("toy_project")

src = root / "src"

tests = root / "tests"

src.mkdir(parents=True, exist_ok=True)

tests.mkdir(parents=True, exist_ok=True)

(src / "init.py").write_text("")

(tests / "init.py").write_text("")

(src / "simple.py").write_text(textwrap.dedent("""

def add(a, b):

return a + b

def safe_div(a, b):

if b == 0:

return None

return a / b

""").strip() + "\n")

```

Визуализация распределения сложности

```

if "complexity" in fn_df.columns:

fndf["complexity"] = pd.tonumeric(fn_df["complexity"], errors="coerce")

plt.figure()

fn_df["complexity"].dropna().plot(kind="hist", bins=20)

plt.title("Cognitive Complexity Distribution (functions)")

plt.xlabel("complexity")

plt.ylabel("count")

plt.show()

```

Waymo представляет модель Waymo World

Waymo представляет модель Waymo World — передовую генеративную модель, которая управляет симуляцией вождения следующего поколения. Система построена на основе Genie 3, общей модели мира Google DeepMind, и адаптирует её для создания фотореалистичных, управляемых многосенсорных сцен вождения в масштабе.

Waymo уже сообщает о почти 200 миллионах полностью автономных миль на дорогах общего пользования. За кулисами драйвер обучается и оценивается на миллиардах дополнительных миль в виртуальных мирах. Модель Waymo World теперь является основным механизмом генерации этих миров с явной целью выявления редких, критически важных для безопасности «длиннохвостых» событий, которые почти невозможно увидеть достаточно часто в реальности.

От Genie 3 к модели мира для вождения

Genie 3 — это модель мира общего назначения, которая превращает текстовые подсказки в инт...

Читать далее