diff --git a/prog/arch-researcher/Pipfile b/prog/arch-researcher/Pipfile
new file mode 100644
index 0000000..540e0e0
--- /dev/null
+++ b/prog/arch-researcher/Pipfile
@@ -0,0 +1,13 @@
+[[source]]
+url = "https://pypi.org/simple"
+verify_ssl = true
+name = "pypi"
+
+[packages]
+pyqt5 = "*"
+networkx = "*"
+
+[dev-packages]
+
+[requires]
+python_version = "3.12"
diff --git a/prog/arch-researcher/Pipfile.lock b/prog/arch-researcher/Pipfile.lock
new file mode 100644
index 0000000..2c6e180
--- /dev/null
+++ b/prog/arch-researcher/Pipfile.lock
@@ -0,0 +1,83 @@
+{
+ "_meta": {
+ "hash": {
+ "sha256": "7949d56dd1701e13de32a8fe849526075967be4665409687dde3cbe9d4dc32d9"
+ },
+ "pipfile-spec": 6,
+ "requires": {
+ "python_version": "3.12"
+ },
+ "sources": [
+ {
+ "name": "pypi",
+ "url": "https://pypi.org/simple",
+ "verify_ssl": true
+ }
+ ]
+ },
+ "default": {
+ "networkx": {
+ "hashes": [
+ "sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509",
+ "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762"
+ ],
+ "index": "pypi",
+ "markers": "python_version >= '3.11' and python_full_version != '3.14.1'",
+ "version": "==3.6.1"
+ },
+ "pyqt5": {
+ "hashes": [
+ "sha256:6cd75628f6e732b1ffcfe709ab833a0716c0445d7aec8046a48d5843352becb6",
+ "sha256:76be0322ceda5deecd1708a8d628e698089a1cea80d1a49d242a6d579a40babd",
+ "sha256:bdde598a3bb95022131a5c9ea62e0a96bd6fb28932cc1619fd7ba211531b7517",
+ "sha256:c8b03dd9380bb13c804f0bdb0f4956067f281785b5e12303d529f0462f9afdc2",
+ "sha256:cd672a6738d1ae33ef7d9efa8e6cb0a1525ecf53ec86da80a9e1b6ec38c8d0f1",
+ "sha256:fda45743ebb4a27b4b1a51c6d8ef455c4c1b5d610c90d2934c7802b5c1557c52"
+ ],
+ "index": "pypi",
+ "markers": "python_version >= '3.8'",
+ "version": "==5.15.11"
+ },
+ "pyqt5-qt5": {
+ "hashes": [
+ "sha256:8bb997eb903afa9da3221a0c9e6eaa00413bbeb4394d5706118ad05375684767",
+ "sha256:bf2457e6371969736b4f660a0c153258fa03dbc6a181348218e6f05421682af7",
+ "sha256:c656af9c1e6aaa7f59bf3d8995f2fa09adbf6762b470ed284c31dca80d686a26"
+ ],
+ "version": "==5.15.18"
+ },
+ "pyqt5-sip": {
+ "hashes": [
+ "sha256:13c32e9025d0ab5fe960ef64dcb4c6f7ec26156ddce2cf2f195600aa26e8f9fe",
+ "sha256:163c2bba5e637c2222ec17d82a2c5aa158184a191923eb7d137cf4cfa0399529",
+ "sha256:521729e4ce44db555005f4e6987c4a5164d45ea03f5a7d08519813d4776acd15",
+ "sha256:65f257e28d06a01c2a9a7c0b2faf2af1dbf25a1420a5a9d905a54aaddce74d79",
+ "sha256:6d948f1be619c645cd3bda54952bfdc1aef7c79242dccea6a6858748e61114b9",
+ "sha256:71c37db75a0664325de149f43e2a712ec5fa1f90429a21dafbca005cb6767f94",
+ "sha256:8372ec8704bfd5e09942d0d055a1657eb4f702f4b30847a5e59df0496f99d67f",
+ "sha256:9254e5dd7676b76503ba20edcc919e7ac4a97b6c70a6fb2f9dba9e13b4c60509",
+ "sha256:92abe984becbde768954d6d0951f56d80a9868d2fd9e738e61fc944f0ff83dd6",
+ "sha256:95bba4670ecf5cba73958b85aa2087c17838a402ed251c38e68060c7665c998b",
+ "sha256:993fe3ed9a62a92e770f32d5344e3df56c2cacf1471f01b7feaf04818a2df1c4",
+ "sha256:9b689e02e400abd1ce0a30cd6eae8eceabcf1bbba0395cb5c86e64ba74351d68",
+ "sha256:a2a0278091d067b17855047ed8bd557e5ca62308a7d9fb5200451d0bd9090afc",
+ "sha256:aac4adc37df2f2ac1dc259409be1900f07332d140a12c9db7c84112cef64ff59",
+ "sha256:ac0be1a8ce145ed78c7e8d45243749405bee7e3a87e9810b0542bca010c50bd7",
+ "sha256:b29e4cda24748e59e5bd1bdad4812091a86b4b5b08c38b7f781eb55a5166f2b7",
+ "sha256:b4b743566f67cabfa7b0ba2da30b46d9d635d16cd5bc8cdcec83f620ed14dd93",
+ "sha256:bbec4c14903bcd585b4e1ee50edccfe224c8c0ee8004a072143993b4eb954442",
+ "sha256:bd9e3c6f81346f1b08d6db02305cdee20c009b43aa083d44ee2de47a7da0e123",
+ "sha256:c738949863d88b78f86f28e13151989ca3b1a302934811af41856dc8a27838bd",
+ "sha256:c969631ada7293a81e1012b2264a62d69a91995b517586489dfe24421b87b9af",
+ "sha256:d84ac384a63285132e67762c87681191c25e28a1df7560287ec3889d9eb223b5",
+ "sha256:dc5c30bb9bd8cca6e13d2fedac6e2a75fe2168d798d66f76e74835546b025027",
+ "sha256:dd855149c724634eb1f92d10e04e1be0751068a8521d5f9f06e5c2dbe32fd89f",
+ "sha256:ead5e0a64ad852ac60797989d8444a6a5bd834768536b04a07b40b2937d922f6",
+ "sha256:fdb45c7cd2af7eccd7370b994d432bfc7965079f845392760724f26771bb59dc"
+ ],
+ "markers": "python_version >= '3.10'",
+ "version": "==12.18.0"
+ }
+ },
+ "develop": {}
+}
diff --git a/prog/arch-researcher/config.py b/prog/arch-researcher/config.py
index 4bf2caf..4e7acf4 100644
--- a/prog/arch-researcher/config.py
+++ b/prog/arch-researcher/config.py
@@ -49,9 +49,6 @@ class AnalyzerConfig:
cpp_extensions: List[str] = field(default_factory=lambda: [
".cpp", ".cxx", ".cc", ".c", ".hpp", ".hxx", ".h"
])
- js_extensions: List[str] = field(default_factory=lambda: [
- ".js", ".mjs", ".cjs", ".ts"
- ])
# Директории, которые игнорируются при обходе
ignored_dirs: List[str] = field(default_factory=lambda: [
diff --git a/prog/arch-researcher/core/collector.py b/prog/arch-researcher/core/collector.py
index 40c9d4c..0c7a7b2 100644
--- a/prog/arch-researcher/core/collector.py
+++ b/prog/arch-researcher/core/collector.py
@@ -30,7 +30,6 @@ class Collector:
def __init__(self, config: AnalyzerConfig = DEFAULT_CONFIG):
self.config = config
self._cpp_exts = set(config.cpp_extensions)
- self._js_exts = set(config.js_extensions)
self._ignored = set(config.ignored_dirs)
# ------------------------------------------------------------------
@@ -96,12 +95,9 @@ class Collector:
)
def _detect_language(self, path: Path) -> str | None:
- """Возвращает 'cpp', 'js' или None если файл не анализируется."""
- suffix = path.suffix.lower()
- if suffix in self._cpp_exts:
+ """Возвращает 'cpp' или None если файл не анализируется."""
+ if path.suffix.lower() in self._cpp_exts:
return "cpp"
- if suffix in self._js_exts:
- return "js"
return None
def _resolve_module_name(self, root: Path, file: Path) -> str:
@@ -124,8 +120,6 @@ class Collector:
@staticmethod
def _merge_language(existing: str, new_lang: str) -> str:
"""Объединяет языки при добавлении нового файла в модуль."""
- if existing == "mixed" or existing == new_lang:
- return existing if existing != "mixed" else "mixed"
- if existing in ("cpp", "js") and existing != new_lang:
- return "mixed"
- return new_lang # existing == "" — первый файл
+ if not existing:
+ return new_lang
+ return existing
diff --git a/prog/arch-researcher/core/dependency_analyzer.py b/prog/arch-researcher/core/dependency_analyzer.py
index 0b881b4..0632598 100644
--- a/prog/arch-researcher/core/dependency_analyzer.py
+++ b/prog/arch-researcher/core/dependency_analyzer.py
@@ -2,14 +2,13 @@
Модуль DependencyAnalyzer — построение и анализ графа зависимостей.
Алгоритм:
- 1. Для C++ файлов извлекаются #include-директивы:
+ 1. Для C/C++ файлов извлекаются #include-директивы:
- через libclang AST (если установлен) — точный разбор
- через regex (fallback) — лексический разбор
- 2. Для JS файлов — regex-парсинг require() и import ... from
- 3. #include / import разрешаются до имени модуля (директории)
- 4. Строится ориентированный граф зависимостей (networkx DiGraph)
- 5. Вычисляются метрики: coupling_in, coupling_out, instability
- 6. Обнаруживаются циклические зависимости (strongly connected components)
+ 2. #include разрешаются до имени модуля (директории)
+ 3. Строится ориентированный граф зависимостей (networkx DiGraph)
+ 4. Вычисляются метрики: coupling_in, coupling_out, instability
+ 5. Обнаруживаются циклические зависимости (strongly connected components)
Метрика нестабильности (Instability):
I = C_out / (C_in + C_out), где
@@ -51,12 +50,6 @@ except ImportError:
# Regex для fallback-разбора #include
_RE_INCLUDE = re.compile(r'^\s*#\s*include\s+[<"]([^>"]+)[>"]', re.MULTILINE)
-# Regex для JS import / require
-_RE_JS_IMPORT = re.compile(
- r'(?:import\s+.*?\s+from\s+|require\s*\(\s*)[\'"]([^\'"]+)[\'"]',
- re.MULTILINE,
-)
-
class DependencyAnalyzer:
"""
@@ -169,21 +162,13 @@ class DependencyAnalyzer:
root: Path,
) -> Set[str]:
"""Извлекает зависимости из одного файла."""
- suffix = Path(file_path).suffix.lower()
+ if Path(file_path).suffix.lower() not in self.config.cpp_extensions:
+ return set()
- if suffix in self.config.cpp_extensions:
- raw_includes = self._extract_cpp_includes(file_path)
- return self._resolve_includes_to_modules(
- raw_includes, file_path, file_to_module, root
- )
-
- if suffix in self.config.js_extensions:
- raw_imports = self._extract_js_imports(file_path)
- return self._resolve_js_imports_to_modules(
- raw_imports, file_path, file_to_module, root
- )
-
- return set()
+ raw_includes = self._extract_cpp_includes(file_path)
+ return self._resolve_includes_to_modules(
+ raw_includes, file_path, file_to_module, root
+ )
def _extract_cpp_includes(self, file_path: str) -> List[str]:
"""
@@ -219,14 +204,6 @@ class DependencyAnalyzer:
return []
return _RE_INCLUDE.findall(text)
- def _extract_js_imports(self, file_path: str) -> List[str]:
- """Извлечение import/require из JS/TS файла через regex."""
- try:
- text = Path(file_path).read_text(encoding="utf-8", errors="replace")
- except OSError:
- return []
- return _RE_JS_IMPORT.findall(text)
-
# ------------------------------------------------------------------
# Разрешение имён в модули
# ------------------------------------------------------------------
@@ -261,39 +238,6 @@ class DependencyAnalyzer:
return deps
- def _resolve_js_imports_to_modules(
- self,
- imports: List[str],
- source_file: str,
- file_to_module: Dict[str, str],
- root: Path,
- ) -> Set[str]:
- """
- Разрешает JS import-пути в имена модулей.
- Внешние пакеты (не начинаются с '.') игнорируются.
- """
- deps: Set[str] = set()
- source_dir = Path(source_file).parent
-
- for imp in imports:
- if not imp.startswith("."):
- continue # внешний пакет — не наш модуль
-
- # Пробуем добавить расширения
- base = (source_dir / imp).resolve()
- candidates = [base]
- for ext in self.config.js_extensions:
- candidates.append(base.with_suffix(ext))
- candidates.append(base / f"index{ext}")
-
- for candidate in candidates:
- key = str(candidate)
- if key in file_to_module:
- deps.add(file_to_module[key])
- break
-
- return deps
-
# ------------------------------------------------------------------
# Вспомогательные методы
# ------------------------------------------------------------------
diff --git a/prog/arch-researcher/core/metrics_engine.py b/prog/arch-researcher/core/metrics_engine.py
index 3b8e49e..6bb8749 100644
--- a/prog/arch-researcher/core/metrics_engine.py
+++ b/prog/arch-researcher/core/metrics_engine.py
@@ -140,9 +140,6 @@ class MetricsEngine:
def _detect_language(self, file_path: str) -> str:
"""Определяет язык по расширению файла."""
- suffix = Path(file_path).suffix.lower()
- if suffix in self.config.cpp_extensions:
+ if Path(file_path).suffix.lower() in self.config.cpp_extensions:
return "cpp"
- if suffix in self.config.js_extensions:
- return "js"
return "unknown"
diff --git a/prog/arch-researcher/gui.py b/prog/arch-researcher/gui.py
new file mode 100644
index 0000000..0170832
--- /dev/null
+++ b/prog/arch-researcher/gui.py
@@ -0,0 +1,482 @@
+#!/usr/bin/env python3
+"""
+PyQt5 GUI для Legacy Analyzer.
+
+Запуск:
+ python gui.py
+ pip install PyQt5 # если не установлен
+"""
+
+import logging
+import os
+import sys
+from pathlib import Path
+
+from PyQt5.QtCore import QThread, pyqtSignal, Qt
+from PyQt5.QtGui import QColor, QFont, QTextCursor
+from PyQt5.QtWidgets import (
+ QApplication, QCheckBox, QFileDialog, QFormLayout, QGroupBox,
+ QHBoxLayout, QHeaderView, QLabel, QLineEdit, QMainWindow,
+ QPushButton, QSizePolicy, QSpinBox, QSplitter, QTableWidget,
+ QTableWidgetItem, QTextEdit, QVBoxLayout, QWidget,
+)
+
+# Добавляем директорию скрипта в sys.path, чтобы импорты работали при запуске
+# gui.py из любой рабочей директории
+_HERE = Path(__file__).parent
+if str(_HERE) not in sys.path:
+ sys.path.insert(0, str(_HERE))
+
+from config import AnalyzerConfig, ThresholdConfig
+from analyzer import Analyzer
+from models import RiskLevel, ModernizationStrategy
+
+
+# ---------------------------------------------------------------------------
+# Цвета уровней риска
+# ---------------------------------------------------------------------------
+
+RISK_COLORS = {
+ RiskLevel.LOW: "#27ae60",
+ RiskLevel.MEDIUM: "#f39c12",
+ RiskLevel.HIGH: "#e67e22",
+ RiskLevel.CRITICAL: "#e74c3c",
+}
+
+RISK_BG = {
+ RiskLevel.LOW: "#eafaf1",
+ RiskLevel.MEDIUM: "#fef9e7",
+ RiskLevel.HIGH: "#fef0e6",
+ RiskLevel.CRITICAL: "#fdedec",
+}
+
+STRATEGY_RU = {
+ ModernizationStrategy.KEEP: "Оставить",
+ ModernizationStrategy.REFACTOR: "Рефакторинг",
+ ModernizationStrategy.REENGINEER: "Реинжиниринг",
+ ModernizationStrategy.REPLACE: "Замена",
+}
+
+RISK_RU = {
+ RiskLevel.LOW: "НИЗКИЙ",
+ RiskLevel.MEDIUM: "СРЕДНИЙ",
+ RiskLevel.HIGH: "ВЫСОКИЙ",
+ RiskLevel.CRITICAL: "КРИТИЧЕСКИЙ",
+}
+
+LOG_LEVEL_COLORS = {
+ "DEBUG": "#888888",
+ "INFO": "#ecf0f1",
+ "WARNING": "#f39c12",
+ "ERROR": "#e74c3c",
+ "CRITICAL":"#e74c3c",
+}
+
+
+# ---------------------------------------------------------------------------
+# Фоновый поток анализа
+# ---------------------------------------------------------------------------
+
+class _QtLogHandler(logging.Handler):
+ """Перехватывает logging и отправляет сообщения в Qt-сигнал."""
+
+ def __init__(self, signal):
+ super().__init__()
+ self._signal = signal
+
+ def emit(self, record):
+ try:
+ self._signal.emit(self.format(record), record.levelname)
+ except Exception:
+ pass
+
+
+class AnalysisWorker(QThread):
+ log_signal = pyqtSignal(str, str) # (message, levelname)
+ finished_signal = pyqtSignal(object) # AnalysisReport
+ error_signal = pyqtSignal(str)
+
+ def __init__(self, project_root: str, config: AnalyzerConfig):
+ super().__init__()
+ self._project_root = project_root
+ self._config = config
+
+ def run(self):
+ handler = _QtLogHandler(self.log_signal)
+ handler.setFormatter(logging.Formatter("%(asctime)s [%(levelname)s] %(message)s",
+ datefmt="%H:%M:%S"))
+ root_logger = logging.getLogger()
+ root_logger.addHandler(handler)
+ root_logger.setLevel(logging.DEBUG)
+
+ try:
+ analyzer = Analyzer(self._config)
+ report = analyzer.run(self._project_root)
+ self.finished_signal.emit(report)
+ except Exception as exc:
+ self.error_signal.emit(str(exc))
+ finally:
+ root_logger.removeHandler(handler)
+
+
+# ---------------------------------------------------------------------------
+# Панель настроек (левая)
+# ---------------------------------------------------------------------------
+
+class _SettingsPanel(QWidget):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._build_ui()
+
+ def _build_ui(self):
+ layout = QVBoxLayout(self)
+ layout.setContentsMargins(8, 8, 8, 8)
+ layout.setSpacing(10)
+
+ # --- Проект ---
+ proj_box = QGroupBox("Проект")
+ proj_form = QFormLayout(proj_box)
+ proj_form.setLabelAlignment(Qt.AlignRight)
+
+ self.project_edit = QLineEdit()
+ self.project_edit.setPlaceholderText("Путь к анализируемому проекту")
+ proj_btn = QPushButton("…")
+ proj_btn.setFixedWidth(30)
+ proj_btn.clicked.connect(self._browse_project)
+ proj_row = QHBoxLayout()
+ proj_row.addWidget(self.project_edit)
+ proj_row.addWidget(proj_btn)
+
+ self.output_edit = QLineEdit("legacy_report")
+ self.output_edit.setPlaceholderText("Директория для отчётов")
+ out_btn = QPushButton("…")
+ out_btn.setFixedWidth(30)
+ out_btn.clicked.connect(self._browse_output)
+ out_row = QHBoxLayout()
+ out_row.addWidget(self.output_edit)
+ out_row.addWidget(out_btn)
+
+ self.libclang_edit = QLineEdit()
+ self.libclang_edit.setPlaceholderText("Авто (опционально)")
+ lc_btn = QPushButton("…")
+ lc_btn.setFixedWidth(30)
+ lc_btn.clicked.connect(self._browse_libclang)
+ lc_row = QHBoxLayout()
+ lc_row.addWidget(self.libclang_edit)
+ lc_row.addWidget(lc_btn)
+
+ proj_form.addRow("Проект:", proj_row)
+ proj_form.addRow("Вывод:", out_row)
+ proj_form.addRow("libclang:", lc_row)
+
+ # --- Форматы ---
+ fmt_box = QGroupBox("Форматы отчётов")
+ fmt_layout = QHBoxLayout(fmt_box)
+ self.fmt_json = QCheckBox("JSON")
+ self.fmt_json.setChecked(True)
+ self.fmt_html = QCheckBox("HTML")
+ self.fmt_html.setChecked(True)
+ fmt_layout.addWidget(self.fmt_json)
+ fmt_layout.addWidget(self.fmt_html)
+ fmt_layout.addStretch()
+
+ # --- Пороги ---
+ thr_box = QGroupBox("Пороговые значения")
+ thr_form = QFormLayout(thr_box)
+ thr_form.setLabelAlignment(Qt.AlignRight)
+
+ self.ccn_warn = self._spinbox(1, 100, 10)
+ self.ccn_crit = self._spinbox(1, 100, 20)
+ self.coup_warn = self._spinbox(1, 100, 5)
+ self.coup_crit = self._spinbox(1, 100, 10)
+
+ thr_form.addRow("CCN предупрежд.:", self.ccn_warn)
+ thr_form.addRow("CCN критическое:", self.ccn_crit)
+ thr_form.addRow("Связность вых. (пред.):", self.coup_warn)
+ thr_form.addRow("Связность вых. (крит.):", self.coup_crit)
+
+ # --- Кнопка запуска ---
+ self.run_btn = QPushButton("▶ Запустить анализ")
+ self.run_btn.setMinimumHeight(40)
+ self.run_btn.setStyleSheet(
+ "QPushButton { background: #2980b9; color: white; font-weight: bold; "
+ "border-radius: 4px; font-size: 13px; }"
+ "QPushButton:hover { background: #3498db; }"
+ "QPushButton:disabled { background: #7f8c8d; }"
+ )
+
+ layout.addWidget(proj_box)
+ layout.addWidget(fmt_box)
+ layout.addWidget(thr_box)
+ layout.addStretch()
+ layout.addWidget(self.run_btn)
+
+ @staticmethod
+ def _spinbox(minimum, maximum, default) -> QSpinBox:
+ sb = QSpinBox()
+ sb.setRange(minimum, maximum)
+ sb.setValue(default)
+ return sb
+
+ def _browse_project(self):
+ d = QFileDialog.getExistingDirectory(self, "Выберите директорию проекта")
+ if d:
+ self.project_edit.setText(d)
+
+ def _browse_output(self):
+ d = QFileDialog.getExistingDirectory(self, "Директория для отчётов")
+ if d:
+ self.output_edit.setText(d)
+
+ def _browse_libclang(self):
+ f, _ = QFileDialog.getOpenFileName(self, "Путь к libclang", "",
+ "Библиотеки (*.so *.dylib *.dll);;Все файлы (*)")
+ if f:
+ self.libclang_edit.setText(f)
+
+ def build_config(self) -> AnalyzerConfig:
+ formats = []
+ if self.fmt_json.isChecked():
+ formats.append("json")
+ if self.fmt_html.isChecked():
+ formats.append("html")
+ if not formats:
+ formats = ["json"]
+
+ thresholds = ThresholdConfig(
+ ccn_warn=self.ccn_warn.value(),
+ ccn_critical=self.ccn_crit.value(),
+ coupling_out_warn=self.coup_warn.value(),
+ coupling_out_critical=self.coup_crit.value(),
+ )
+ libclang = self.libclang_edit.text().strip() or None
+ return AnalyzerConfig(
+ output_formats=formats,
+ output_dir=self.output_edit.text().strip() or "legacy_report",
+ libclang_path=libclang,
+ thresholds=thresholds,
+ )
+
+
+# ---------------------------------------------------------------------------
+# Панель лога (правая верхняя)
+# ---------------------------------------------------------------------------
+
+class _LogPanel(QTextEdit):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.setReadOnly(True)
+ self.setFont(QFont("Monospace", 9))
+ self.setStyleSheet("background: #1e1e1e; color: #ecf0f1;")
+
+ def append_log(self, message: str, level: str):
+ color = LOG_LEVEL_COLORS.get(level, "#ecf0f1")
+ html = f'{message}'
+ self.append(html)
+ self.moveCursor(QTextCursor.End)
+
+ def clear_log(self):
+ self.clear()
+
+
+# ---------------------------------------------------------------------------
+# Панель результатов (правая нижняя)
+# ---------------------------------------------------------------------------
+
+class _ResultsPanel(QWidget):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self._html_path: str = ""
+ self._build_ui()
+ self.setVisible(False)
+
+ def _build_ui(self):
+ layout = QVBoxLayout(self)
+ layout.setContentsMargins(8, 4, 8, 8)
+ layout.setSpacing(6)
+
+ # Заголовок
+ title = QLabel("Результаты анализа")
+ title.setStyleSheet("font-weight: bold; font-size: 13px;")
+ layout.addWidget(title)
+
+ # Сводка
+ self._summary = QLabel()
+ self._summary.setWordWrap(True)
+ self._summary.setStyleSheet("font-size: 12px;")
+ layout.addWidget(self._summary)
+
+ # Таблица решений
+ self._table = QTableWidget()
+ self._table.setColumnCount(4)
+ self._table.setHorizontalHeaderLabels(["Модуль", "Риск", "Стратегия", "Причины"])
+ self._table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch)
+ self._table.horizontalHeader().setSectionResizeMode(3, QHeaderView.Stretch)
+ self._table.setEditTriggers(QTableWidget.NoEditTriggers)
+ self._table.setSelectionBehavior(QTableWidget.SelectRows)
+ self._table.setAlternatingRowColors(True)
+ layout.addWidget(self._table)
+
+ # Кнопка открытия отчёта
+ self._open_btn = QPushButton("Открыть HTML отчёт")
+ self._open_btn.setStyleSheet(
+ "QPushButton { background: #27ae60; color: white; border-radius: 4px; padding: 6px; }"
+ "QPushButton:hover { background: #2ecc71; }"
+ "QPushButton:disabled { background: #7f8c8d; }"
+ )
+ self._open_btn.clicked.connect(self._open_html)
+ self._open_btn.setEnabled(False)
+ layout.addWidget(self._open_btn)
+
+ def show_report(self, report, output_dir: str):
+ from models import RiskLevel
+
+ risk = report.system_risk_level
+ strategy = report.recommended_system_strategy
+ color = RISK_COLORS.get(risk, "#ecf0f1")
+ risk_ru = RISK_RU.get(risk, risk.name)
+ strategy_ru = STRATEGY_RU.get(strategy, strategy.name)
+
+ summary_html = (
+ f"Системный риск: {risk_ru} | "
+ f"Стратегия: {strategy_ru}
"
+ f"Модулей: {len(report.modules)} | "
+ f"Функций: {report.total_functions} | "
+ f"Ср. CCN: {report.avg_system_ccn:.2f} | "
+ f"Циклов зависим.: {len(report.dependency_cycles)}"
+ )
+ self._summary.setText(summary_html)
+
+ # Заполняем таблицу
+ self._table.setRowCount(len(report.decisions))
+ for row, decision in enumerate(report.decisions):
+ r = decision.risk_level
+ bg = QColor(RISK_BG.get(r, "#ffffff"))
+ fg = QColor(RISK_COLORS.get(r, "#000000"))
+
+ items = [
+ decision.module_name,
+ RISK_RU.get(r, r.name),
+ STRATEGY_RU.get(decision.strategy, decision.strategy.name),
+ "; ".join(decision.reasons) if decision.reasons else "—",
+ ]
+ for col, text in enumerate(items):
+ item = QTableWidgetItem(text)
+ item.setBackground(bg)
+ if col == 1:
+ item.setForeground(fg)
+ item.setFont(QFont("", -1, QFont.Bold))
+ self._table.setItem(row, col, item)
+
+ self._table.resizeRowsToContents()
+
+ # HTML отчёт
+ html_path = Path(output_dir) / "report.html"
+ if not html_path.is_absolute():
+ html_path = Path.cwd() / html_path
+ if html_path.exists():
+ self._html_path = str(html_path)
+ self._open_btn.setEnabled(True)
+ else:
+ self._html_path = ""
+ self._open_btn.setEnabled(False)
+
+ self.setVisible(True)
+
+ def _open_html(self):
+ if self._html_path:
+ import webbrowser
+ webbrowser.open(f"file://{self._html_path}")
+
+
+# ---------------------------------------------------------------------------
+# Главное окно
+# ---------------------------------------------------------------------------
+
+class MainWindow(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.setWindowTitle("Legacy Analyzer")
+ self.resize(1100, 700)
+ self._worker: AnalysisWorker | None = None
+ self._build_ui()
+
+ def _build_ui(self):
+ central = QWidget()
+ self.setCentralWidget(central)
+ root_layout = QHBoxLayout(central)
+ root_layout.setContentsMargins(6, 6, 6, 6)
+ root_layout.setSpacing(6)
+
+ # Левая панель — настройки
+ self._settings = _SettingsPanel()
+ self._settings.setFixedWidth(320)
+ self._settings.run_btn.clicked.connect(self._run_analysis)
+
+ # Правая панель — лог + результаты
+ right_splitter = QSplitter(Qt.Vertical)
+
+ self._log = _LogPanel()
+ self._log.setMinimumHeight(150)
+
+ self._results = _ResultsPanel()
+ self._results.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
+
+ right_splitter.addWidget(self._log)
+ right_splitter.addWidget(self._results)
+ right_splitter.setSizes([300, 300])
+
+ root_layout.addWidget(self._settings)
+ root_layout.addWidget(right_splitter, stretch=1)
+
+ def _run_analysis(self):
+ project_root = self._settings.project_edit.text().strip()
+ if not project_root:
+ self._log.append_log("Укажите путь к проекту.", "ERROR")
+ return
+ if not Path(project_root).exists():
+ self._log.append_log(f"Директория не найдена: {project_root}", "ERROR")
+ return
+
+ config = self._settings.build_config()
+
+ self._log.clear_log()
+ self._results.setVisible(False)
+ self._settings.run_btn.setEnabled(False)
+ self._settings.run_btn.setText("⏳ Анализ...")
+
+ self._worker = AnalysisWorker(project_root, config)
+ self._worker.log_signal.connect(self._log.append_log)
+ self._worker.finished_signal.connect(self._on_finished)
+ self._worker.error_signal.connect(self._on_error)
+ self._worker.start()
+
+ def _on_finished(self, report):
+ self._reset_run_btn()
+ output_dir = self._settings.output_edit.text().strip() or "legacy_report"
+ self._results.show_report(report, output_dir)
+ self._log.append_log("Анализ завершён.", "INFO")
+
+ def _on_error(self, message: str):
+ self._reset_run_btn()
+ self._log.append_log(f"Ошибка: {message}", "ERROR")
+
+ def _reset_run_btn(self):
+ self._settings.run_btn.setEnabled(True)
+ self._settings.run_btn.setText("▶ Запустить анализ")
+
+
+# ---------------------------------------------------------------------------
+# Точка входа
+# ---------------------------------------------------------------------------
+
+def main():
+ app = QApplication(sys.argv)
+ app.setStyle("Fusion")
+ window = MainWindow()
+ window.show()
+ sys.exit(app.exec_())
+
+
+if __name__ == "__main__":
+ main()
diff --git a/prog/arch-researcher/legacy_report/report.html b/prog/arch-researcher/legacy_report/report.html
new file mode 100644
index 0000000..8e5c312
--- /dev/null
+++ b/prog/arch-researcher/legacy_report/report.html
@@ -0,0 +1,271 @@
+
+
+
+
+
+Legacy Analyzer — Отчёт
+
+
+
+
+📊 Legacy Analyzer
+
+ Проект: /home/ilya/A |
+ Сгенерировано: 21.05.2026 08:08 |
+ Системный риск: Высокий
+
+
+Сводка по системе
+
+
+
+
5,186
+
Строк кода (NLOC)
+
+
+
+
+
+
1
+
Циклов зависимостей
+
+
+
Высокий
+
Системный риск
+
+
+
Реинжиниринг
+
Рекомендуемая стратегия
+
+
+
+Таблица решений по модулям
+
+
+
+ | Модуль | Риск | Стратегия | Паттерн | Приоритет | Причины |
+
+
+ helpers/memenv |
+ Высокий |
+ Реинжиниринг |
+ Anti-Corruption Layer: изоляция модуля от циклических зависимостей |
+ 390 |
+ - Высокая нестабильность: I=0.75 (порог 0.7)
- Участвует в циклических зависимостях — признак архитектурной деградации
|
+
+ table |
+ Высокий |
+ Реинжиниринг |
+ Anti-Corruption Layer: изоляция модуля от циклических зависимостей |
+ 390 |
+ - Высокая нестабильность: I=0.75 (порог 0.7)
- Участвует в циклических зависимостях — признак архитектурной деградации
|
+
+ util |
+ Высокий |
+ Реинжиниринг |
+ Anti-Corruption Layer: изоляция модуля от циклических зависимостей |
+ 470 |
+ - Участвует в циклических зависимостях — признак архитектурной деградации
|
+
+ db |
+ Высокий |
+ Реинжиниринг |
+ Anti-Corruption Layer: изоляция модуля от циклических зависимостей |
+ 480 |
+ - Участвует в циклических зависимостях — признак архитектурной деградации
|
+
+ port |
+ Низкий |
+ Оставить |
+ — |
+ 960 |
+ — |
+
+ include/leveldb |
+ Низкий |
+ Оставить |
+ — |
+ 1000 |
+ — |
+
+
+
+
+Циклические зависимости (1)
+Цикл 1: dbhelpers/memenvtableutil
+
+Детализация по модулям
+
+
+
⚠ Участвует в цикле зависимостей
+
+ | Язык | cpp |
+ | NLOC | 2,664 |
+ | Функций | 455 |
+ | Avg CCN | 1.7 |
+ | Max CCN | 12 |
+ | C_out / C_in | 3 / 2 |
+ | Нестабильность (I) | 0.60 |
+
+
Топ функций по сложности
+
+ | Функция | CCN | NLOC | Параметры | Расположение |
+ CompareIterators | 12 | 71 | 5 | db_test.cc:1843 |
BuildTable | 11 | 49 | 6 | builder.cc:2 |
NewWritableFile | 11 | 71 | 2 | db_test.cc:116 |
ParseFileName | 11 | 39 | 3 | filename.cc:55 |
ScanTable | 10 | 51 | 1 | repair.cc:166 |
+
+
+
+
⚠ Участвует в цикле зависимостей
+
+ | Язык | cpp |
+ | NLOC | 176 |
+ | Функций | 31 |
+ | Avg CCN | 1.8 |
+ | Max CCN | 6 |
+ | C_out / C_in | 3 / 1 |
+ | Нестабильность (I) | 0.75 |
+
+
Топ функций по сложности
+
+ | Функция | CCN | NLOC | Параметры | Расположение |
+ Read | 6 | 30 | 4 | memenv.cc:39 |
Append | 4 | 21 | 1 | memenv.cc:85 |
Unref | 3 | 12 | 0 | memenv.cc:16 |
Skip | 3 | 9 | 1 | memenv.cc:139 |
GetChildren | 3 | 10 | 2 | memenv.cc:259 |
+
+
+
+
+
+ | Язык | cpp |
+ | NLOC | 43 |
+ | Функций | 41 |
+ | Avg CCN | 1.0 |
+ | Max CCN | 1 |
+ | C_out / C_in | 0 / 0 |
+ | Нестабильность (I) | 0.00 |
+
+
Топ функций по сложности
+
+ | Функция | CCN | NLOC | Параметры | Расположение |
+ Prune | 1 | 0 | 0 | cache.h:16 |
target | 1 | 1 | 0 | env.h:116 |
NewSequentialFile | 1 | 1 | 2 | env.h:116 |
NewRandomAccessFile | 1 | 1 | 2 | env.h:119 |
NewWritableFile | 1 | 1 | 2 | env.h:123 |
+
+
+
+
+
+ | Язык | cpp |
+ | NLOC | 94 |
+ | Функций | 10 |
+ | Avg CCN | 2.2 |
+ | Max CCN | 4 |
+ | C_out / C_in | 0 / 4 |
+ | Нестабильность (I) | 0.00 |
+
+
Топ функций по сложности
+
+ | Функция | CCN | NLOC | Параметры | Расположение |
+ Zstd_Compress | 4 | 24 | 4 | port_stdcxx.h:93 |
Zstd_Uncompress | 4 | 18 | 3 | port_stdcxx.h:136 |
Zstd_GetUncompressedLength | 3 | 11 | 3 | port_stdcxx.h:123 |
Snappy_Compress | 2 | 12 | 3 | port_stdcxx.h:57 |
Snappy_GetUncompressedLength | 2 | 8 | 3 | port_stdcxx.h:74 |
+
+
+
+
⚠ Участвует в цикле зависимостей
+
+ | Язык | cpp |
+ | NLOC | 692 |
+ | Функций | 132 |
+ | Avg CCN | 1.8 |
+ | Max CCN | 17 |
+ | C_out / C_in | 3 / 1 |
+ | Нестабильность (I) | 0.75 |
+
+
Топ функций по сложности
+
+ | Функция | CCN | NLOC | Параметры | Расположение |
+ TestRandomAccess | 17 | 61 | 3 | table_test.cc:434 |
ReadBlock | 13 | 79 | 4 | format.cc:51 |
Seek | 11 | 44 | 1 | block.cc:110 |
DecodeEntry | 7 | 15 | 5 | block.cc:29 |
Init | 6 | 22 | 1 | table_test.cc:360 |
+
+
+
+
⚠ Участвует в цикле зависимостей
+
+ | Язык | cpp |
+ | NLOC | 1,517 |
+ | Функций | 206 |
+ | Avg CCN | 2.0 |
+ | Max CCN | 17 |
+ | C_out / C_in | 2 / 3 |
+ | Нестабильность (I) | 0.40 |
+
+
Топ функций по сложности
+
+ | Функция | CCN | NLOC | Параметры | Расположение |
+ Extend | 17 | 73 | 3 | crc32c.cc:254 |
GetChildren | 7 | 24 | 2 | env_windows.cc:417 |
Logv | 7 | 58 | 2 | posix_logger.h:13 |
Logv | 7 | 55 | 2 | windows_logger.h:13 |
NewRandomAccessFile | 6 | 27 | 2 | env_posix.cc:372 |
+
+
+
+
+
+ Legacy Analyzer — методический инструментарий модернизации унаследованных систем
+
+
\ No newline at end of file
diff --git a/prog/arch-researcher/legacy_report/report.json b/prog/arch-researcher/legacy_report/report.json
index 131dd3f..b17a884 100644
--- a/prog/arch-researcher/legacy_report/report.json
+++ b/prog/arch-researcher/legacy_report/report.json
@@ -1,49 +1,48 @@
{
- "generated_at": "2026-05-11T13:38:33.090534",
- "project_root": "/home/claude/vkr/B",
+ "generated_at": "2026-05-21T08:08:36.099016",
+ "project_root": "/home/ilya/A",
"summary": {
- "total_files": 22,
- "total_nloc": 1137,
- "total_functions": 68,
- "avg_system_ccn": 3.78,
+ "total_files": 126,
+ "total_nloc": 5186,
+ "total_functions": 875,
+ "avg_system_ccn": 1.77,
"system_risk_level": "HIGH",
"recommended_system_strategy": "REENGINEER",
"dependency_cycles_count": 1
},
"dependency_cycles": [
[
- "src",
- "src/database",
- "src/error-handlers",
- "src/middlewares",
- "src/routes"
+ "db",
+ "helpers/memenv",
+ "table",
+ "util"
]
],
"decisions": [
{
- "module": "src/routes",
- "risk_level": "CRITICAL",
- "strategy": "REPLACE",
- "recommended_pattern": "Strangler Fig + Anti-Corruption Layer: замена с изоляцией от цикла",
- "priority": 190,
+ "module": "helpers/memenv",
+ "risk_level": "HIGH",
+ "strategy": "REENGINEER",
+ "recommended_pattern": "Anti-Corruption Layer: изоляция модуля от циклических зависимостей",
+ "priority": 390,
"reasons": [
- "Критическая CCN: max=21 (порог 20)",
"Высокая нестабильность: I=0.75 (порог 0.7)",
"Участвует в циклических зависимостях — признак архитектурной деградации"
]
},
{
- "module": "src",
+ "module": "table",
"risk_level": "HIGH",
"strategy": "REENGINEER",
"recommended_pattern": "Anti-Corruption Layer: изоляция модуля от циклических зависимостей",
- "priority": 460,
+ "priority": 390,
"reasons": [
+ "Высокая нестабильность: I=0.75 (порог 0.7)",
"Участвует в циклических зависимостях — признак архитектурной деградации"
]
},
{
- "module": "src/middlewares",
+ "module": "util",
"risk_level": "HIGH",
"strategy": "REENGINEER",
"recommended_pattern": "Anti-Corruption Layer: изоляция модуля от циклических зависимостей",
@@ -53,7 +52,7 @@
]
},
{
- "module": "src/database",
+ "module": "db",
"risk_level": "HIGH",
"strategy": "REENGINEER",
"recommended_pattern": "Anti-Corruption Layer: изоляция модуля от циклических зависимостей",
@@ -63,707 +62,7291 @@
]
},
{
- "module": "src/error-handlers",
- "risk_level": "HIGH",
- "strategy": "REENGINEER",
- "recommended_pattern": "Anti-Corruption Layer: изоляция модуля от циклических зависимостей",
- "priority": 490,
- "reasons": [
- "Участвует в циклических зависимостях — признак архитектурной деградации"
- ]
+ "module": "port",
+ "risk_level": "LOW",
+ "strategy": "KEEP",
+ "recommended_pattern": "",
+ "priority": 960,
+ "reasons": []
+ },
+ {
+ "module": "include/leveldb",
+ "risk_level": "LOW",
+ "strategy": "KEEP",
+ "recommended_pattern": "",
+ "priority": 1000,
+ "reasons": []
}
],
"modules": {
- "src": {
+ "db": {
"files": [
- "/home/claude/vkr/B/src/config.mjs",
- "/home/claude/vkr/B/src/index.mjs",
- "/home/claude/vkr/B/src/utils.mjs"
+ "/home/ilya/A/db/autocompact_test.cc",
+ "/home/ilya/A/db/builder.cc",
+ "/home/ilya/A/db/builder.h",
+ "/home/ilya/A/db/c.cc",
+ "/home/ilya/A/db/c_test.c",
+ "/home/ilya/A/db/corruption_test.cc",
+ "/home/ilya/A/db/db_impl.cc",
+ "/home/ilya/A/db/db_impl.h",
+ "/home/ilya/A/db/db_iter.cc",
+ "/home/ilya/A/db/db_iter.h",
+ "/home/ilya/A/db/db_test.cc",
+ "/home/ilya/A/db/dbformat.cc",
+ "/home/ilya/A/db/dbformat.h",
+ "/home/ilya/A/db/dbformat_test.cc",
+ "/home/ilya/A/db/dumpfile.cc",
+ "/home/ilya/A/db/fault_injection_test.cc",
+ "/home/ilya/A/db/filename.cc",
+ "/home/ilya/A/db/filename.h",
+ "/home/ilya/A/db/filename_test.cc",
+ "/home/ilya/A/db/leveldbutil.cc",
+ "/home/ilya/A/db/log_format.h",
+ "/home/ilya/A/db/log_reader.cc",
+ "/home/ilya/A/db/log_reader.h",
+ "/home/ilya/A/db/log_test.cc",
+ "/home/ilya/A/db/log_writer.cc",
+ "/home/ilya/A/db/log_writer.h",
+ "/home/ilya/A/db/memtable.cc",
+ "/home/ilya/A/db/memtable.h",
+ "/home/ilya/A/db/recovery_test.cc",
+ "/home/ilya/A/db/repair.cc",
+ "/home/ilya/A/db/skiplist.h",
+ "/home/ilya/A/db/skiplist_test.cc",
+ "/home/ilya/A/db/snapshot.h",
+ "/home/ilya/A/db/table_cache.cc",
+ "/home/ilya/A/db/table_cache.h",
+ "/home/ilya/A/db/version_edit.cc",
+ "/home/ilya/A/db/version_edit.h",
+ "/home/ilya/A/db/version_edit_test.cc",
+ "/home/ilya/A/db/version_set.cc",
+ "/home/ilya/A/db/version_set.h",
+ "/home/ilya/A/db/version_set_test.cc",
+ "/home/ilya/A/db/write_batch.cc",
+ "/home/ilya/A/db/write_batch_internal.h",
+ "/home/ilya/A/db/write_batch_test.cc"
],
- "language": "mixed",
- "total_nloc": 166,
- "total_functions": 22,
- "avg_ccn": 1.77,
- "max_ccn": 8,
- "heavy_functions_count": 0,
- "heavy_functions_ratio": 0.0,
- "coupling_out": 4,
- "coupling_in": 4,
- "instability": 0.5,
+ "language": "cpp",
+ "total_nloc": 2664,
+ "total_functions": 455,
+ "avg_ccn": 1.7,
+ "max_ccn": 12,
+ "heavy_functions_count": 4,
+ "heavy_functions_ratio": 0.009,
+ "coupling_out": 3,
+ "coupling_in": 2,
+ "instability": 0.6,
"has_cycles": true,
"dependencies": [
- "src/database",
- "src/error-handlers",
- "src/middlewares",
- "src/routes"
+ "port",
+ "table",
+ "util"
],
"dependents": [
- "src/database",
- "src/error-handlers",
- "src/middlewares",
- "src/routes"
+ "helpers/memenv",
+ "table"
],
"functions": [
{
- "name": "isPng",
- "file": "/home/claude/vkr/B/src/utils.mjs",
- "line": 10,
- "ccn": 8,
- "nloc": 11,
- "params": 1
+ "name": "CompareIterators",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1843,
+ "ccn": 12,
+ "nloc": 71,
+ "params": 5
},
{
- "name": "warmupExtract",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 101,
- "ccn": 3,
- "nloc": 12,
- "params": 4
+ "name": "BuildTable",
+ "file": "/home/ilya/A/db/builder.cc",
+ "line": 2,
+ "ccn": 11,
+ "nloc": 49,
+ "params": 6
},
{
- "name": "isJpeg",
- "file": "/home/claude/vkr/B/src/utils.mjs",
- "line": 3,
- "ccn": 3,
- "nloc": 6,
- "params": 1
- },
- {
- "name": "createDbConnection",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 29,
- "ccn": 2,
- "nloc": 24,
- "params": 0
- },
- {
- "name": "generateApiPrefix",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 54,
- "ccn": 2,
- "nloc": 5,
+ "name": "NewWritableFile",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 116,
+ "ccn": 11,
+ "nloc": 71,
"params": 2
},
{
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 123,
- "ccn": 2,
- "nloc": 11,
+ "name": "ParseFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 55,
+ "ccn": 11,
+ "nloc": 39,
+ "params": 3
+ },
+ {
+ "name": "ScanTable",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 166,
+ "ccn": 10,
+ "nloc": 51,
+ "params": 1
+ },
+ {
+ "name": "AllEntriesFor",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 327,
+ "ccn": 9,
+ "nloc": 39,
+ "params": 1
+ },
+ {
+ "name": "DumpTable",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 114,
+ "ccn": 9,
+ "nloc": 56,
+ "params": 3
+ },
+ {
+ "name": "FindFiles",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 37,
+ "ccn": 9,
+ "nloc": 28,
"params": 0
},
+ {
+ "name": "RepairTable",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 211,
+ "ccn": 9,
+ "nloc": 42,
+ "params": 2
+ },
+ {
+ "name": "WriteDescriptor",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 249,
+ "ccn": 9,
+ "nloc": 46,
+ "params": 0
+ },
+ {
+ "name": "ReadStep",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 154,
+ "ccn": 9,
+ "nloc": 42,
+ "params": 1
+ },
+ {
+ "name": "Corrupt",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 88,
+ "ccn": 8,
+ "nloc": 37,
+ "params": 3
+ },
+ {
+ "name": "SaveTo",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 525,
+ "ccn": 8,
+ "nloc": 34,
+ "params": 1
+ },
+ {
+ "name": "ConvertLogToTable",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 83,
+ "ccn": 7,
+ "nloc": 61,
+ "params": 1
+ },
+ {
+ "name": "Match",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 258,
+ "ccn": 7,
+ "nloc": 30,
+ "params": 3
+ },
+ {
+ "name": "DestroyDB",
+ "file": "/home/ilya/A/db/db_impl.cc",
+ "line": 1264,
+ "ccn": 6,
+ "nloc": 26,
+ "params": 2
+ },
+ {
+ "name": "SomeFileOverlapsRange",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 78,
+ "ccn": 6,
+ "nloc": 22,
+ "params": 5
+ },
+ {
+ "name": "PrintContents",
+ "file": "/home/ilya/A/db/write_batch_test.cc",
+ "line": 2,
+ "ccn": 6,
+ "nloc": 37,
+ "params": 1
+ },
{
"name": "main",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 139,
- "ccn": 2,
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 129,
+ "ccn": 5,
+ "nloc": 208,
+ "params": 2
+ },
+ {
+ "name": "Check",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 57,
+ "ccn": 5,
+ "nloc": 33,
+ "params": 2
+ },
+ {
+ "name": "DumpFile",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 159,
+ "ccn": 5,
+ "nloc": 15,
+ "params": 3
+ },
+ {
+ "name": "Truncate",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 20,
+ "ccn": 5,
+ "nloc": 24,
+ "params": 2
+ },
+ {
+ "name": "Verify",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 354,
+ "ccn": 5,
+ "nloc": 18,
+ "params": 3
+ },
+ {
+ "name": "Apply",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 500,
+ "ccn": 5,
+ "nloc": 19,
+ "params": 1
+ },
+ {
+ "name": "CmpCompare",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 86,
+ "ccn": 4,
+ "nloc": 7,
+ "params": 5
+ },
+ {
+ "name": "SanitizeOptions",
+ "file": "/home/ilya/A/db/db_impl.cc",
+ "line": 62,
+ "ccn": 4,
+ "nloc": 19,
+ "params": 4
+ },
+ {
+ "name": "GetChildren",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 66,
+ "ccn": 4,
+ "nloc": 13,
+ "params": 2
+ },
+ {
+ "name": "CurrentOptions",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 233,
+ "ccn": 4,
+ "nloc": 16,
+ "params": 0
+ },
+ {
+ "name": "MTThreadBody",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1669,
+ "ccn": 4,
+ "nloc": 34,
+ "params": 1
+ },
+ {
+ "name": "Run",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 19,
+ "ccn": 4,
"nloc": 19,
"params": 0
},
{
- "name": "toFixedOne",
- "file": "/home/claude/vkr/B/src/utils.mjs",
+ "name": "RunConcurrent",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 246,
+ "ccn": 4,
+ "nloc": 17,
+ "params": 1
+ },
+ {
+ "name": "SaveValue",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 191,
+ "ccn": 4,
+ "nloc": 12,
+ "params": 3
+ },
+ {
+ "name": "FindLargestKey",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 1066,
+ "ccn": 4,
+ "nloc": 11,
+ "params": 3
+ },
+ {
+ "name": "FindSmallestBoundaryFile",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 1080,
+ "ccn": 4,
+ "nloc": 14,
+ "params": 3
+ },
+ {
+ "name": "AddBoundaryInputs",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 1106,
+ "ccn": 4,
+ "nloc": 15,
+ "params": 3
+ },
+ {
+ "name": "SaveError",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 129,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 2
+ },
+ {
+ "name": "leveldb_get",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 188,
+ "ccn": 3,
+ "nloc": 13,
+ "params": 6
+ },
+ {
+ "name": "CheckEqual",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 25,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 3
+ },
+ {
+ "name": "CheckPut",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 64,
+ "ccn": 3,
+ "nloc": 13,
+ "params": 5
+ },
+ {
+ "name": "Build",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 34,
+ "ccn": 3,
+ "nloc": 12,
+ "params": 1
+ },
+ {
+ "name": "ClipToRange",
+ "file": "/home/ilya/A/db/db_impl.cc",
+ "line": 54,
+ "ccn": 3,
+ "nloc": 2,
+ "params": 3
+ },
+ {
+ "name": "DumpInternalIter",
+ "file": "/home/ilya/A/db/db_iter.cc",
+ "line": 3,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 1
+ },
+ {
+ "name": "Sync",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 141,
+ "ccn": 3,
+ "nloc": 7,
+ "params": 0
+ },
+ {
+ "name": "Get",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 283,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 2
+ },
+ {
+ "name": "Contents",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 296,
+ "ccn": 3,
+ "nloc": 19,
+ "params": 0
+ },
+ {
+ "name": "FilesPerLevel",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 381,
+ "ccn": 3,
+ "nloc": 13,
+ "params": 0
+ },
+ {
+ "name": "DumpFileCounts",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 422,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 1
+ },
+ {
+ "name": "DeleteAnSSTFile",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 455,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 0
+ },
+ {
+ "name": "RenameLDBToSST",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 471,
+ "ccn": 3,
+ "nloc": 14,
+ "params": 0
+ },
+ {
+ "name": "TEST_F",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 896,
+ "ccn": 3,
+ "nloc": 17,
+ "params": 2
+ },
+ {
+ "name": "TEST_F",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1476,
+ "ccn": 3,
+ "nloc": 15,
+ "params": 2
+ },
+ {
+ "name": "WriteBatchPrinter",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 67,
+ "ccn": 3,
+ "nloc": 22,
+ "params": 3
+ },
+ {
+ "name": "ResetDBState",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 400,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 1
+ },
+ {
+ "name": "SetCurrentFile",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 90,
+ "ccn": 3,
+ "nloc": 13,
+ "params": 3
+ },
+ {
+ "name": "HandleDumpCommand",
+ "file": "/home/ilya/A/db/leveldbutil.cc",
+ "line": 16,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 3
+ },
+ {
+ "name": "main",
+ "file": "/home/ilya/A/db/leveldbutil.cc",
+ "line": 28,
+ "ccn": 3,
+ "nloc": 15,
+ "params": 2
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 43,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 0
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 154,
+ "ccn": 3,
+ "nloc": 13,
+ "params": 3
+ },
+ {
+ "name": "OpenWithStatus",
+ "file": "/home/ilya/A/db/recovery_test.cc",
"line": 31,
+ "ccn": 3,
+ "nloc": 12,
+ "params": 1
+ },
+ {
+ "name": "Get",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 56,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "GetFiles",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 98,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 1
+ },
+ {
+ "name": "ConvertLogFilesToTables",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 70,
+ "ccn": 3,
+ "nloc": 9,
+ "params": 0
+ },
+ {
+ "name": "RandomTarget",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 132,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 1
+ },
+ {
+ "name": "FindFile",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 43,
+ "ccn": 3,
+ "nloc": 12,
+ "params": 3
+ },
+ {
+ "name": "MaybeAddFile",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 578,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 3
+ },
+ {
+ "name": "CreateFilter",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 99,
+ "ccn": 2,
+ "nloc": 10,
+ "params": 3
+ },
+ {
+ "name": "leveldb_open",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 148,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 3
+ },
+ {
+ "name": "leveldb_property_value",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 220,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "leveldb_approximate_sizes",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 227,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 7
+ },
+ {
+ "name": "leveldb_env_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 510,
+ "ccn": 2,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "leveldb_env_get_test_directory",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 514,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 1
+ },
+ {
+ "name": "Free",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 33,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "Property",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 131,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 1
+ },
+ {
+ "name": "Corruption",
+ "file": "/home/ilya/A/db/db_impl.cc",
+ "line": 305,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "CleanupIteratorState",
+ "file": "/home/ilya/A/db/db_impl.cc",
+ "line": 885,
"ccn": 2,
"nloc": 7,
"params": 2
},
{
- "name": "float32ArrayFromBuffer",
- "file": "/home/claude/vkr/B/src/utils.mjs",
+ "name": "status",
+ "file": "/home/ilya/A/db/db_iter.cc",
"line": 43,
"ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "ClearSavedValue",
+ "file": "/home/ilya/A/db/db_iter.cc",
+ "line": 57,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 0
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 126,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 132,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 0
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 159,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "Sync",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 168,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "NewRandomAccessFile",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 185,
+ "ccn": 2,
+ "nloc": 19,
+ "params": 2
+ },
+ {
+ "name": "ChangeOptions",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 226,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 0
+ },
+ {
+ "name": "TryReopen",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 260,
+ "ccn": 2,
+ "nloc": 11,
+ "params": 1
+ },
+ {
+ "name": "TotalTableFiles",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 374,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "MakeTables",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 409,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 3
+ },
+ {
+ "name": "IterStatus",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 446,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 1
+ },
+ {
+ "name": "Between",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1045,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 3
+ },
+ {
+ "name": "NewIterator",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1759,
+ "ccn": 2,
"nloc": 9,
"params": 1
},
{
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 26,
+ "name": "GetApproximateSizes",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1801,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 3
+ },
+ {
+ "name": "SeekToLast",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1819,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "ParseInternalKey",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 91,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "GuessType",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 3,
+ "ccn": 2,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "VersionEditPrinter",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 97,
+ "ccn": 2,
+ "nloc": 12,
+ "params": 3
+ },
+ {
+ "name": "GetDirName",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 7,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "Build",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 335,
+ "ccn": 2,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "DeleteAllData",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 391,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "DoTest",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 442,
+ "ccn": 2,
+ "nloc": 16,
+ "params": 0
+ },
+ {
+ "name": "BigString",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 2,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "MatchError",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 83,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "WriteInitialOffsetLog",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 91,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "CheckInitialOffsetRecord",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 115,
+ "ccn": 2,
+ "nloc": 18,
+ "params": 2
+ },
+ {
+ "name": "Skip",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 167,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "InitTypeCrc",
+ "file": "/home/ilya/A/db/log_writer.cc",
+ "line": 2,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "Unref",
+ "file": "/home/ilya/A/db/memtable.h",
+ "line": 17,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "CanAppend",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 18,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 0
+ },
+ {
+ "name": "ManifestFileName",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 67,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 0
+ },
+ {
+ "name": "RemoveLogFiles",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 80,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 0
+ },
+ {
+ "name": "ExtractMetaData",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 151,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "ArchiveFile",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 296,
+ "ccn": 2,
+ "nloc": 13,
+ "params": 1
+ },
+ {
+ "name": "rnd_",
+ "file": "/home/ilya/A/db/skiplist.h",
+ "line": 195,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "State",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 145,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "TEST",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 201,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "ConcurrentReader",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 235,
+ "ccn": 2,
+ "nloc": 9,
+ "params": 1
+ },
+ {
+ "name": "New",
+ "file": "/home/ilya/A/db/snapshot.h",
+ "line": 28,
+ "ccn": 2,
+ "nloc": 10,
+ "params": 1
+ },
+ {
+ "name": "Delete",
+ "file": "/home/ilya/A/db/snapshot.h",
+ "line": 49,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "GetInternalKey",
+ "file": "/home/ilya/A/db/version_edit.cc",
+ "line": 72,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "GetLevel",
+ "file": "/home/ilya/A/db/version_edit.cc",
+ "line": 78,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 2
+ },
+ {
+ "name": "MaxBytesForLevel",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 18,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "TotalFileSize",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 29,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "Prev",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 126,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 0
+ },
+ {
+ "name": "GetFileIterator",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 147,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "Match",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 330,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 3
+ },
+ {
+ "name": "Corruption",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 677,
+ "ccn": 2,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "overlapped_bytes_",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 1219,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "ReuseFileNumber",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 97,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "AutoCompactTest",
+ "file": "/home/ilya/A/db/autocompact_test.cc",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 7,
+ "params": 0
+ },
+ {
+ "name": "Key",
+ "file": "/home/ilya/A/db/autocompact_test.cc",
+ "line": 18,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "Size",
+ "file": "/home/ilya/A/db/autocompact_test.cc",
+ "line": 21,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "Compare",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 71,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 79,
"ccn": 1,
"nloc": 1,
"params": 0
},
{
- "name": "sleep",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 24,
+ "name": "FindShortestSeparator",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 83,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 2
+ },
+ {
+ "name": "FindShortSuccessor",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 89,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 98,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "KeyMayMatch",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 112,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "CopyString",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 138,
"ccn": 1,
"nloc": 4,
"params": 1
},
{
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 64,
+ "name": "leveldb_close",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 161,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "leveldb_put",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 163,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 7
+ },
+ {
+ "name": "leveldb_delete",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 171,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 5
+ },
+ {
+ "name": "leveldb_write",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 184,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 4
+ },
+ {
+ "name": "leveldb_create_iterator",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 198,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "leveldb_create_snapshot",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 205,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "leveldb_release_snapshot",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 212,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "leveldb_compact_range",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 250,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 5
+ },
+ {
+ "name": "leveldb_destroy_db",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 256,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "leveldb_repair_db",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 263,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "leveldb_iter_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 265,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "leveldb_iter_valid",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 268,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_iter_seek_to_first",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 269,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_iter_seek_to_last",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 273,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_iter_seek",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 274,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "leveldb_iter_next",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 278,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_iter_prev",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 280,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_iter_key",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 283,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "leveldb_iter_value",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 289,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "leveldb_iter_get_error",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 296,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_writebatch_create",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 301,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "leveldb_writebatch_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 304,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_writebatch_clear",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 306,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_writebatch_put",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 308,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 5
+ },
+ {
+ "name": "leveldb_writebatch_delete",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 315,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "Put",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 339,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Delete",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 343,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_writebatch_append",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 346,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_create",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 350,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "leveldb_options_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 352,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_options_set_comparator",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 353,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_filter_policy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 359,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_create_if_missing",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 366,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_error_if_exists",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 369,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_paranoid_checks",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 373,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_env",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 376,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_info_log",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 380,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_write_buffer_size",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 382,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_max_open_files",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 386,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_cache",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 390,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_block_size",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 394,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_block_restart_interval",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 398,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_max_file_size",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 402,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_options_set_compression",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 405,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_comparator_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 425,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_filterpolicy_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 449,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_filterpolicy_create_bloom",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 451,
+ "ccn": 1,
+ "nloc": 17,
+ "params": 1
+ },
+ {
+ "name": "DoNothing",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 453,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 454,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "CreateFilter",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 455,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "KeyMayMatch",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 458,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_readoptions_create",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 470,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "leveldb_readoptions_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 472,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_readoptions_set_verify_checksums",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 474,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_readoptions_set_fill_cache",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 478,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_readoptions_set_snapshot",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 481,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_writeoptions_create",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 488,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "leveldb_writeoptions_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 491,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_writeoptions_set_sync",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 495,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "leveldb_cache_create_lru",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 498,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "leveldb_cache_destroy",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 502,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "leveldb_create_default_env",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 505,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "leveldb_free",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 525,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "leveldb_major_version",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 527,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "leveldb_minor_version",
+ "file": "/home/ilya/A/db/c.cc",
+ "line": 530,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "StartPhase",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "CheckGet",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 35,
+ "ccn": 1,
+ "nloc": 7,
+ "params": 4
+ },
+ {
+ "name": "CheckIter",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 54,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 3
+ },
+ {
+ "name": "CheckDel",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 80,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 3
+ },
+ {
+ "name": "CmpDestroy",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 84,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "CmpName",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 98,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "FilterDestroy",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 102,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "FilterName",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 105,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "FilterCreate",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 107,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 5
+ },
+ {
+ "name": "FilterKeyMatch",
+ "file": "/home/ilya/A/db/c_test.c",
+ "line": 118,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 5
+ },
+ {
+ "name": "TryReopen",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 24,
"ccn": 1,
"nloc": 3,
"params": 0
},
{
- "name": "addModuleMiddlewares",
- "file": "/home/claude/vkr/B/src/index.mjs",
+ "name": "Reopen",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 28,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "RepairDB",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 30,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "Key",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 141,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "Value",
+ "file": "/home/ilya/A/db/corruption_test.cc",
+ "line": 149,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "current_output",
+ "file": "/home/ilya/A/db/db_impl.cc",
+ "line": 31,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "total_bytes",
+ "file": "/home/ilya/A/db/db_impl.cc",
+ "line": 42,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "TableCacheSize",
+ "file": "/home/ilya/A/db/db_impl.cc",
+ "line": 94,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Add",
+ "file": "/home/ilya/A/db/db_impl.h",
+ "line": 57,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "user_comparator",
+ "file": "/home/ilya/A/db/db_impl.h",
+ "line": 112,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/db/db_iter.cc",
+ "line": 37,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/db/db_iter.cc",
+ "line": 37,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/db/db_iter.cc",
+ "line": 41,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "SaveKey",
+ "file": "/home/ilya/A/db/db_iter.cc",
+ "line": 54,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "RandomCompactionPeriod",
+ "file": "/home/ilya/A/db/db_iter.cc",
+ "line": 64,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewDBIterator",
+ "file": "/home/ilya/A/db/db_iter.cc",
+ "line": 225,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 5
+ },
+ {
+ "name": "RandomString",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 8,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "RandomKey",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 14,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "Increment",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 24,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "DelayMilliseconds",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 38,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "IsLdbFile",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 43,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "IsLogFile",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 47,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "IsManifestFile",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 49,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "SetIgnoreDotFiles",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 62,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "count_random_reads_",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 116,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "Flush",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 139,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 166,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Flush",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 167,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 200,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 4
+ },
+ {
+ "name": "dbfull",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 245,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Reopen",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 246,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 248,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "DestroyAndReopen",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 252,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "Put",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 271,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Delete",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 278,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "NumTableFilesAtLevel",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 370,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "CountFiles",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 396,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "Size",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 399,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "Compact",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 406,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "FillLevels",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 417,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "DumpSSTableList",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 440,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "Key",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 920,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1316,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Compare",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1317,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "FindShortestSeparator",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1319,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "FindShortSuccessor",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1323,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1342,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Compare",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1344,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "FindShortestSeparator",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1347,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "FindShortSuccessor",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1354,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "ToNumber",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1358,
+ "ccn": 1,
+ "nloc": 7,
+ "params": 1
+ },
+ {
+ "name": "Put",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1747,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "Delete",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1751,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Get",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1754,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 3
+ },
+ {
+ "name": "GetSnapshot",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1774,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "ReleaseSnapshot",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1779,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Write",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1785,
+ "ccn": 1,
+ "nloc": 11,
+ "params": 2
+ },
+ {
+ "name": "Put",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1788,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Delete",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1790,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "GetProperty",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1798,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "CompactRange",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1804,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 2
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1815,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SeekToFirst",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1819,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Seek",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1825,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1829,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Prev",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1830,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1832,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1834,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/db/db_test.cc",
+ "line": 1835,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "PackSequenceAndType",
+ "file": "/home/ilya/A/db/dbformat.cc",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "AppendInternalKey",
+ "file": "/home/ilya/A/db/dbformat.cc",
+ "line": 8,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "ParsedInternalKey",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 30,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 0
+ },
+ {
+ "name": "InternalKeyEncodingLength",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 36,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "ExtractUserKey",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 40,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "user_comparator",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 56,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "InternalKey",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 69,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 0
+ },
+ {
+ "name": "InternalKey",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 71,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "DecodeFrom",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 75,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Encode",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 77,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "user_key",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 80,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SetFrom",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 81,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Clear",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 85,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "memtable_key",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 108,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "internal_key",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 109,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "user_key",
+ "file": "/home/ilya/A/db/dbformat.h",
+ "line": 111,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "IKey",
+ "file": "/home/ilya/A/db/dbformat_test.cc",
+ "line": 1,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 3
+ },
+ {
+ "name": "Shorten",
+ "file": "/home/ilya/A/db/dbformat_test.cc",
+ "line": 8,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "ShortSuccessor",
+ "file": "/home/ilya/A/db/dbformat_test.cc",
+ "line": 15,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "TestKey",
+ "file": "/home/ilya/A/db/dbformat_test.cc",
+ "line": 21,
+ "ccn": 1,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "Corruption",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 22,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "Put",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 55,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "Delete",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 61,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "DumpLog",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 95,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "DumpDescriptor",
+ "file": "/home/ilya/A/db/dumpfile.cc",
+ "line": 109,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "SyncDir",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 17,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "pos_at_last_flush_",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 58,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "IsFullySynced",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 61,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "db_",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 321,
+ "ccn": 1,
+ "nloc": 7,
+ "params": 1
+ },
+ {
+ "name": "ReuseLogs",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 334,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "ReadValue",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 345,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "Key",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 373,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "Value",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 380,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "OpenDB",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 383,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "CloseDB",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 388,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "PartialCompactTestPreFault",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 412,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "PartialCompactTestReopenWithFault",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 419,
+ "ccn": 1,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "NoWriteTestPreFault",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 433,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 0
+ },
+ {
+ "name": "NoWriteTestReopenWithFault",
+ "file": "/home/ilya/A/db/fault_injection_test.cc",
+ "line": 434,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "MakeFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 5,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 3
+ },
+ {
+ "name": "LogFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 18,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "TableFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 21,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "SSTTableFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 24,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "DescriptorFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 29,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "CurrentFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 38,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "LockFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 40,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "TempFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 43,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "InfoLogFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 47,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "OldInfoLogFileName",
+ "file": "/home/ilya/A/db/filename.cc",
+ "line": 51,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/db/leveldbutil.cc",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/db/leveldbutil.cc",
+ "line": 8,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Flush",
+ "file": "/home/ilya/A/db/leveldbutil.cc",
+ "line": 11,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Sync",
+ "file": "/home/ilya/A/db/leveldbutil.cc",
+ "line": 14,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Usage",
+ "file": "/home/ilya/A/db/leveldbutil.cc",
+ "line": 25,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "resyncing_",
+ "file": "/home/ilya/A/db/log_reader.cc",
+ "line": 19,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "NumberString",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 9,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "RandomSkewedString",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 16,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "ReopenForAppend",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 30,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "Write",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 35,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "WrittenBytes",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 39,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "IncrementByte",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 54,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "SetByte",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 58,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "ShrinkSize",
+ "file": "/home/ilya/A/db/log_test.cc",
"line": 60,
"ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "FixChecksum",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 65,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "ForceError",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 73,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "DroppedBytes",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 78,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "ReportMessage",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 79,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "StartReadingAt",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 97,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "CheckOffsetPastEndReturnsNoRecords",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 103,
+ "ccn": 1,
+ "nloc": 9,
+ "params": 1
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 145,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Flush",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 146,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Sync",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 146,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 147,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Corruption",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 180,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "TEST_F",
+ "file": "/home/ilya/A/db/log_test.cc",
+ "line": 310,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "GetLengthPrefixedSlice",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "EncodeKey",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 24,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 37,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Seek",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 38,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "SeekToFirst",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 39,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SeekToLast",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 41,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 42,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Prev",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 46,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 47,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 49,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/db/memtable.cc",
+ "line": 55,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Ref",
+ "file": "/home/ilya/A/db/memtable.h",
+ "line": 13,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "dbfull",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 12,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "env",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 14,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 27,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "Open",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 45,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Put",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 52,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "LogName",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 77,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "RemoveManifestFile",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 91,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "FirstLogFile",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 96,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NumLogs",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 110,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NumTables",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 113,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "FileSize",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 115,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "CompactMemTable",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 118,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "MakeLogFile",
+ "file": "/home/ilya/A/db/recovery_test.cc",
+ "line": 119,
+ "ccn": 1,
+ "nloc": 10,
+ "params": 4
+ },
+ {
+ "name": "next_file_number_",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 13,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Corruption",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 87,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "NewTableIterator",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 157,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "RepairDB",
+ "file": "/home/ilya/A/db/repair.cc",
+ "line": 335,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "GetMaxHeight",
+ "file": "/home/ilya/A/db/skiplist.h",
+ "line": 24,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Equal",
+ "file": "/home/ilya/A/db/skiplist.h",
+ "line": 31,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/db/skiplist.h",
+ "line": 54,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "SetNext",
+ "file": "/home/ilya/A/db/skiplist.h",
+ "line": 57,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "NoBarrier_Next",
+ "file": "/home/ilya/A/db/skiplist.h",
+ "line": 60,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "NoBarrier_SetNext",
+ "file": "/home/ilya/A/db/skiplist.h",
+ "line": 63,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 112,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "gen",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 114,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "hash",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 117,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "HashNumbers",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 118,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "MakeKey",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 122,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "IsValidKey",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 130,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Set",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 140,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Get",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 144,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "WriteStep",
+ "file": "/home/ilya/A/db/skiplist_test.cc",
+ "line": 149,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "sequence_number_",
+ "file": "/home/ilya/A/db/snapshot.h",
+ "line": 5,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "sequence_number",
+ "file": "/home/ilya/A/db/snapshot.h",
+ "line": 6,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "empty",
+ "file": "/home/ilya/A/db/snapshot.h",
+ "line": 22,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "oldest",
+ "file": "/home/ilya/A/db/snapshot.h",
+ "line": 25,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "newest",
+ "file": "/home/ilya/A/db/snapshot.h",
+ "line": 27,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "DeleteEntry",
+ "file": "/home/ilya/A/db/table_cache.cc",
+ "line": 3,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "UnrefEntry",
+ "file": "/home/ilya/A/db/table_cache.cc",
+ "line": 10,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "VersionEdit",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 18,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SetComparatorName",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 22,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "SetLogNumber",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 24,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "SetPrevLogNumber",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 26,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "SetNextFile",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 31,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "SetLastSequence",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 37,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "SetCompactPointer",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 41,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "AddFile",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 46,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 5
+ },
+ {
+ "name": "RemoveFile",
+ "file": "/home/ilya/A/db/version_edit.h",
+ "line": 57,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "TestEncodeDecode",
+ "file": "/home/ilya/A/db/version_edit_test.cc",
+ "line": 1,
+ "ccn": 1,
+ "nloc": 7,
+ "params": 1
+ },
+ {
+ "name": "TargetFileSize",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 3,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "MaxGrandParentOverlapBytes",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 10,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "ExpandedCompactionByteSizeLimit",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 14,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "MaxFileSizeForLevel",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 28,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "AfterFile",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 60,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 3
+ },
+ {
+ "name": "BeforeFile",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 72,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 3
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 118,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Seek",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 121,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "SeekToFirst",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 123,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SeekToLast",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 123,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 125,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 129,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 132,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 143,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewestFirst",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 206,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "current_",
+ "file": "/home/ilya/A/db/version_set.cc",
+ "line": 612,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "NumFiles",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 52,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "compaction_level_",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 64,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "current",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 89,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "ManifestFileNumber",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 91,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewFileNumber",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 96,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "LastSequence",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 102,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SetLastSequence",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 103,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "LogNumber",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 105,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "PrevLogNumber",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 107,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NeedsCompaction",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 114,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "level",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 161,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "edit",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 162,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "num_input_files",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 164,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "input",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 169,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "MaxOutputFileSize",
+ "file": "/home/ilya/A/db/version_set.h",
+ "line": 170,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Add",
+ "file": "/home/ilya/A/db/version_set_test.cc",
+ "line": 8,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 4
+ },
+ {
+ "name": "Find",
+ "file": "/home/ilya/A/db/version_set_test.cc",
+ "line": 25,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "Overlaps",
+ "file": "/home/ilya/A/db/version_set_test.cc",
+ "line": 29,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "CreateFileMetaData",
+ "file": "/home/ilya/A/db/version_set_test.cc",
+ "line": 174,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 3
+ },
+ {
+ "name": "Put",
+ "file": "/home/ilya/A/db/write_batch.cc",
+ "line": 94,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "Delete",
+ "file": "/home/ilya/A/db/write_batch.cc",
+ "line": 99,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Contents",
+ "file": "/home/ilya/A/db/write_batch_internal.h",
+ "line": 15,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "ByteSize",
+ "file": "/home/ilya/A/db/write_batch_internal.h",
+ "line": 16,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ }
+ ]
+ },
+ "helpers/memenv": {
+ "files": [
+ "/home/ilya/A/helpers/memenv/memenv.cc",
+ "/home/ilya/A/helpers/memenv/memenv.h",
+ "/home/ilya/A/helpers/memenv/memenv_test.cc"
+ ],
+ "language": "cpp",
+ "total_nloc": 176,
+ "total_functions": 31,
+ "avg_ccn": 1.77,
+ "max_ccn": 6,
+ "heavy_functions_count": 0,
+ "heavy_functions_ratio": 0.0,
+ "coupling_out": 3,
+ "coupling_in": 1,
+ "instability": 0.75,
+ "has_cycles": true,
+ "dependencies": [
+ "db",
+ "port",
+ "util"
+ ],
+ "dependents": [
+ "util"
+ ],
+ "functions": [
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 39,
+ "ccn": 6,
+ "nloc": 30,
+ "params": 4
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 85,
+ "ccn": 4,
+ "nloc": 21,
+ "params": 1
+ },
+ {
+ "name": "Unref",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 16,
+ "ccn": 3,
+ "nloc": 12,
+ "params": 0
+ },
+ {
+ "name": "Skip",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 139,
+ "ccn": 3,
+ "nloc": 9,
+ "params": 1
+ },
+ {
+ "name": "GetChildren",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 259,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 2
+ },
+ {
+ "name": "Truncate",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 30,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 0
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 127,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 3
+ },
+ {
+ "name": "NewSequentialFile",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 200,
+ "ccn": 2,
"nloc": 7,
"params": 2
},
{
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/index.mjs",
+ "name": "NewRandomAccessFile",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 210,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 2
+ },
+ {
+ "name": "NewWritableFile",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 227,
+ "ccn": 2,
+ "nloc": 13,
+ "params": 2
+ },
+ {
+ "name": "NewAppendableFile",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 244,
+ "ccn": 2,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "EXCLUSIVE_LOCKS_REQUIRED",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 280,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "RemoveFile",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 288,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "GetFileSize",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 302,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "RenameFile",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 312,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "Ref",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 14,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "Size",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 27,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 158,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 4
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 172,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 174,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Flush",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 179,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Sync",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 184,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Logv",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 187,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 2
+ },
+ {
+ "name": "FileExists",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 256,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "CreateDir",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 295,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "RemoveDir",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 299,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "LockFile",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 324,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "UnlockFile",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 331,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "GetTestDirectory",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 333,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "NewLogger",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 336,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "NewMemEnv",
+ "file": "/home/ilya/A/helpers/memenv/memenv.cc",
+ "line": 346,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ }
+ ]
+ },
+ "include/leveldb": {
+ "files": [
+ "/home/ilya/A/include/leveldb/c.h",
+ "/home/ilya/A/include/leveldb/cache.h",
+ "/home/ilya/A/include/leveldb/comparator.h",
+ "/home/ilya/A/include/leveldb/db.h",
+ "/home/ilya/A/include/leveldb/dumpfile.h",
+ "/home/ilya/A/include/leveldb/env.h",
+ "/home/ilya/A/include/leveldb/export.h",
+ "/home/ilya/A/include/leveldb/filter_policy.h",
+ "/home/ilya/A/include/leveldb/iterator.h",
+ "/home/ilya/A/include/leveldb/options.h",
+ "/home/ilya/A/include/leveldb/slice.h",
+ "/home/ilya/A/include/leveldb/status.h",
+ "/home/ilya/A/include/leveldb/table.h",
+ "/home/ilya/A/include/leveldb/table_builder.h",
+ "/home/ilya/A/include/leveldb/write_batch.h"
+ ],
+ "language": "cpp",
+ "total_nloc": 43,
+ "total_functions": 41,
+ "avg_ccn": 1.0,
+ "max_ccn": 1,
+ "heavy_functions_count": 0,
+ "heavy_functions_ratio": 0.0,
+ "coupling_out": 0,
+ "coupling_in": 0,
+ "instability": 0.0,
+ "has_cycles": false,
+ "dependencies": [],
+ "dependents": [],
+ "functions": [
+ {
+ "name": "Prune",
+ "file": "/home/ilya/A/include/leveldb/cache.h",
+ "line": 16,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 0
+ },
+ {
+ "name": "target",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 116,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewSequentialFile",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 116,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "NewRandomAccessFile",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 119,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "NewWritableFile",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 123,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "NewAppendableFile",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 125,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "FileExists",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 128,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "GetChildren",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 129,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "RemoveFile",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 134,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "CreateDir",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 135,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "RemoveDir",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 136,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "GetFileSize",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 139,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "RenameFile",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 142,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "LockFile",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 146,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "UnlockFile",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 148,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "GetTestDirectory",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 155,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "NewLogger",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 157,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "NowMicros",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 159,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SleepForMicroseconds",
+ "file": "/home/ilya/A/include/leveldb/env.h",
+ "line": 161,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "IsEmpty",
+ "file": "/home/ilya/A/include/leveldb/iterator.h",
+ "line": 22,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Run",
+ "file": "/home/ilya/A/include/leveldb/iterator.h",
+ "line": 28,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "data",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 11,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "size",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 12,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "empty",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 13,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "begin",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 15,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "end",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 16,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "clear",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 27,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "remove_prefix",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 30,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "ToString",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 33,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "starts_with",
+ "file": "/home/ilya/A/include/leveldb/slice.h",
+ "line": 36,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Status",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 3,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 0
+ },
+ {
+ "name": "Status",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 8,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "OK",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 9,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "ok",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 36,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "IsNotFound",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 39,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "IsCorruption",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 40,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "IsIOError",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 41,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "IsNotSupportedError",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 43,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "IsInvalidArgument",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 44,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "code",
+ "file": "/home/ilya/A/include/leveldb/status.h",
+ "line": 50,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "ok",
+ "file": "/home/ilya/A/include/leveldb/table_builder.h",
+ "line": 24,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ }
+ ]
+ },
+ "port": {
+ "files": [
+ "/home/ilya/A/port/port.h",
+ "/home/ilya/A/port/port_example.h",
+ "/home/ilya/A/port/port_stdcxx.h",
+ "/home/ilya/A/port/thread_annotations.h"
+ ],
+ "language": "cpp",
+ "total_nloc": 94,
+ "total_functions": 10,
+ "avg_ccn": 2.2,
+ "max_ccn": 4,
+ "heavy_functions_count": 0,
+ "heavy_functions_ratio": 0.0,
+ "coupling_out": 0,
+ "coupling_in": 4,
+ "instability": 0.0,
+ "has_cycles": false,
+ "dependencies": [],
+ "dependents": [
+ "db",
+ "helpers/memenv",
+ "table",
+ "util"
+ ],
+ "functions": [
+ {
+ "name": "Zstd_Compress",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 93,
+ "ccn": 4,
+ "nloc": 24,
+ "params": 4
+ },
+ {
+ "name": "Zstd_Uncompress",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 136,
+ "ccn": 4,
+ "nloc": 18,
+ "params": 3
+ },
+ {
+ "name": "Zstd_GetUncompressedLength",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 123,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 3
+ },
+ {
+ "name": "Snappy_Compress",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 57,
+ "ccn": 2,
+ "nloc": 12,
+ "params": 3
+ },
+ {
+ "name": "Snappy_GetUncompressedLength",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 74,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "Snappy_Uncompress",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 86,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "AcceleratedCRC32C",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 155,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "Wait",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 41,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "Signal",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 50,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SignalAll",
+ "file": "/home/ilya/A/port/port_stdcxx.h",
+ "line": 52,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ }
+ ]
+ },
+ "table": {
+ "files": [
+ "/home/ilya/A/table/block.cc",
+ "/home/ilya/A/table/block.h",
+ "/home/ilya/A/table/block_builder.cc",
+ "/home/ilya/A/table/block_builder.h",
+ "/home/ilya/A/table/filter_block.cc",
+ "/home/ilya/A/table/filter_block.h",
+ "/home/ilya/A/table/filter_block_test.cc",
+ "/home/ilya/A/table/format.cc",
+ "/home/ilya/A/table/format.h",
+ "/home/ilya/A/table/iterator.cc",
+ "/home/ilya/A/table/iterator_wrapper.h",
+ "/home/ilya/A/table/merger.cc",
+ "/home/ilya/A/table/merger.h",
+ "/home/ilya/A/table/table.cc",
+ "/home/ilya/A/table/table_builder.cc",
+ "/home/ilya/A/table/table_test.cc",
+ "/home/ilya/A/table/two_level_iterator.cc",
+ "/home/ilya/A/table/two_level_iterator.h"
+ ],
+ "language": "cpp",
+ "total_nloc": 692,
+ "total_functions": 132,
+ "avg_ccn": 1.82,
+ "max_ccn": 17,
+ "heavy_functions_count": 3,
+ "heavy_functions_ratio": 0.023,
+ "coupling_out": 3,
+ "coupling_in": 1,
+ "instability": 0.75,
+ "has_cycles": true,
+ "dependencies": [
+ "db",
+ "port",
+ "util"
+ ],
+ "dependents": [
+ "db"
+ ],
+ "functions": [
+ {
+ "name": "TestRandomAccess",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 434,
+ "ccn": 17,
+ "nloc": 61,
+ "params": 3
+ },
+ {
+ "name": "ReadBlock",
+ "file": "/home/ilya/A/table/format.cc",
+ "line": 51,
+ "ccn": 13,
+ "nloc": 79,
+ "params": 4
+ },
+ {
+ "name": "Seek",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 110,
+ "ccn": 11,
+ "nloc": 44,
+ "params": 1
+ },
+ {
+ "name": "DecodeEntry",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 29,
+ "ccn": 7,
+ "nloc": 15,
+ "params": 5
+ },
+ {
+ "name": "Init",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 360,
+ "ccn": 6,
+ "nloc": 22,
+ "params": 1
+ },
+ {
+ "name": "PickRandomKey",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 521,
+ "ccn": 6,
+ "nloc": 21,
+ "params": 2
+ },
+ {
+ "name": "Prev",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 95,
+ "ccn": 5,
+ "nloc": 13,
+ "params": 0
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 40,
+ "ccn": 5,
+ "nloc": 16,
+ "params": 0
+ },
+ {
+ "name": "Prev",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 60,
+ "ccn": 5,
+ "nloc": 17,
+ "params": 0
+ },
+ {
+ "name": "ParseNextKey",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 174,
+ "ccn": 4,
+ "nloc": 23,
+ "params": 0
+ },
+ {
+ "name": "owned_",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 14,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 1
+ },
+ {
+ "name": "KeyMayMatch",
+ "file": "/home/ilya/A/table/filter_block_test.cc",
+ "line": 14,
+ "ccn": 3,
+ "nloc": 7,
+ "params": 2
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 84,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 0
+ },
+ {
+ "name": "NewMergingIterator",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 132,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 93,
+ "ccn": 3,
+ "nloc": 9,
+ "params": 4
+ },
+ {
+ "name": "CompressionSupported",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 730,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 1
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/table/two_level_iterator.cc",
+ "line": 27,
+ "ccn": 3,
+ "nloc": 7,
+ "params": 0
+ },
+ {
+ "name": "SeekToLast",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 165,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "CreateFilter",
+ "file": "/home/ilya/A/table/filter_block_test.cc",
+ "line": 5,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 3
+ },
+ {
+ "name": "Set",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 13,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 1
+ },
+ {
+ "name": "Update",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 39,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "direction_",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 9,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "SeekToFirst",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 18,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "SeekToLast",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 24,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "Seek",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 31,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "Reverse",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 5,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 1
+ },
+ {
+ "name": "Increment",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 47,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "Finish",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 120,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "FinishImpl",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 149,
+ "ccn": 2,
+ "nloc": 13,
+ "params": 2
+ },
+ {
+ "name": "FinishImpl",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 179,
+ "ccn": 2,
+ "nloc": 14,
+ "params": 2
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 241,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 0
+ },
+ {
+ "name": "FinishImpl",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 270,
+ "ccn": 2,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "FinishImpl",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 293,
+ "ccn": 2,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "TestForwardScan",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 405,
+ "ccn": 2,
+ "nloc": 10,
+ "params": 2
+ },
+ {
+ "name": "TestBackwardScan",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 420,
+ "ccn": 2,
+ "nloc": 10,
+ "params": 2
+ },
+ {
+ "name": "ToString",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 500,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "ToString",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 507,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "ToString",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 515,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "TEST_F",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 544,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "TEST_F",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 573,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "Between",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 683,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 3
+ },
+ {
+ "name": "SaveError",
+ "file": "/home/ilya/A/table/two_level_iterator.cc",
+ "line": 37,
+ "ccn": 2,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Compare",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 60,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "NextEntryOffset",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 62,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "GetRestartPoint",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 66,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "SeekToRestartPoint",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 68,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "restart_index_",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 82,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 84,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 86,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 86,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 89,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 92,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "SeekToFirst",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 164,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "CorruptionError",
+ "file": "/home/ilya/A/table/block.cc",
+ "line": 171,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "size",
+ "file": "/home/ilya/A/table/block.h",
+ "line": 11,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "empty",
+ "file": "/home/ilya/A/table/block_builder.h",
+ "line": 21,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "policy_",
+ "file": "/home/ilya/A/table/filter_block.cc",
+ "line": 5,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/table/filter_block_test.cc",
+ "line": 3,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "offset",
+ "file": "/home/ilya/A/table/format.h",
+ "line": 9,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "set_offset",
+ "file": "/home/ilya/A/table/format.h",
+ "line": 12,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "size",
+ "file": "/home/ilya/A/table/format.h",
+ "line": 15,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "set_size",
+ "file": "/home/ilya/A/table/format.h",
+ "line": 18,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "metaindex_handle",
+ "file": "/home/ilya/A/table/format.h",
+ "line": 31,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "set_metaindex_handle",
+ "file": "/home/ilya/A/table/format.h",
+ "line": 32,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "index_handle",
+ "file": "/home/ilya/A/table/format.h",
+ "line": 35,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "set_index_handle",
+ "file": "/home/ilya/A/table/format.h",
+ "line": 38,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 34,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Seek",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 37,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "SeekToFirst",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 43,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 0
+ },
+ {
+ "name": "SeekToLast",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 43,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 0
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 45,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Prev",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 46,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 48,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 49,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 52,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewEmptyIterator",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 54,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewErrorIterator",
+ "file": "/home/ilya/A/table/iterator.cc",
+ "line": 58,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "iter",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 9,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 15,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 16,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 19,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 20,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 22,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "Prev",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 24,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "Seek",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 25,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "SeekToFirst",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 29,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "SeekToLast",
+ "file": "/home/ilya/A/table/iterator_wrapper.h",
+ "line": 36,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 16,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 74,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/table/merger.cc",
+ "line": 81,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "DeleteBlock",
+ "file": "/home/ilya/A/table/table.cc",
+ "line": 101,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "DeleteCachedBlock",
+ "file": "/home/ilya/A/table/table.cc",
+ "line": 104,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "ReleaseBlock",
+ "file": "/home/ilya/A/table/table.cc",
+ "line": 111,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "pending_index_entry",
+ "file": "/home/ilya/A/table/table_builder.cc",
+ "line": 22,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 19,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Compare",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 21,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "FindShortestSeparator",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 28,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "FindShortSuccessor",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 39,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "contents",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 68,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 70,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Flush",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 72,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Sync",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 73,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 78,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Size",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 91,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Add",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 119,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "data",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 138,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "db",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 139,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewIterator",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 164,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewIterator",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 197,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "ApproximateOffsetOf",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 201,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Reset",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 208,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 225,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Seek",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 228,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "SeekToFirst",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 234,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SeekToLast",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 234,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 237,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Prev",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 238,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 254,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "status",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 259,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewIterator",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 279,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewIterator",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 306,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "db",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 309,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewDB",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 309,
+ "ccn": 1,
+ "nloc": 10,
+ "params": 0
+ },
+ {
+ "name": "Add",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 392,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Test",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 397,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "db",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 541,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "TEST_F",
+ "file": "/home/ilya/A/table/table_test.cc",
+ "line": 552,
+ "ccn": 1,
+ "nloc": 15,
+ "params": 2
+ },
+ {
+ "name": "Valid",
+ "file": "/home/ilya/A/table/two_level_iterator.cc",
+ "line": 20,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/table/two_level_iterator.cc",
+ "line": 21,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "value",
+ "file": "/home/ilya/A/table/two_level_iterator.cc",
+ "line": 23,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "data_iter_",
+ "file": "/home/ilya/A/table/two_level_iterator.cc",
+ "line": 65,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "NewTwoLevelIterator",
+ "file": "/home/ilya/A/table/two_level_iterator.cc",
+ "line": 141,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 4
+ }
+ ]
+ },
+ "util": {
+ "files": [
+ "/home/ilya/A/util/arena.cc",
+ "/home/ilya/A/util/arena.h",
+ "/home/ilya/A/util/arena_test.cc",
+ "/home/ilya/A/util/bloom.cc",
+ "/home/ilya/A/util/bloom_test.cc",
+ "/home/ilya/A/util/cache.cc",
+ "/home/ilya/A/util/cache_test.cc",
+ "/home/ilya/A/util/coding.cc",
+ "/home/ilya/A/util/coding.h",
+ "/home/ilya/A/util/coding_test.cc",
+ "/home/ilya/A/util/comparator.cc",
+ "/home/ilya/A/util/crc32c.cc",
+ "/home/ilya/A/util/crc32c.h",
+ "/home/ilya/A/util/crc32c_test.cc",
+ "/home/ilya/A/util/env.cc",
+ "/home/ilya/A/util/env_posix.cc",
+ "/home/ilya/A/util/env_posix_test.cc",
+ "/home/ilya/A/util/env_posix_test_helper.h",
+ "/home/ilya/A/util/env_test.cc",
+ "/home/ilya/A/util/env_windows.cc",
+ "/home/ilya/A/util/env_windows_test.cc",
+ "/home/ilya/A/util/env_windows_test_helper.h",
+ "/home/ilya/A/util/filter_policy.cc",
+ "/home/ilya/A/util/hash.cc",
+ "/home/ilya/A/util/hash.h",
+ "/home/ilya/A/util/hash_test.cc",
+ "/home/ilya/A/util/histogram.cc",
+ "/home/ilya/A/util/histogram.h",
+ "/home/ilya/A/util/logging.cc",
+ "/home/ilya/A/util/logging.h",
+ "/home/ilya/A/util/logging_test.cc",
+ "/home/ilya/A/util/mutexlock.h",
+ "/home/ilya/A/util/no_destructor.h",
+ "/home/ilya/A/util/no_destructor_test.cc",
+ "/home/ilya/A/util/options.cc",
+ "/home/ilya/A/util/posix_logger.h",
+ "/home/ilya/A/util/random.h",
+ "/home/ilya/A/util/status.cc",
+ "/home/ilya/A/util/status_test.cc",
+ "/home/ilya/A/util/testutil.cc",
+ "/home/ilya/A/util/testutil.h",
+ "/home/ilya/A/util/windows_logger.h"
+ ],
+ "language": "cpp",
+ "total_nloc": 1517,
+ "total_functions": 206,
+ "avg_ccn": 2.02,
+ "max_ccn": 17,
+ "heavy_functions_count": 1,
+ "heavy_functions_ratio": 0.005,
+ "coupling_out": 2,
+ "coupling_in": 3,
+ "instability": 0.4,
+ "has_cycles": true,
+ "dependencies": [
+ "helpers/memenv",
+ "port"
+ ],
+ "dependents": [
+ "db",
+ "helpers/memenv",
+ "table"
+ ],
+ "functions": [
+ {
+ "name": "Extend",
+ "file": "/home/ilya/A/util/crc32c.cc",
+ "line": 254,
+ "ccn": 17,
+ "nloc": 73,
+ "params": 3
+ },
+ {
+ "name": "GetChildren",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 417,
+ "ccn": 7,
+ "nloc": 24,
+ "params": 2
+ },
+ {
+ "name": "Logv",
+ "file": "/home/ilya/A/util/posix_logger.h",
+ "line": 13,
+ "ccn": 7,
+ "nloc": 58,
+ "params": 2
+ },
+ {
+ "name": "Logv",
+ "file": "/home/ilya/A/util/windows_logger.h",
+ "line": 13,
+ "ccn": 7,
+ "nloc": 55,
+ "params": 2
+ },
+ {
+ "name": "NewRandomAccessFile",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 372,
+ "ccn": 6,
+ "nloc": 27,
+ "params": 2
+ },
+ {
+ "name": "NewRandomAccessFile",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 329,
+ "ccn": 6,
+ "nloc": 41,
+ "params": 2
+ },
+ {
+ "name": "KeyMayMatch",
+ "file": "/home/ilya/A/util/bloom.cc",
+ "line": 34,
+ "ccn": 5,
+ "nloc": 16,
+ "params": 2
+ },
+ {
+ "name": "EncodeVarint32",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 10,
+ "ccn": 5,
+ "nloc": 24,
+ "params": 2
+ },
+ {
+ "name": "DoWriteStringToFile",
+ "file": "/home/ilya/A/util/env.cc",
+ "line": 31,
+ "ccn": 5,
+ "nloc": 17,
+ "params": 4
+ },
+ {
+ "name": "ReadFileToString",
+ "file": "/home/ilya/A/util/env.cc",
+ "line": 65,
+ "ccn": 5,
+ "nloc": 22,
+ "params": 3
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 123,
+ "ccn": 5,
+ "nloc": 19,
+ "params": 4
+ },
+ {
+ "name": "SyncFd",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 252,
+ "ccn": 5,
+ "nloc": 14,
+ "params": 2
+ },
+ {
+ "name": "Hash",
+ "file": "/home/ilya/A/util/hash.cc",
+ "line": 3,
+ "ccn": 5,
+ "nloc": 25,
+ "params": 3
+ },
+ {
+ "name": "CreateFilter",
+ "file": "/home/ilya/A/util/bloom.cc",
+ "line": 17,
+ "ccn": 4,
+ "nloc": 17,
+ "params": 3
+ },
+ {
+ "name": "NextLength",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 78,
+ "ccn": 4,
+ "nloc": 10,
+ "params": 1
+ },
+ {
+ "name": "Resize",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 44,
+ "ccn": 4,
+ "nloc": 23,
+ "params": 0
+ },
+ {
+ "name": "FindShortestSeparator",
+ "file": "/home/ilya/A/util/comparator.cc",
+ "line": 18,
+ "ccn": 4,
+ "nloc": 16,
+ "params": 2
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 88,
+ "ccn": 4,
+ "nloc": 14,
+ "params": 3
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 187,
+ "ccn": 4,
+ "nloc": 20,
+ "params": 1
+ },
+ {
+ "name": "WriteUnbuffered",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 237,
+ "ccn": 4,
+ "nloc": 12,
+ "params": 2
+ },
+ {
+ "name": "LockFile",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 476,
+ "ccn": 4,
+ "nloc": 17,
+ "params": 2
+ },
+ {
+ "name": "MaxOpenFiles",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 589,
+ "ccn": 4,
+ "nloc": 16,
+ "params": 0
+ },
+ {
+ "name": "main",
+ "file": "/home/ilya/A/util/env_posix_test.cc",
+ "line": 219,
+ "ccn": 4,
+ "nloc": 12,
+ "params": 2
+ },
+ {
+ "name": "Append",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 213,
+ "ccn": 4,
+ "nloc": 20,
+ "params": 1
+ },
+ {
+ "name": "RenameFile",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 475,
+ "ccn": 4,
+ "nloc": 16,
+ "params": 2
+ },
+ {
+ "name": "ConsumeDecimalNumber",
+ "file": "/home/ilya/A/util/logging.cc",
+ "line": 31,
+ "ccn": 4,
+ "nloc": 20,
+ "params": 2
+ },
+ {
+ "name": "Build",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 17,
+ "ccn": 3,
+ "nloc": 9,
+ "params": 0
+ },
+ {
+ "name": "DumpFilter",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 36,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 0
+ },
+ {
+ "name": "FalsePositiveRate",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 50,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 0
+ },
+ {
+ "name": "Insert",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 28,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 1
+ },
+ {
+ "name": "GetVarint32PtrFallback",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 69,
+ "ccn": 3,
+ "nloc": 13,
+ "params": 3
+ },
+ {
+ "name": "GetVarint64Ptr",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 101,
+ "ccn": 3,
+ "nloc": 13,
+ "params": 3
+ },
+ {
+ "name": "GetVarint32Ptr",
+ "file": "/home/ilya/A/util/coding.h",
+ "line": 67,
+ "ccn": 3,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "FindShortSuccessor",
+ "file": "/home/ilya/A/util/comparator.cc",
+ "line": 42,
+ "ccn": 3,
+ "nloc": 9,
+ "params": 1
+ },
+ {
+ "name": "Sync",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 227,
+ "ccn": 3,
+ "nloc": 9,
+ "params": 0
+ },
+ {
+ "name": "SyncDirIfManifest",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 245,
+ "ccn": 3,
+ "nloc": 12,
+ "params": 0
+ },
+ {
+ "name": "GetChildren",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 435,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 2
+ },
+ {
+ "name": "NewLogger",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 538,
+ "ccn": 3,
+ "nloc": 15,
+ "params": 2
+ },
+ {
+ "name": "TestCloseOnExecHelperMain",
+ "file": "/home/ilya/A/util/env_posix_test.cc",
+ "line": 26,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 1
+ },
+ {
+ "name": "GetOpenFileDescriptors",
+ "file": "/home/ilya/A/util/env_posix_test.cc",
+ "line": 38,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 1
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 155,
+ "ccn": 3,
+ "nloc": 14,
+ "params": 4
+ },
+ {
+ "name": "Sync",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 241,
+ "ccn": 3,
+ "nloc": 9,
+ "params": 0
+ },
+ {
+ "name": "LockFile",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 492,
+ "ccn": 3,
+ "nloc": 14,
+ "params": 2
+ },
+ {
+ "name": "GetTestDirectory",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 531,
+ "ccn": 3,
+ "nloc": 14,
+ "params": 1
+ },
+ {
+ "name": "AppendEscapedStringTo",
+ "file": "/home/ilya/A/util/logging.cc",
+ "line": 10,
+ "ccn": 3,
+ "nloc": 11,
+ "params": 2
+ },
+ {
+ "name": "CompressibleString",
+ "file": "/home/ilya/A/util/testutil.cc",
+ "line": 23,
+ "ccn": 3,
+ "nloc": 10,
+ "params": 4
+ },
+ {
+ "name": "Matches",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 48,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "Remove",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 33,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 2
+ },
+ {
+ "name": "FindPointer",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 37,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "Prune",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 262,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "TotalCharge",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 267,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "Lookup",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 30,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "EncodeVarint64",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 42,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "VarintLength",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 66,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "GetVarint32",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 90,
+ "ccn": 2,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "GetVarint64",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 118,
+ "ccn": 2,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "GetLengthPrefixedSlice",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 128,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "Log",
+ "file": "/home/ilya/A/util/env.cc",
+ "line": 28,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 3
+ },
+ {
+ "name": "PosixError",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 43,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "Acquire",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 57,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 0
+ },
+ {
+ "name": "Skip",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 99,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 168,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 4
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 215,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 0
+ },
+ {
+ "name": "Dirname",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 267,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "Basename",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 283,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 1
+ },
+ {
+ "name": "NewSequentialFile",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 358,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 2
+ },
+ {
+ "name": "NewWritableFile",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 405,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "NewAppendableFile",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 422,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "RemoveFile",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 445,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "CreateDir",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 449,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "RemoveDir",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 457,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "GetFileSize",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 462,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 2
+ },
+ {
+ "name": "RenameFile",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 471,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 2
+ },
+ {
+ "name": "UnlockFile",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 498,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 1
+ },
+ {
+ "name": "GetTestDirectory",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 525,
+ "ccn": 2,
+ "nloc": 11,
+ "params": 1
+ },
+ {
+ "name": "SingletonEnv",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 656,
+ "ccn": 2,
+ "nloc": 12,
+ "params": 0
+ },
+ {
+ "name": "AssertEnvNotInitialized",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 681,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "GetNewlyOpenedFileDescriptor",
+ "file": "/home/ilya/A/util/env_posix_test.cc",
+ "line": 48,
+ "ccn": 2,
+ "nloc": 10,
+ "params": 2
+ },
+ {
+ "name": "CheckCloseOnExecDoesNotLeakFDs",
+ "file": "/home/ilya/A/util/env_posix_test.cc",
+ "line": 55,
+ "ccn": 2,
+ "nloc": 23,
+ "params": 1
+ },
+ {
+ "name": "GetWindowsErrorMessage",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 25,
+ "ccn": 2,
+ "nloc": 13,
+ "params": 1
+ },
+ {
+ "name": "WindowsError",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 45,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 66,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 0
+ },
+ {
+ "name": "Acquire",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 90,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 122,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 3
+ },
+ {
+ "name": "Skip",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 137,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "Read",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 189,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 4
+ },
+ {
+ "name": "Close",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 235,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 0
+ },
+ {
+ "name": "WriteUnbuffered",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 259,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 2
+ },
+ {
+ "name": "LockOrUnlock",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 275,
+ "ccn": 2,
+ "nloc": 11,
+ "params": 2
+ },
+ {
+ "name": "NewSequentialFile",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 305,
+ "ccn": 2,
+ "nloc": 12,
+ "params": 2
+ },
+ {
+ "name": "NewWritableFile",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 379,
+ "ccn": 2,
+ "nloc": 12,
+ "params": 2
+ },
+ {
+ "name": "NewAppendableFile",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 399,
+ "ccn": 2,
+ "nloc": 12,
+ "params": 2
+ },
+ {
+ "name": "RemoveFile",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 444,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "CreateDir",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 448,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "RemoveDir",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 454,
+ "ccn": 2,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "GetFileSize",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 460,
+ "ccn": 2,
+ "nloc": 10,
+ "params": 2
+ },
+ {
+ "name": "UnlockFile",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 511,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 1
+ },
+ {
+ "name": "NewLogger",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 547,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "SingletonEnv",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 615,
+ "ccn": 2,
+ "nloc": 12,
+ "params": 0
+ },
+ {
+ "name": "AssertEnvNotInitialized",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 636,
+ "ccn": 2,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "Next",
+ "file": "/home/ilya/A/util/random.h",
+ "line": 9,
+ "ccn": 2,
+ "nloc": 8,
+ "params": 0
+ },
+ {
+ "name": "RandomString",
+ "file": "/home/ilya/A/util/testutil.cc",
+ "line": 2,
+ "ccn": 2,
+ "nloc": 5,
+ "params": 3
+ },
+ {
+ "name": "RandomKey",
+ "file": "/home/ilya/A/util/testutil.cc",
+ "line": 11,
+ "ccn": 2,
+ "nloc": 7,
+ "params": 2
+ },
+ {
+ "name": "NewWritableFile",
+ "file": "/home/ilya/A/util/testutil.h",
+ "line": 32,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "NewAppendableFile",
+ "file": "/home/ilya/A/util/testutil.h",
+ "line": 40,
+ "ccn": 2,
+ "nloc": 6,
+ "params": 2
+ },
+ {
+ "name": "MemoryUsage",
+ "file": "/home/ilya/A/util/arena.h",
+ "line": 14,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "BloomHash",
+ "file": "/home/ilya/A/util/bloom.cc",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/util/bloom.cc",
+ "line": 14,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "NewBloomFilterPolicy",
+ "file": "/home/ilya/A/util/bloom.cc",
+ "line": 52,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Key",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "Reset",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 11,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "Add",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 15,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "FilterSize",
+ "file": "/home/ilya/A/util/bloom_test.cc",
+ "line": 35,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "key",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 22,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "Lookup",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 26,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "SetCapacity",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 65,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "TotalCharge",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 75,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "HashSlice",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 207,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Shard",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 210,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Lookup",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 235,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Release",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 245,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Erase",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 248,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "Value",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 254,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "NewId",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 259,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "NewLRUCache",
+ "file": "/home/ilya/A/util/cache.cc",
+ "line": 270,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "EncodeKey",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "DecodeKey",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 3,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "EncodeValue",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 9,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "DecodeValue",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 14,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Deleter",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 17,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "Insert",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 39,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 3
+ },
+ {
+ "name": "InsertAndReturnHandle",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 45,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 3
+ },
+ {
+ "name": "Erase",
+ "file": "/home/ilya/A/util/cache_test.cc",
+ "line": 53,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "PutFixed32",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 1,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "PutFixed64",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 3,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "PutVarint32",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 36,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "PutVarint64",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 53,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "PutLengthPrefixedSlice",
+ "file": "/home/ilya/A/util/coding.cc",
+ "line": 58,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "EncodeFixed32",
+ "file": "/home/ilya/A/util/coding.h",
+ "line": 27,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 2
+ },
+ {
+ "name": "EncodeFixed64",
+ "file": "/home/ilya/A/util/coding.h",
+ "line": 33,
+ "ccn": 1,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "DecodeFixed32",
+ "file": "/home/ilya/A/util/coding.h",
+ "line": 45,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "DecodeFixed64",
+ "file": "/home/ilya/A/util/coding.h",
+ "line": 51,
+ "ccn": 1,
+ "nloc": 9,
+ "params": 1
+ },
+ {
+ "name": "TEST",
+ "file": "/home/ilya/A/util/coding_test.cc",
+ "line": 41,
+ "ccn": 1,
+ "nloc": 18,
+ "params": 2
+ },
+ {
+ "name": "Name",
+ "file": "/home/ilya/A/util/comparator.cc",
+ "line": 9,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Compare",
+ "file": "/home/ilya/A/util/comparator.cc",
+ "line": 12,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "BytewiseComparator",
+ "file": "/home/ilya/A/util/comparator.cc",
+ "line": 48,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "ReadUint32LE",
+ "file": "/home/ilya/A/util/crc32c.cc",
+ "line": 240,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "RoundUp",
+ "file": "/home/ilya/A/util/crc32c.cc",
+ "line": 242,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "CanAccelerateCRC32C",
+ "file": "/home/ilya/A/util/crc32c.cc",
+ "line": 246,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "Value",
+ "file": "/home/ilya/A/util/crc32c.h",
+ "line": 5,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 2
+ },
+ {
+ "name": "Mask",
+ "file": "/home/ilya/A/util/crc32c.h",
+ "line": 12,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Unmask",
+ "file": "/home/ilya/A/util/crc32c.h",
+ "line": 15,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 1
+ },
+ {
+ "name": "WriteStringToFile",
+ "file": "/home/ilya/A/util/env.cc",
+ "line": 51,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "WriteStringToFileSync",
+ "file": "/home/ilya/A/util/env.cc",
+ "line": 57,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 3
+ },
+ {
+ "name": "acquires_allowed_",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 52,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Release",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 70,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "Flush",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 226,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "FlushBuffer",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 235,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "IsManifest",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 298,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "LockOrUnlock",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 307,
+ "ccn": 1,
+ "nloc": 8,
+ "params": 2
+ },
+ {
+ "name": "fd",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 325,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "filename",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 326,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "FileExists",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 430,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "NowMicros",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 555,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 0
+ },
+ {
+ "name": "SleepForMicroseconds",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 560,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "BackgroundThreadEntryPoint",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 563,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "MaxMmaps",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 589,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "env",
+ "file": "/home/ilya/A/util/env_posix.cc",
+ "line": 681,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "GetArgvZero",
+ "file": "/home/ilya/A/util/env_posix_test.cc",
+ "line": 18,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 0
+ },
+ {
+ "name": "GetMaxFileDescriptor",
+ "file": "/home/ilya/A/util/env_posix_test.cc",
+ "line": 35,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "SetFileLimits",
+ "file": "/home/ilya/A/util/env_posix_test.cc",
+ "line": 86,
+ "ccn": 1,
+ "nloc": 2,
+ "params": 2
+ },
+ {
+ "name": "Run",
+ "file": "/home/ilya/A/util/env_test.cc",
+ "line": 57,
+ "ccn": 1,
+ "nloc": 5,
+ "params": 1
+ },
+ {
+ "name": "Run",
+ "file": "/home/ilya/A/util/env_test.cc",
+ "line": 78,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "ThreadBody",
+ "file": "/home/ilya/A/util/env_test.cc",
+ "line": 123,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "ScopedHandle",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 55,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
+ },
+ {
+ "name": "is_valid",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 68,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "get",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 73,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Release",
+ "file": "/home/ilya/A/util/env_windows.cc",
"line": 74,
"ccn": 1,
"nloc": 3,
"params": 0
},
{
- "name": "addModuleRoutes",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 70,
- "ccn": 1,
- "nloc": 7,
- "params": 3
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 85,
- "ccn": 1,
- "nloc": 3,
- "params": 0
- },
- {
- "name": "addUknownRoute",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 80,
- "ccn": 1,
- "nloc": 8,
- "params": 1
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 95,
- "ccn": 1,
- "nloc": 3,
- "params": 0
- },
- {
- "name": "addErrHandler",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 91,
- "ccn": 1,
- "nloc": 7,
- "params": 1
- },
- {
- "name": "runExpressServer",
- "file": "/home/claude/vkr/B/src/index.mjs",
- "line": 116,
- "ccn": 1,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "float32ArrayToBuffer",
- "file": "/home/claude/vkr/B/src/utils.mjs",
- "line": 56,
- "ccn": 1,
- "nloc": 4,
- "params": 1
- },
- {
- "name": "clamp",
- "file": "/home/claude/vkr/B/src/utils.mjs",
- "line": 61,
+ "name": "acquires_allowed_",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 81,
"ccn": 1,
"nloc": 1,
- "params": 3
- }
- ]
- },
- "src/database": {
- "files": [
- "/home/claude/vkr/B/src/database/dbQueries.mjs",
- "/home/claude/vkr/B/src/database/dbRepository.mjs"
- ],
- "language": "mixed",
- "total_nloc": 32,
- "total_functions": 4,
- "avg_ccn": 1.0,
- "max_ccn": 1,
- "heavy_functions_count": 0,
- "heavy_functions_ratio": 0.0,
- "coupling_out": 1,
- "coupling_in": 2,
- "instability": 0.333,
- "has_cycles": true,
- "dependencies": [
- "src"
- ],
- "dependents": [
- "src",
- "src/routes"
- ],
- "functions": [
- {
- "name": "addVector",
- "file": "/home/claude/vkr/B/src/database/dbRepository.mjs",
- "line": 11,
- "ccn": 1,
- "nloc": 9,
- "params": 3
- },
- {
- "name": "updateVector",
- "file": "/home/claude/vkr/B/src/database/dbRepository.mjs",
- "line": 21,
- "ccn": 1,
- "nloc": 9,
- "params": 3
- },
- {
- "name": "deleteVector",
- "file": "/home/claude/vkr/B/src/database/dbRepository.mjs",
- "line": 31,
- "ccn": 1,
- "nloc": 4,
"params": 1
},
{
- "name": "getNearestVector",
- "file": "/home/claude/vkr/B/src/database/dbRepository.mjs",
- "line": 36,
- "ccn": 1,
- "nloc": 10,
- "params": 4
- }
- ]
- },
- "src/error-handlers": {
- "files": [
- "/home/claude/vkr/B/src/error-handlers/errorHandler.mjs"
- ],
- "language": "mixed",
- "total_nloc": 37,
- "total_functions": 3,
- "avg_ccn": 2.0,
- "max_ccn": 3,
- "heavy_functions_count": 0,
- "heavy_functions_ratio": 0.0,
- "coupling_out": 2,
- "coupling_in": 1,
- "instability": 0.667,
- "has_cycles": true,
- "dependencies": [
- "src",
- "src/middlewares"
- ],
- "dependents": [
- "src"
- ],
- "functions": [
- {
- "name": "generateResponse",
- "file": "/home/claude/vkr/B/src/error-handlers/errorHandler.mjs",
- "line": 90,
- "ccn": 3,
- "nloc": 16,
- "params": 2
- },
- {
- "name": "handleErrorCase",
- "file": "/home/claude/vkr/B/src/error-handlers/errorHandler.mjs",
- "line": 107,
- "ccn": 2,
- "nloc": 10,
- "params": 3
- },
- {
- "name": "logError",
- "file": "/home/claude/vkr/B/src/error-handlers/errorHandler.mjs",
- "line": 78,
- "ccn": 1,
- "nloc": 11,
- "params": 3
- }
- ]
- },
- "src/middlewares": {
- "files": [
- "/home/claude/vkr/B/src/middlewares/addLogInfo.mjs",
- "/home/claude/vkr/B/src/middlewares/builder.mjs",
- "/home/claude/vkr/B/src/middlewares/index.mjs",
- "/home/claude/vkr/B/src/middlewares/logger.mjs",
- "/home/claude/vkr/B/src/middlewares/parser.mjs"
- ],
- "language": "mixed",
- "total_nloc": 267,
- "total_functions": 15,
- "avg_ccn": 3.53,
- "max_ccn": 8,
- "heavy_functions_count": 0,
- "heavy_functions_ratio": 0.0,
- "coupling_out": 1,
- "coupling_in": 3,
- "instability": 0.25,
- "has_cycles": true,
- "dependencies": [
- "src"
- ],
- "dependents": [
- "src",
- "src/error-handlers",
- "src/routes"
- ],
- "functions": [
- {
- "name": "findBoundary",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 78,
- "ccn": 8,
- "nloc": 27,
- "params": 3
- },
- {
- "name": "parsePart",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 106,
- "ccn": 7,
- "nloc": 34,
- "params": 1
- },
- {
- "name": "parse",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 14,
- "ccn": 6,
- "nloc": 38,
- "params": 3
- },
- {
- "name": "getNextPart",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 159,
- "ccn": 6,
- "nloc": 39,
- "params": 3
- },
- {
- "name": "parseMultipart",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 205,
- "ccn": 6,
- "nloc": 35,
- "params": 2
- },
- {
- "name": "getBoundary",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 146,
- "ccn": 4,
- "nloc": 12,
- "params": 1
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 42,
- "ccn": 3,
- "nloc": 6,
- "params": 0
- },
- {
- "name": "boundaryValid",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 68,
- "ccn": 3,
- "nloc": 9,
- "params": 3
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/middlewares/builder.mjs",
- "line": 18,
- "ccn": 2,
- "nloc": 12,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/middlewares/builder.mjs",
- "line": 40,
- "ccn": 2,
- "nloc": 15,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 32,
- "ccn": 2,
- "nloc": 6,
- "params": 0
- },
- {
- "name": "addLogInfo",
- "file": "/home/claude/vkr/B/src/middlewares/addLogInfo.mjs",
- "line": 3,
- "ccn": 1,
- "nloc": 6,
- "params": 3
- },
- {
- "name": "buildMultipart",
- "file": "/home/claude/vkr/B/src/middlewares/builder.mjs",
- "line": 12,
- "ccn": 1,
- "nloc": 15,
- "params": 2
- },
- {
- "name": "customSuccessMessage",
- "file": "/home/claude/vkr/B/src/middlewares/logger.mjs",
- "line": 26,
- "ccn": 1,
- "nloc": 9,
- "params": 3
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/middlewares/parser.mjs",
- "line": 51,
+ "name": "Release",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 102,
"ccn": 1,
"nloc": 4,
"params": 0
- }
- ]
- },
- "src/routes": {
- "files": [
- "/home/claude/vkr/B/src/routes/add.mjs",
- "/home/claude/vkr/B/src/routes/compare.mjs",
- "/home/claude/vkr/B/src/routes/delete.mjs",
- "/home/claude/vkr/B/src/routes/extract.mjs",
- "/home/claude/vkr/B/src/routes/health.mjs",
- "/home/claude/vkr/B/src/routes/identify.mjs",
- "/home/claude/vkr/B/src/routes/index.mjs",
- "/home/claude/vkr/B/src/routes/match.mjs",
- "/home/claude/vkr/B/src/routes/memory.mjs",
- "/home/claude/vkr/B/src/routes/update.mjs",
- "/home/claude/vkr/B/src/routes/verify.mjs"
- ],
- "language": "mixed",
- "total_nloc": 635,
- "total_functions": 24,
- "avg_ccn": 6.46,
- "max_ccn": 21,
- "heavy_functions_count": 5,
- "heavy_functions_ratio": 0.208,
- "coupling_out": 3,
- "coupling_in": 1,
- "instability": 0.75,
- "has_cycles": true,
- "dependencies": [
- "src",
- "src/database",
- "src/middlewares"
- ],
- "dependents": [
- "src"
- ],
- "functions": [
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/identify.mjs",
- "line": 19,
- "ccn": 21,
- "nloc": 79,
- "params": 0
},
{
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/add.mjs",
- "line": 13,
- "ccn": 16,
- "nloc": 65,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/match.mjs",
- "line": 13,
- "ccn": 16,
- "nloc": 71,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/update.mjs",
- "line": 11,
- "ccn": 16,
- "nloc": 61,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/verify.mjs",
- "line": 19,
- "ccn": 15,
- "nloc": 62,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/compare.mjs",
- "line": 9,
- "ccn": 9,
- "nloc": 46,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/extract.mjs",
- "line": 8,
- "ccn": 9,
- "nloc": 27,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/health.mjs",
- "line": 19,
- "ccn": 7,
- "nloc": 47,
- "params": 0
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/delete.mjs",
- "line": 8,
- "ccn": 5,
- "nloc": 21,
- "params": 0
- },
- {
- "name": "verifyParams",
- "file": "/home/claude/vkr/B/src/routes/identify.mjs",
- "line": 121,
- "ccn": 5,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "verifyParams",
- "file": "/home/claude/vkr/B/src/routes/match.mjs",
- "line": 125,
- "ccn": 5,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "getId",
- "file": "/home/claude/vkr/B/src/routes/add.mjs",
- "line": 95,
- "ccn": 4,
- "nloc": 10,
- "params": 1
- },
- {
- "name": "getId",
- "file": "/home/claude/vkr/B/src/routes/delete.mjs",
- "line": 44,
- "ccn": 4,
- "nloc": 10,
- "params": 1
- },
- {
- "name": "getId",
- "file": "/home/claude/vkr/B/src/routes/update.mjs",
- "line": 108,
- "ccn": 4,
- "nloc": 10,
- "params": 1
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/memory.mjs",
- "line": 6,
- "ccn": 3,
- "nloc": 16,
- "params": 0
- },
- {
- "name": "parseTemplate",
- "file": "/home/claude/vkr/B/src/routes/add.mjs",
- "line": 83,
- "ccn": 2,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "parseTemplate",
- "file": "/home/claude/vkr/B/src/routes/delete.mjs",
- "line": 32,
- "ccn": 2,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "parseMeta",
- "file": "/home/claude/vkr/B/src/routes/identify.mjs",
- "line": 109,
- "ccn": 2,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "parseMeta",
- "file": "/home/claude/vkr/B/src/routes/match.mjs",
- "line": 100,
- "ccn": 2,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "parseVectors",
- "file": "/home/claude/vkr/B/src/routes/match.mjs",
- "line": 112,
- "ccn": 2,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "parseTemplate",
- "file": "/home/claude/vkr/B/src/routes/update.mjs",
- "line": 84,
- "ccn": 2,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "parseVectors",
- "file": "/home/claude/vkr/B/src/routes/update.mjs",
- "line": 96,
- "ccn": 2,
- "nloc": 11,
- "params": 1
- },
- {
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/identify.mjs",
- "line": 87,
+ "name": "Flush",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 240,
"ccn": 1,
- "nloc": 6,
+ "nloc": 1,
"params": 0
},
{
- "name": "(anonymous)",
- "file": "/home/claude/vkr/B/src/routes/match.mjs",
- "line": 85,
+ "name": "FlushBuffer",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 252,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 0
+ },
+ {
+ "name": "handle",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 293,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "filename",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 294,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "FileExists",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 414,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "NowMicros",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 553,
"ccn": 1,
"nloc": 5,
"params": 0
+ },
+ {
+ "name": "SleepForMicroseconds",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 561,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "BackgroundThreadEntryPoint",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 566,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "MaxMmaps",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 577,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "env",
+ "file": "/home/ilya/A/util/env_windows.cc",
+ "line": 635,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "SetFileLimits",
+ "file": "/home/ilya/A/util/env_windows_test.cc",
+ "line": 3,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "main",
+ "file": "/home/ilya/A/util/env_windows_test.cc",
+ "line": 39,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "Histogram",
+ "file": "/home/ilya/A/util/histogram.h",
+ "line": 3,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 0
+ },
+ {
+ "name": "AppendNumberTo",
+ "file": "/home/ilya/A/util/logging.cc",
+ "line": 2,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 2
+ },
+ {
+ "name": "NumberToString",
+ "file": "/home/ilya/A/util/logging.cc",
+ "line": 24,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "EscapeString",
+ "file": "/home/ilya/A/util/logging.cc",
+ "line": 28,
+ "ccn": 1,
+ "nloc": 3,
+ "params": 1
+ },
+ {
+ "name": "ConsumeDecimalNumberRoundtripTest",
+ "file": "/home/ilya/A/util/logging_test.cc",
+ "line": 32,
+ "ccn": 1,
+ "nloc": 9,
+ "params": 2
+ },
+ {
+ "name": "ConsumeDecimalNumberOverflowTest",
+ "file": "/home/ilya/A/util/logging_test.cc",
+ "line": 78,
+ "ccn": 1,
+ "nloc": 4,
+ "params": 1
+ },
+ {
+ "name": "ConsumeDecimalNumberNoDigitsTest",
+ "file": "/home/ilya/A/util/logging_test.cc",
+ "line": 104,
+ "ccn": 1,
+ "nloc": 6,
+ "params": 1
+ },
+ {
+ "name": "NoDestructor",
+ "file": "/home/ilya/A/util/no_destructor.h",
+ "line": 6,
+ "ccn": 1,
+ "nloc": 11,
+ "params": 1
+ },
+ {
+ "name": "get",
+ "file": "/home/ilya/A/util/no_destructor.h",
+ "line": 26,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "Uniform",
+ "file": "/home/ilya/A/util/random.h",
+ "line": 22,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "OneIn",
+ "file": "/home/ilya/A/util/random.h",
+ "line": 26,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "Skewed",
+ "file": "/home/ilya/A/util/random.h",
+ "line": 27,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 1
+ },
+ {
+ "name": "RandomSeed",
+ "file": "/home/ilya/A/util/testutil.h",
+ "line": 12,
+ "ccn": 1,
+ "nloc": 1,
+ "params": 0
+ },
+ {
+ "name": "num_writable_file_errors_",
+ "file": "/home/ilya/A/util/testutil.h",
+ "line": 29,
+ "ccn": 1,
+ "nloc": 0,
+ "params": 1
}
]
}
diff --git a/prog/arch-researcher/models.py b/prog/arch-researcher/models.py
index 4a08146..0fbedcd 100644
--- a/prog/arch-researcher/models.py
+++ b/prog/arch-researcher/models.py
@@ -23,7 +23,7 @@ class FunctionMetrics:
ccn: int # Цикломатическая сложность (McCabe)
nloc: int # Строк кода без комментариев
params: int # Число параметров
- language: str # "cpp" | "js"
+ language: str # "cpp"
@property
def is_complex(self) -> bool:
@@ -40,7 +40,7 @@ class ModuleMetrics:
name: str # Имя модуля (путь относительно корня)
files: List[str] = field(default_factory=list)
functions: List[FunctionMetrics] = field(default_factory=list)
- language: str = "mixed" # "cpp" | "js" | "mixed"
+ language: str = "" # "cpp"
# Агрегированные показатели (заполняются MetricsEngine)
total_nloc: int = 0
diff --git a/prog/arch-researcher/utils/code_analyzer.py b/prog/arch-researcher/utils/code_analyzer.py
index dfc20a4..ea2b057 100644
--- a/prog/arch-researcher/utils/code_analyzer.py
+++ b/prog/arch-researcher/utils/code_analyzer.py
@@ -5,7 +5,7 @@
методом подсчёта ветвлений в тексте кода (лексический подход),
аналогично тому, как это делает библиотека lizard.
-Поддерживаемые языки: C, C++, JavaScript, TypeScript.
+Поддерживаемые языки: C, C++.
Точность: comparable с lizard при отсутствии установленного Clang.
Для продакшн-использования рекомендуется установить lizard:
@@ -15,8 +15,6 @@
from __future__ import annotations
import re
-import tokenize
-import io
from dataclasses import dataclass
from pathlib import Path
from typing import List, Optional
@@ -29,35 +27,17 @@ _BRANCH_KEYWORDS_CPP = re.compile(
re.MULTILINE,
)
-_BRANCH_KEYWORDS_JS = re.compile(
- r'\b(if|else\s+if|for|while|do|switch|case|catch|&&|\|\||\?(?!:))\b',
- re.MULTILINE,
-)
-
# Сигнатуры функций C/C++
_CPP_FUNC = re.compile(
r'^(?:[\w:*&<>\s]+?)\s+(\w+)\s*\(([^)]*)\)\s*(?:const\s*)?(?:override\s*)?(?:noexcept[^{]*)?\{',
re.MULTILINE,
)
-# Сигнатуры функций JS/TS
-_JS_FUNC = re.compile(
- r'(?:'
- r'function\s+(\w+)\s*\(([^)]*)\)' # function foo(...)
- r'|(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s*)?\(([^)]*)\)\s*=>' # arrow
- r'|(\w+)\s*:\s*(?:async\s*)?function\s*\(([^)]*)\)' # method: function
- r'|(?:async\s+)?(\w+)\s*\(([^)]*)\)\s*\{' # method shorthand
- r')',
- re.MULTILINE,
-)
-
# Строки и комментарии — для удаления перед анализом
_CPP_COMMENT_LINE = re.compile(r'//[^\n]*')
_CPP_COMMENT_BLOCK = re.compile(r'/\*.*?\*/', re.DOTALL)
_CPP_STRING = re.compile(r'"(?:[^"\\]|\\.)*"|\'(?:[^\'\\]|\\.)*\'')
-_JS_TEMPLATE = re.compile(r'`[^`]*`', re.DOTALL)
-
@dataclass
class FunctionInfo:
@@ -90,18 +70,15 @@ def analyze_file(file_path: str) -> Optional[FileAnalysisResult]:
path = Path(file_path)
suffix = path.suffix.lower()
+ if suffix not in (".cpp", ".cxx", ".cc", ".c", ".hpp", ".hxx", ".h"):
+ return None
+
try:
text = path.read_text(encoding="utf-8", errors="replace")
except OSError:
return None
- if suffix in (".cpp", ".cxx", ".cc", ".c", ".hpp", ".hxx", ".h"):
- functions = _analyze_cpp(text, file_path)
- elif suffix in (".js", ".mjs", ".cjs", ".ts"):
- functions = _analyze_js(text, file_path)
- else:
- return None
-
+ functions = _analyze_cpp(text, file_path)
return FileAnalysisResult(filename=file_path, function_list=functions)
@@ -149,63 +126,6 @@ def _analyze_cpp(text: str, filename: str) -> List[FunctionInfo]:
return functions
-# ------------------------------------------------------------------
-# JavaScript / TypeScript анализ
-# ------------------------------------------------------------------
-
-def _analyze_js(text: str, filename: str) -> List[FunctionInfo]:
- """Анализирует JS/TS код."""
- # Удаляем шаблонные строки и комментарии
- clean = _CPP_COMMENT_BLOCK.sub(' ', text)
- clean = _CPP_COMMENT_LINE.sub('', clean)
- clean = _JS_TEMPLATE.sub('``', clean)
- clean = _CPP_STRING.sub('""', clean)
-
- functions: List[FunctionInfo] = []
- seen_positions: set = set()
-
- for match in _JS_FUNC.finditer(clean):
- # Определяем имя и параметры из разных групп
- name = (
- match.group(1) or match.group(3) or
- match.group(5) or match.group(7) or "anonymous"
- )
- params_str = (
- match.group(2) or match.group(4) or
- match.group(6) or match.group(8) or ""
- )
-
- start_pos = match.start()
- if start_pos in seen_positions:
- continue
- seen_positions.add(start_pos)
-
- start_line = text[:start_pos].count('\n') + 1
-
- # Ищем открывающую фигурную скобку
- brace_pos = clean.find('{', match.end())
- if brace_pos == -1:
- continue
-
- body = _extract_body(clean, brace_pos)
- if body is None:
- continue
-
- nloc = _count_nloc(body)
- ccn = 1 + len(_BRANCH_KEYWORDS_JS.findall(body))
- params = _count_params(params_str)
-
- functions.append(FunctionInfo(
- name=name,
- start_line=start_line,
- nloc=nloc,
- cyclomatic_complexity=ccn,
- parameter_count=params,
- ))
-
- return functions
-
-
# ------------------------------------------------------------------
# Вспомогательные функции
# ------------------------------------------------------------------