Skip to content

Commit 0dd64e0

Browse files
authored
[CI] include-what-you-use (#2629)
1 parent 277190d commit 0dd64e0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+333
-157
lines changed

.github/workflows/iwyu.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
2+
name: include-what-you-use
3+
4+
on:
5+
push:
6+
branches: [ main ]
7+
pull_request:
8+
branches: [ main ]
9+
10+
jobs:
11+
iwyu:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
with:
16+
submodules: 'recursive'
17+
18+
- name: setup dependencies
19+
run: |
20+
sudo apt update -y
21+
sudo apt install -y --no-install-recommends --no-install-suggests \
22+
build-essential \
23+
iwyu \
24+
cmake \
25+
ninja-build \
26+
libssl-dev \
27+
libcurl4-openssl-dev \
28+
libprotobuf-dev \
29+
protobuf-compiler \
30+
libgmock-dev \
31+
libgtest-dev \
32+
libbenchmark-dev
33+
34+
- name: Prepare CMake
35+
run: |
36+
TOPDIR=`pwd`
37+
mkdir build && cd build
38+
CC="clang" CXX="clang++" cmake \
39+
-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="include-what-you-use;-w;-Xiwyu;--mapping_file=${TOPDIR}/.iwyu.imp;" \
40+
-DBUILD_TESTING=OFF \
41+
-DBUILD_W3CTRACECONTEXT_TEST=OFF \
42+
..
43+
44+
- name: iwyu_tool
45+
run: |
46+
cd build
47+
make -k 2>&1 | tee -a iwyu.log
48+
49+
- uses: actions/upload-artifact@v4
50+
if: success() || failure()
51+
with:
52+
name: Logs (include-what-you-use)
53+
path: ./build/*.log
54+
55+
- name: count warnings
56+
run: |
57+
cd build
58+
COUNT=`grep -c "Warning:" iwyu.log`
59+
echo "include-what-you-use reported ${COUNT} warning(s)"
60+

.iwyu.imp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright The OpenTelemetry Authors
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# include-what-you-use mapping file
5+
6+
[
7+
# Work around for C++ STL
8+
{ "include": ["<bits/chrono.h>", "private", "<chrono>", "public"] },
9+
10+
# Local opentelemetry-cpp
11+
12+
]
13+

api/include/opentelemetry/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
#pragma once
55

6-
#include "opentelemetry/common/macros.h"
6+
#include "opentelemetry/common/macros.h" // IWYU pragma: export
77
#include "opentelemetry/detail/preprocessor.h"
88

99
#ifndef OPENTELEMETRY_ABI_VERSION_NO

sdk/include/opentelemetry/sdk/common/base64.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
#include <string>
77

8-
#include "opentelemetry/common/macros.h"
98
#include "opentelemetry/nostd/string_view.h"
109
#include "opentelemetry/version.h"
1110

sdk/include/opentelemetry/sdk/common/global_log_handler.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33

44
#pragma once
55

6-
#include <sstream>
6+
#include <sstream> // IWYU pragma: keep
7+
#include <string>
78
#include <utility>
89

910
#include "opentelemetry/nostd/shared_ptr.h"

sdk/include/opentelemetry/sdk/metrics/async_instruments.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
#include <memory>
77

88
#include "opentelemetry/metrics/async_instruments.h"
9-
#include "opentelemetry/metrics/observer_result.h"
109
#include "opentelemetry/sdk/metrics/instruments.h"
10+
#include "opentelemetry/sdk/metrics/state/metric_storage.h"
11+
#include "opentelemetry/sdk/metrics/state/observable_registry.h"
1112
#include "opentelemetry/version.h"
1213

1314
OPENTELEMETRY_BEGIN_NAMESPACE
@@ -16,9 +17,6 @@ namespace sdk
1617
namespace metrics
1718
{
1819

19-
class AsyncWritableMetricStorage;
20-
class ObservableRegistry;
21-
2220
class ObservableInstrument : public opentelemetry::metrics::ObservableInstrument
2321
{
2422
public:

sdk/include/opentelemetry/sdk/metrics/meter_provider.h

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,29 @@
77
#include <memory>
88
#include <mutex>
99

10+
#include "opentelemetry/metrics/meter.h"
1011
#include "opentelemetry/metrics/meter_provider.h"
1112
#include "opentelemetry/nostd/shared_ptr.h"
1213
#include "opentelemetry/nostd/string_view.h"
14+
#include "opentelemetry/sdk/metrics/meter_context.h"
15+
#include "opentelemetry/sdk/metrics/metric_reader.h"
16+
#include "opentelemetry/sdk/metrics/view/instrument_selector.h"
17+
#include "opentelemetry/sdk/metrics/view/meter_selector.h"
18+
#include "opentelemetry/sdk/metrics/view/view.h"
19+
#include "opentelemetry/sdk/metrics/view/view_registry.h"
20+
#include "opentelemetry/sdk/resource/resource.h"
21+
#include "opentelemetry/version.h"
1322

1423
#ifdef ENABLE_METRICS_EXEMPLAR_PREVIEW
1524
# include "opentelemetry/sdk/metrics/exemplar/filter_type.h"
1625
#endif
1726

18-
#include "opentelemetry/sdk/metrics/view/view_registry.h"
19-
#include "opentelemetry/sdk/resource/resource.h"
20-
#include "opentelemetry/version.h"
21-
2227
OPENTELEMETRY_BEGIN_NAMESPACE
23-
namespace metrics
24-
{
25-
class Meter;
26-
} // namespace metrics
27-
2828
namespace sdk
2929
{
3030
namespace metrics
3131
{
3232

33-
// forward declaration
34-
class MeterContext;
35-
class MetricCollector;
36-
class MetricReader;
37-
3833
class OPENTELEMETRY_EXPORT MeterProvider final : public opentelemetry::metrics::MeterProvider
3934
{
4035
public:

sdk/include/opentelemetry/sdk/metrics/meter_provider_factory.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44
#pragma once
55

66
#include <memory>
7-
#include <mutex>
8-
#include <vector>
9-
#include "opentelemetry/metrics/meter.h"
7+
108
#include "opentelemetry/metrics/meter_provider.h"
11-
#include "opentelemetry/nostd/shared_ptr.h"
12-
#include "opentelemetry/sdk/metrics/meter.h"
139
#include "opentelemetry/sdk/metrics/meter_context.h"
10+
#include "opentelemetry/sdk/metrics/view/view_registry.h"
1411
#include "opentelemetry/sdk/resource/resource.h"
1512
#include "opentelemetry/version.h"
1613

sdk/include/opentelemetry/sdk/trace/batch_span_processor.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,28 @@
33

44
#pragma once
55

6+
#include <stddef.h>
67
#include <atomic>
8+
#include <chrono>
79
#include <condition_variable>
810
#include <cstdint>
911
#include <memory>
1012
#include <mutex>
1113
#include <thread>
1214

1315
#include "opentelemetry/sdk/common/circular_buffer.h"
16+
#include "opentelemetry/sdk/trace/batch_span_processor_options.h"
17+
#include "opentelemetry/sdk/trace/exporter.h"
1418
#include "opentelemetry/sdk/trace/processor.h"
19+
#include "opentelemetry/sdk/trace/recordable.h"
20+
#include "opentelemetry/trace/span_context.h"
1521
#include "opentelemetry/version.h"
1622

1723
OPENTELEMETRY_BEGIN_NAMESPACE
1824
namespace sdk
1925
{
2026
namespace trace
2127
{
22-
class SpanExporter;
23-
struct BatchSpanProcessorOptions;
2428

2529
/**
2630
* This is an implementation of the SpanProcessor which creates batches of finished spans and passes

sdk/include/opentelemetry/sdk/trace/batch_span_processor_factory.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55

66
#include <memory>
77

8+
#include "opentelemetry/sdk/trace/batch_span_processor_options.h"
9+
#include "opentelemetry/sdk/trace/exporter.h"
10+
#include "opentelemetry/sdk/trace/processor.h"
811
#include "opentelemetry/version.h"
912

1013
OPENTELEMETRY_BEGIN_NAMESPACE
1114
namespace sdk
1215
{
1316
namespace trace
1417
{
15-
class SpanExporter;
16-
class SpanProcessor;
17-
struct BatchSpanProcessorOptions;
1818

1919
/**
2020
* Factory class for BatchSpanProcessor.

0 commit comments

Comments
 (0)