forked from dartsim/dart
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcodecov.yml
More file actions
128 lines (104 loc) · 3.02 KB
/
codecov.yml
File metadata and controls
128 lines (104 loc) · 3.02 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
# Reference: https://docs.codecov.com/docs/codecovyml-reference
#
# Test Coverage Audit: docs/dev_tasks/test-coverage-audit/
# Project: 'auto' ratchets coverage upward over time
# Patch: 80% floor for new/changed lines (industry standard)
codecov:
require_ci_to_pass: true
coverage:
precision: 2
round: down
range: "70...90"
status:
project:
default:
target: auto
threshold: 2% # Allow 2% fluctuation from baseline
patch:
default:
target: 80%
threshold: 5% # Effective floor: 75% (accommodates C++ exception/template paths)
ignore:
# Test code (shouldn't count toward coverage)
- "tests/**"
# Template implementation headers (coverage tracked via explicit instantiation in .cpp files)
- "**/*-impl.hpp"
# GUI - requires display for testing
# BACKLOG: Revisit when headless CI is feasible
- "dart/gui/**"
# Generated/config files
- "dart/config.hpp"
- "**/*.in" # CMake template files
# Experimental APIs under heavy development
# BACKLOG: Test when APIs stabilize
- "dart/simulation/experimental/**"
# Deprecated code scheduled for removal
- "**/SmartPointer.hpp"
# Examples and tutorials (demo code, not production)
- "examples/**"
- "tutorials/**"
- "python/examples/**"
# IKFast generated code (auto-generated)
- "**/ikfast*.cpp"
# Third-party/vendor (future-proofing)
- "extern/**"
- "external/**"
- "third_party/**"
# Reduce noise from macro/exception branches
parsers:
gcov:
branch_detection:
conditional: yes # Include conditional branches (if/else)
loop: yes # Include loop branches
method: no # Exclude method entry/exit (noisy)
macro: no # Exclude macro-generated branches (noisy)
# PR comment configuration
comment:
layout: "header, diff, flags, files"
behavior: default
require_changes: true
# Module-level tracking for visibility into per-component coverage
component_management:
default_rules:
statuses:
- type: project
target: auto
informational: true # Don't fail PRs based on component coverage
individual_components:
- component_id: dart_common
name: "Common"
paths:
- dart/common/**
- component_id: dart_math
name: "Math"
paths:
- dart/math/**
- component_id: dart_dynamics
name: "Dynamics"
paths:
- dart/dynamics/**
- component_id: dart_collision
name: "Collision"
paths:
- dart/collision/**
- component_id: dart_constraint
name: "Constraint"
paths:
- dart/constraint/**
- component_id: dart_simulation
name: "Simulation"
paths:
- dart/simulation/**
- "!dart/simulation/experimental/**"
- component_id: dart_io
name: "I/O"
paths:
- dart/io/**
- component_id: dart_optimizer
name: "Optimizer"
paths:
- dart/optimizer/**
- component_id: dart_lcpsolver
name: "LCP Solver"
paths:
- dart/lcpsolver/**