-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathsonar-project.properties
More file actions
133 lines (116 loc) · 7.4 KB
/
Copy pathsonar-project.properties
File metadata and controls
133 lines (116 loc) · 7.4 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# SonarQube Analysis Configuration — DocuThinker
# Production-ready multi-module project configuration
# Run: sonar-scanner -Dsonar.host.url=<URL> -Dsonar.token=<TOKEN>
# ──────────────────────────────────────────────────────────────
# Project Identification
# ──────────────────────────────────────────────────────────────
sonar.projectKey=docuthinker
sonar.projectName=DocuThinker AI Application
sonar.projectVersion=1.1.0
sonar.organization=hoangsonww
# ──────────────────────────────────────────────────────────────
# Multi-Module Source Layout
# ──────────────────────────────────────────────────────────────
sonar.modules=frontend,backend,orchestrator,ai_ml
# Frontend (React 18 + Material-UI)
frontend.sonar.projectName=DocuThinker Frontend
frontend.sonar.projectBaseDir=frontend
frontend.sonar.sources=src
frontend.sonar.tests=src
frontend.sonar.test.inclusions=**/*.test.js,**/*.test.jsx,**/*.test.ts,**/*.test.tsx,**/*.spec.js,**/*.spec.jsx
frontend.sonar.exclusions=**/node_modules/**,**/build/**,**/dist/**,**/coverage/**,**/__mocks__/**,**/serviceWorker.js
frontend.sonar.javascript.lcov.reportPaths=coverage/lcov.info
frontend.sonar.coverage.exclusions=**/*.test.js,**/*.test.jsx,**/*.test.ts,**/*.test.tsx,**/*.spec.js,**/setupTests.js,**/*.config.js,**/reportWebVitals.js
# Backend (Express.js + Firebase Auth)
backend.sonar.projectName=DocuThinker Backend
backend.sonar.projectBaseDir=backend
backend.sonar.sources=.
backend.sonar.tests=__tests__
backend.sonar.test.inclusions=**/__tests__/**/*.js,**/*.test.js,**/*.spec.js
backend.sonar.exclusions=**/node_modules/**,**/coverage/**,**/__tests__/**
backend.sonar.javascript.lcov.reportPaths=coverage/lcov.info
backend.sonar.coverage.exclusions=**/*.test.js,**/*.spec.js,**/*.config.js
# Orchestrator (Agentic Layer — Node.js)
orchestrator.sonar.projectName=DocuThinker Orchestrator
orchestrator.sonar.projectBaseDir=orchestrator
orchestrator.sonar.sources=.
orchestrator.sonar.tests=__tests__
orchestrator.sonar.test.inclusions=**/__tests__/**/*.js,**/*.test.js,**/*.spec.js
orchestrator.sonar.exclusions=**/node_modules/**,**/coverage/**,**/__tests__/**
orchestrator.sonar.javascript.lcov.reportPaths=coverage/lcov.info
orchestrator.sonar.coverage.exclusions=**/*.test.js,**/*.spec.js,**/*.config.js
# AI/ML (Python LangGraph + CrewAI)
ai_ml.sonar.projectName=DocuThinker AI/ML
ai_ml.sonar.projectBaseDir=ai_ml
ai_ml.sonar.sources=.
ai_ml.sonar.tests=tests
ai_ml.sonar.test.inclusions=**/tests/**/*.py,**/test_*.py,**/*_test.py
ai_ml.sonar.exclusions=**/__pycache__/**,**/*.pyc,**/venv/**,**/.venv/**,**/htmlcov/**
ai_ml.sonar.python.coverage.reportPaths=coverage.xml
ai_ml.sonar.coverage.exclusions=**/tests/**,**/test_*.py,**/*_test.py,**/conftest.py
# ──────────────────────────────────────────────────────────────
# Global Exclusions
# ──────────────────────────────────────────────────────────────
sonar.exclusions=\
**/node_modules/**,\
**/build/**,\
**/dist/**,\
**/coverage/**,\
**/__pycache__/**,\
**/venv/**,\
**/.venv/**,\
**/vendor/**,\
**/*.min.js,\
**/*.min.css,\
**/package-lock.json,\
**/terraform/**/*.tfstate,\
**/helm/**,\
**/kubernetes/**,\
**/monitoring/**,\
**/observability/**,\
**/*.md,\
**/images/**,\
**/uploads/**
# ──────────────────────────────────────────────────────────────
# Language & Encoding
# ──────────────────────────────────────────────────────────────
sonar.sourceEncoding=UTF-8
# ──────────────────────────────────────────────────────────────
# SCM (Git)
# ──────────────────────────────────────────────────────────────
sonar.scm.provider=git
sonar.scm.disabled=false
sonar.scm.revision=auto
# ──────────────────────────────────────────────────────────────
# Quality Gate
# ──────────────────────────────────────────────────────────────
sonar.qualitygate.wait=true
sonar.qualitygate.timeout=600
# ──────────────────────────────────────────────────────────────
# Issue Suppression Rules
# ──────────────────────────────────────────────────────────────
sonar.issue.ignore.multicriteria=e1,e2,e3,e4
# Ignore TODO comments
sonar.issue.ignore.multicriteria.e1.ruleKey=javascript:S1135
sonar.issue.ignore.multicriteria.e1.resourceKey=**/*
# Ignore console.log in development utilities
sonar.issue.ignore.multicriteria.e2.ruleKey=javascript:S2228
sonar.issue.ignore.multicriteria.e2.resourceKey=**/scripts/**/*.js
# Ignore cognitive complexity in test files
sonar.issue.ignore.multicriteria.e3.ruleKey=javascript:S3776
sonar.issue.ignore.multicriteria.e3.resourceKey=**/*.test.js
# Ignore Python print statements in scripts
sonar.issue.ignore.multicriteria.e4.ruleKey=python:S106
sonar.issue.ignore.multicriteria.e4.resourceKey=**/scripts/**/*.py
# ──────────────────────────────────────────────────────────────
# Duplicate Detection
# ──────────────────────────────────────────────────────────────
sonar.cpd.minimumTokens=100
sonar.cpd.minimumLines=10
# ──────────────────────────────────────────────────────────────
# Analysis Parameters
# ──────────────────────────────────────────────────────────────
sonar.links.homepage=https://github.com/hoangsonww/DocuThinker-AI-App
sonar.links.ci=https://github.com/hoangsonww/DocuThinker-AI-App/actions
sonar.links.scm=https://github.com/hoangsonww/DocuThinker-AI-App
sonar.links.issue=https://github.com/hoangsonww/DocuThinker-AI-App/issues