Ctrl K
ComunidadGuías…

sonar-project.properties

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# SonarCloud 프로젝트 설정 — xzawed/SCAManager
# SonarCloud project configuration — xzawed/SCAManager
#
# 필수: GitHub Secrets 에 SONAR_TOKEN 설정 필요
# Required: set SONAR_TOKEN in GitHub Secrets.
# SonarCloud → My Account → Security → Generate Token
#
# 프로젝트 생성 시 organization / projectKey 는 SonarCloud 에서
# When creating the project, use the organization/projectKey suggested by SonarCloud
# 자동 제안되는 값을 사용 (기본 포맷: <github-org>_<repo-name>)
# (default format: <github-org>_<repo-name>).

sonar.organization=xzawed
sonar.projectKey=xzawed_SCAManager
sonar.projectName=SCAManager
sonar.projectVersion=1.0

# 소스 & 테스트 분리
# Separate source and test roots.
sonar.sources=src
sonar.tests=tests
# 사이클 93 Step 2: src/scripts/** 추가 — production import X (사용자 로컬 1회 실행 도구, README.md 명시).
# Cycle 93 Step 2: added src/scripts/** — NOT a production import (local one-shot tool, see README.md).
sonar.exclusions=**/__pycache__/**,**/*.pyc,**/migrations/**,alembic/versions/**,docs/**,e2e/**,src/scripts/**,src/static/mockup-polar.html
sonar.test.inclusions=tests/**/*.py

# JavaScript 제외 — Jinja2 {{ }} 구문이 있는 HTML 템플릿은 JS 파서가 파싱 불가
# Exclude HTML templates from JS analysis — Jinja2 {{ }} syntax causes JS parser errors.
# (src/templates/**/*.html 은 Web 룰셋 분석 대상에서는 제외하지 않음 — CDN SRI 체크 등 유지)
# (src/templates/**/*.html is NOT excluded from Web analysis — CDN SRI checks etc. still apply.)
sonar.javascript.exclusions=src/templates/**/*.html,src/static/mockup-polar.html

# CPD 제외 — 테스트 파일(반복 패치 블록)과 Jinja2 HTML 템플릿(구조적 반복) 은 CPD 대상 제외
# CPD exclusions — test files (repeated mock patch blocks) and Jinja2 HTML templates
# (structural repetition) are excluded from Copy-Paste Detection.
sonar.cpd.exclusions=tests/**,src/templates/**

# Python 버전 (SonarCloud 가 파일 파싱 시 사용)
# Python version used by SonarCloud when parsing files.
sonar.python.version=3.12

# pytest + coverage 연동 (CI 에서 coverage.xml / pytest-results.xml 생성)
# pytest + coverage integration (coverage.xml / pytest-results.xml generated in CI).
sonar.python.coverage.reportPaths=coverage.xml
sonar.python.xunit.reportPath=pytest-results.xml

# 외부 린터 결과도 흡수 (선택 — SonarCloud 자체 분석과 중복되나 기록 목적)
# Also import external linter results (optional — overlaps with SonarCloud's own analysis, kept for record).
# sonar.python.pylint.reportPaths=pylint-report.txt
# sonar.python.bandit.reportPaths=bandit-report.json

# 인코딩 & SCM
# Encoding & SCM settings.
sonar.sourceEncoding=UTF-8
sonar.scm.provider=git

# False Positive 억제 규칙 (2026-04-23 Phase Q.1)
# False positive suppression rules (2026-04-23 Phase Q.1).
# - python:S6418 (하드코딩 시크릿 감지) — 테스트·E2E 픽스처의 "token"/"SECRET" 문자열은 실제 시크릿 아님
#   python:S6418 (hardcoded secret detection) — "token"/"SECRET" strings in test/E2E fixtures are not real secrets.
# - python:S930 (함수 인자 수 불일치) — mock 기반 keyword-only 호출을 정적 분석이 오인
#   python:S930 (argument count mismatch) — static analysis misidentifies mock-based keyword-only calls.
# - Web:S5725 (CDN SRI 해시 누락) — Hotspot 3건. Rating 영향 없음. DNS 제약 환경에서 해시 계산 불가.
#   Web:S5725 (CDN SRI hash missing) — 3 hotspots, no rating impact; hash cannot be computed in DNS-restricted envs.
#   후속 Phase: Chart.js / Pretendard 를 src/static/ 에 로컬 번들로 전환해 CDN 의존 제거.
#   Follow-up: bundle Chart.js / Pretendard locally under src/static/ to eliminate CDN dependency.
sonar.issue.ignore.multicriteria=fp_testsecret,fp_e2esecret,fp_testargs,fp_cdnsri

sonar.issue.ignore.multicriteria.fp_testsecret.ruleKey=python:S6418
sonar.issue.ignore.multicriteria.fp_testsecret.resourceKey=tests/**/*.py

sonar.issue.ignore.multicriteria.fp_e2esecret.ruleKey=python:S6418
sonar.issue.ignore.multicriteria.fp_e2esecret.resourceKey=e2e/**/*.py

sonar.issue.ignore.multicriteria.fp_testargs.ruleKey=python:S930
sonar.issue.ignore.multicriteria.fp_testargs.resourceKey=tests/**/*.py

sonar.issue.ignore.multicriteria.fp_cdnsri.ruleKey=Web:S5725
sonar.issue.ignore.multicriteria.fp_cdnsri.resourceKey=src/templates/**/*.html