# SonarCloud Configuration
# https://docs.sonarcloud.io/advanced-setup/analysis-parameters/
# Project identification
sonar.projectKey=kpeacocke_souschef
sonar.organization=kpeacocke
sonar.projectName=SousChef
# Source code configuration
sonar.sources=souschef,examples
sonar.tests=tests
sonar.sourceEncoding=UTF-8
# Python configuration
sonar.python.version=3.14
sonar.python.coverage.reportPaths=coverage.xml
# Ruby configuration (for Chef cookbooks - syntax analysis only, no coverage)
sonar.ruby.file.suffixes=.rb
# Exclusions
sonar.exclusions=**/node_modules/**,**/__pycache__/**,**/htmlcov/**,**/*.egg-info/**
sonar.test.exclusions=tests/**
sonar.coverage.exclusions=tests/**,examples/**
# Duplications
sonar.cpd.exclusions=tests/**
# Issue configuration
sonar.issue.ignore.multicriteria=e1,e2,e3,e4,e5,e6,e7,e8,e9,e10
# Ignore "Cognitive Complexity" on test files
sonar.issue.ignore.multicriteria.e1.ruleKey=python:S3776
sonar.issue.ignore.multicriteria.e1.resourceKey=tests/**
# Ignore "Publicly writable directories" in test files (tempfile usage is secure)
sonar.issue.ignore.multicriteria.e2.ruleKey=python:S5443
sonar.issue.ignore.multicriteria.e2.resourceKey=tests/**
# Ignore "Hard-coded passwords" in test files (test data, not real secrets)
sonar.issue.ignore.multicriteria.e3.ruleKey=python:S2068
sonar.issue.ignore.multicriteria.e3.resourceKey=tests/**
# Ignore "Hard-coded IP addresses" in test files (test data)
sonar.issue.ignore.multicriteria.e4.ruleKey=python:S1313
sonar.issue.ignore.multicriteria.e4.resourceKey=tests/**
# Ignore "Clear-text protocols" in test files (test URLs, not real endpoints)
sonar.issue.ignore.multicriteria.e5.ruleKey=python:S5332
sonar.issue.ignore.multicriteria.e5.resourceKey=tests/**
# Ignore "Hard-coded IP addresses" in server.py (template examples in generated output)
sonar.issue.ignore.multicriteria.e6.ruleKey=python:S1313
sonar.issue.ignore.multicriteria.e6.resourceKey=souschef/server.py
# Ignore "Clear-text protocols" in server.py (Ansible template examples, not real URLs)
sonar.issue.ignore.multicriteria.e7.ruleKey=python:S5332
sonar.issue.ignore.multicriteria.e7.resourceKey=souschef/server.py
# Ignore "Hard-coded secrets" in server.py (AWX credential names, not actual secrets)
sonar.issue.ignore.multicriteria.e8.ruleKey=python:S6418
sonar.issue.ignore.multicriteria.e8.resourceKey=souschef/server.py
# Ignore "Slow regex" in server.py (Chef parsing requires complex patterns; inputs are trusted files)
sonar.issue.ignore.multicriteria.e9.ruleKey=python:S5852
sonar.issue.ignore.multicriteria.e9.resourceKey=souschef/server.py
# Ignore "Slow regex" in tests (test patterns for property-based testing)
sonar.issue.ignore.multicriteria.e10.ruleKey=python:S5852
sonar.issue.ignore.multicriteria.e10.resourceKey=tests/**
# Quality Gate
sonar.qualitygate.wait=true
# Coverage threshold
sonar.coverage.minimum=90.0