/
kremls
/
python-course-junior
Обзор
Документация
Войти
/
kremls
/
python-course-junior
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
03-projects/secure-code-scanner/secure_code_scanner/line_scanner.py
50 строк
1 KB
kremls
day 5 done
16 май 2026, 17:26
16 май 2026, 17:26
37c2b45
Код
Авторство
О чём код?
RULE_IDS = [ "DANGEROUS_EVAL", "SHELL_TRUE", "HARDCODED_PASSWORD", ] RULE_PATTERNS = [ "eval(", "shell=True", "password =", ] def build_rule_map(rule_ids: list[str], patterns: list[str]) -> dict[str, str]: if len(rule_ids) != len(patterns): raise ValueError("rule_ids and patterns must have the same length") return dict(zip(rule_ids, patterns)) def scan_lines(lines: list[str]) -> list[dict]: rules = build_rule_map(RULE_IDS, RULE_PATTERNS) findings = [] for line_number, line in enumerate(lines, start=1): for rule_id, pattern in rules.items(): if pattern in line: findings.append({ "line": line_number, "rule_id": rule_id, "evidence": line.strip(), }) return findings def get_unique_rule_ids(findings: list[dict]) -> set[str | None]: return { finding.get("rule_id") for finding in findings if finding.get("rule_id") } def get_evidences(findings: list[dict]) -> list[str]: return [ finding["evidence"] for finding in findings if finding.get("evidence") ]