-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsonar-project.properties
More file actions
78 lines (72 loc) · 4.31 KB
/
Copy pathsonar-project.properties
File metadata and controls
78 lines (72 loc) · 4.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
sonar.projectKey=RandomCodeSpace_asr
sonar.organization=randomcodespace
# Source code we want analysed
sonar.sources=src/runtime,examples
sonar.tests=tests
# Coverage and test reports
sonar.python.coverage.reportPaths=coverage.xml
sonar.python.xunit.reportPath=junit.xml
sonar.python.version=3.11
# Exclude generated/build/utility paths
sonar.exclusions=dist/**,scripts/**,docs/**,.venv/**,incidents/**
sonar.test.exclusions=tests/fixtures/**
# Copy-Paste Detection exclusions.
# * ``runtime/tools/gateway.py`` — deliberate sync (``_run``) + async
# (``_arun``) mirror; every ``BaseTool`` must support both
# invocation styles. The sibling blocks look like duplication to
# CPD but are an architectural requirement, not drift; modifying
# them in tandem is the project convention.
# * ``runtime/agents/responsive.py`` — the "responsive" agent-kind
# factory mirrors ``runtime/graph.py:make_agent_node`` by design:
# ``_build_agent_nodes`` dispatches to either factory based on
# ``skill.kind``. Same pattern as gateway above.
sonar.cpd.exclusions=src/runtime/tools/gateway.py,src/runtime/agents/responsive.py
# Coverage exclusions — kept in sync with [tool.coverage.run].omit in
# pyproject.toml so the local CI gate and the SonarCloud gate agree on
# which files are measurement targets:
# * ``src/runtime/ui.py`` — 1573-line Streamlit shell, exercised
# manually in a browser, not by the unit-test suite. Pending a
# dedicated UI-testing milestone.
# * ``src/runtime/__main__.py`` — argparse-only CLI entry; smoke-tested
# by hand, not pytest.
# * ``src/runtime/checkpointer_postgres.py`` — prod-only Postgres
# saver; CI runs sqlite-only.
# * ``src/runtime/triggers/transports/plugin.py`` — stub transport.
# * ``examples/**`` — reference apps; their MCP servers are exercised
# via integration tests under ``tests/`` but pytest's
# ``--cov=src/runtime`` does not instrument them, so coverage data
# never reaches SonarCloud for these files.
# * ``src/runtime/__init__.py`` — re-export surface only.
sonar.coverage.exclusions=src/runtime/__init__.py,src/runtime/ui.py,src/runtime/__main__.py,src/runtime/checkpointer_postgres.py,src/runtime/triggers/transports/plugin.py,examples/**,ui/**
# Suppress python:S7503 (async-without-await) for framework-driven async
# signatures. Each suppressed file has one or more `async def` whose body
# is synchronous because the surrounding framework requires async:
# * mcp_servers/** + examples/**/mcp_server.py — FastMCP tool handlers
# * graph.py + agents/supervisor.py — LangGraph node contract
# * llm.py — langchain BaseChatModel.ainvoke / structured-runnable contract
# * api.py — FastAPI handler / Depends callable contract
# * service.py — service.submit_async() expects an awaitable
# * tools/approval_watchdog.py + learning/scheduler.py — APScheduler
# async-callback contract
# * triggers/auth.py — FastAPI Depends() bearer dependency contract
sonar.issue.ignore.multicriteria=e1,e2,e3,e4,e5,e6,e7,e8,e9,e10
sonar.issue.ignore.multicriteria.e1.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e1.resourceKey=src/runtime/mcp_servers/**/*.py
sonar.issue.ignore.multicriteria.e2.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e2.resourceKey=src/runtime/graph.py
sonar.issue.ignore.multicriteria.e3.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e3.resourceKey=examples/**/mcp_server.py
sonar.issue.ignore.multicriteria.e4.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e4.resourceKey=src/runtime/learning/scheduler.py
sonar.issue.ignore.multicriteria.e5.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e5.resourceKey=src/runtime/llm.py
sonar.issue.ignore.multicriteria.e6.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e6.resourceKey=src/runtime/agents/supervisor.py
sonar.issue.ignore.multicriteria.e7.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e7.resourceKey=src/runtime/api.py
sonar.issue.ignore.multicriteria.e8.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e8.resourceKey=src/runtime/service.py
sonar.issue.ignore.multicriteria.e9.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e9.resourceKey=src/runtime/tools/approval_watchdog.py
sonar.issue.ignore.multicriteria.e10.ruleKey=python:S7503
sonar.issue.ignore.multicriteria.e10.resourceKey=src/runtime/triggers/auth.py