Skip to content

Commit d61ab07

Browse files
authored
enabled swiftlint & fixed issues (#657)
* enabled swiftlint & fixed issues * Made swiftlint plugin env-var enabled optional * Update Package.swift * Update [email protected]
1 parent bb3d181 commit d61ab07

File tree

270 files changed

+6759
-6501
lines changed

Some content is hidden

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

270 files changed

+6759
-6501
lines changed

CONTRIBUTING.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,13 @@ To test from the command line you need `swift` version `5.0+`.
8080
swift test
8181
```
8282

83+
### SwiftLint
84+
the SwiftLint Xcode plugin can be optionally enabled during development by using an environmental variable when opening the project from the commandline.
85+
```
86+
OTEL_ENABLE_SWIFTLINT=1 open Package.swift
87+
```
88+
Note: Xcode must be completely closed before running the above command, close Xcode using `⌘Q` or running `killall xcode` in the commandline.
89+
8390
### Make your modifications
8491

8592
Always work in a branch from your fork:

Examples/Datadog Sample/main.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ sleep(10)
4848

4949
func testTraces() {
5050
let spanProcessor = SimpleSpanProcessor(spanExporter: datadogExporter)
51-
51+
5252
OpenTelemetry.registerTracerProvider(tracerProvider:
5353
TracerProviderBuilder()
5454
.add(spanProcessor: spanProcessor)

Examples/Logs Sample/main.swift

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,15 @@ import Logging
1111
import GRPC
1212
import NIO
1313

14-
1514
func configure() {
1615
let configuration = ClientConnection.Configuration.default(
17-
target: .hostAndPort("localhost", 4317),
18-
eventLoopGroup: MultiThreadedEventLoopGroup(numberOfThreads: 1))
16+
target: .hostAndPort("localhost", 4317),
17+
eventLoopGroup: MultiThreadedEventLoopGroup(numberOfThreads: 1))
1918

20-
OpenTelemetry.registerLoggerProvider(loggerProvider: LoggerProviderBuilder().with(processors: [
21-
BatchLogRecordProcessor(logRecordExporter:OtlpLogExporter(channel: ClientConnection(configuration: configuration)))]).build())
22-
23-
}
19+
OpenTelemetry.registerLoggerProvider(loggerProvider: LoggerProviderBuilder().with(processors: [
20+
BatchLogRecordProcessor(logRecordExporter: OtlpLogExporter(channel: ClientConnection(configuration: configuration)))]).build())
21+
}
2422

2523
configure()
26-
24+
2725
let eventProvider = OpenTelemetry.instance.loggerProvider.loggerBuilder(instrumentationScopeName: "myScope").setEventDomain("device").build()
28-
29-

Examples/Network Sample/main.swift

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,15 @@ import OpenTelemetrySdk
99
import StdoutExporter
1010
import URLSessionInstrumentation
1111

12-
1312
func simpleNetworkCall() {
1413
let url = URL(string: "http://httpbin.org/get")!
1514
let request = URLRequest(url: url)
1615
let semaphore = DispatchSemaphore(value: 0)
1716

1817
let task = URLSession.shared.dataTask(with: request) { data, _, _ in
1918
if let data = data {
20-
let string = String(decoding: data, as: UTF8.self)
21-
print(string)
19+
let string = String(bytes: data, encoding: .utf8)
20+
print(string as Any)
2221
}
2322
semaphore.signal()
2423
}
@@ -27,7 +26,6 @@ func simpleNetworkCall() {
2726
semaphore.wait()
2827
}
2928

30-
3129
class SessionDelegate: NSObject, URLSessionDataDelegate, URLSessionTaskDelegate {
3230
let semaphore = DispatchSemaphore(value: 0)
3331

@@ -39,7 +37,7 @@ let delegate = SessionDelegate()
3937

4038
func simpleNetworkCallWithDelegate() {
4139

42-
let session = URLSession(configuration: .default, delegate: delegate, delegateQueue:nil)
40+
let session = URLSession(configuration: .default, delegate: delegate, delegateQueue: nil)
4341

4442
let url = URL(string: "http://httpbin.org/get")!
4543
let request = URLRequest(url: url)
@@ -50,7 +48,6 @@ func simpleNetworkCallWithDelegate() {
5048
delegate.semaphore.wait()
5149
}
5250

53-
5451
let spanProcessor = SimpleSpanProcessor(spanExporter: StdoutSpanExporter(isDebug: true))
5552
OpenTelemetry.registerTracerProvider(tracerProvider:
5653
TracerProviderBuilder()

Examples/OTLP Exporter/main.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ OpenTelemetry.registerTracerProvider(tracerProvider:
4444

4545
let tracer = OpenTelemetry.instance.tracerProvider.get(instrumentationName: instrumentationScopeName, instrumentationVersion: instrumentationScopeVersion)
4646

47-
4847
if #available(macOS 10.14, *), #available(iOS 12.0, *) {
4948
let tracerProviderSDK = OpenTelemetry.instance.tracerProvider as? TracerProviderSdk
5049
tracerProviderSDK?.addSpanProcessor(SignPostIntegration())
@@ -88,7 +87,6 @@ let meterProvider = MeterProviderSdk(metricProcessor: processor, metricExporter:
8887

8988
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
9089

91-
9290
let labels1 = ["dim1": "value1"]
9391

9492
var meter = meterProvider.get(instrumentationName: "otlp_example_meter'")

Examples/OTLP HTTP Exporter/main.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@ func createSpans() {
4848
doWork()
4949
}
5050
Thread.sleep(forTimeInterval: 0.5)
51-
51+
5252
let parentSpan2 = tracer.spanBuilder(spanName: "Another").setSpanKind(spanKind: .client).setActive(true).startSpan()
5353
parentSpan2.setAttribute(key: sampleKey, value: sampleValue)
5454
// do more Work
5555
for _ in 1...3 {
5656
doWork()
5757
}
5858
Thread.sleep(forTimeInterval: 0.5)
59-
59+
6060
parentSpan2.end()
6161
parentSpan1.end()
6262
}
@@ -78,7 +78,6 @@ let meterProvider = MeterProviderSdk(metricProcessor: processor, metricExporter:
7878

7979
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
8080

81-
8281
var meter = meterProvider.get(instrumentationName: "otlp_example_meter'")
8382
var exampleCounter = meter.createIntCounter(name: "otlp_example_counter")
8483
var exampleMeasure = meter.createIntMeasure(name: "otlp_example_measure")

Examples/Prometheus Sample/main.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import PrometheusExporter
1111
print("Hello Prometheus")
1212

1313
//
14-
//You should use here your real local address, change it also in the prometheus.yml file
14+
// You should use here your real local address, change it also in the prometheus.yml file
1515
let localAddress = "192.168.1.28"
1616
//
1717

@@ -30,7 +30,6 @@ DispatchQueue.global(qos: .default).async {
3030

3131
let processor = MetricProcessorSdk()
3232

33-
3433
let meterProvider = MeterProviderSdk(metricProcessor: processor, metricExporter: promExporter, metricPushInterval: 0.1)
3534
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
3635

@@ -39,7 +38,7 @@ var meter = meterProvider.get(instrumentationName: "MyMeter")
3938
var testCounter = meter.createIntCounter(name: "MyCounter")
4039
var testMeasure = meter.createIntMeasure(name: "MyMeasure")
4140

42-
let boundaries: Array<Int> = [5, 10, 25]
41+
let boundaries: [Int] = [5, 10, 25]
4342
var testHistogram = meter.createIntHistogram(name: "MyHistogram", explicitBoundaries: boundaries, absolute: true)
4443

4544
var testObserver = meter.createIntObserver(name: "MyObservation") { observer in

[email protected]

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
import PackageDescription
5+
import Foundation
56

67
let package = Package(
78
name: "opentelemetry-swift",
89
platforms: [
9-
.macOS(.v10_15),
10+
.macOS(.v12),
1011
.iOS(.v13),
1112
.tvOS(.v13),
1213
.watchOS(.v6),
@@ -289,3 +290,15 @@ extension Package {
289290
return self
290291
}
291292
}
293+
294+
if ProcessInfo.processInfo.environment["OTEL_ENABLE_SWIFTLINT"] != nil {
295+
package.dependencies.append(contentsOf: [
296+
.package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "0.57.1")
297+
])
298+
299+
for target in package.targets {
300+
target.plugins = [
301+
.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins"),
302+
]
303+
}
304+
}

Sources/Bridges/OTelSwiftLog/LogHandler.swift

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ let version: String = "1.0.0"
88

99
/// A custom log handler to translate swift logs into otel logs
1010
public struct OTelLogHandler: LogHandler {
11-
11+
1212
/// Get or set the configured log level.
1313
///
1414
/// - note: `LogHandler`s must treat the log level as a value type. This means that the change in metadata must
1515
/// only affect this very `LogHandler`. It is acceptable to provide some form of global log level override
1616
/// that means a change in log level on a particular `LogHandler` might not be reflected in any
1717
/// `LogHandler`.
1818
public var logLevel: Logging.Logger.Level = .info
19-
19+
2020
/// loggerProvider to use for the bridge.
21-
private var loggerProvider : LoggerProvider
21+
private var loggerProvider: LoggerProvider
2222
private var logger: OpenTelemetryApi.Logger
23-
23+
2424
// Define metadata for this handler
2525
public var metadata: Logging.Logger.Metadata = [:]
2626
public subscript(metadataKey key: String) -> Logging.Logger.Metadata.Value? {
@@ -31,15 +31,15 @@ public struct OTelLogHandler: LogHandler {
3131
self.metadata[key] = newValue
3232
}
3333
}
34-
34+
3535
/// create a new OtelLogHandler
3636
/// - Parameter loggerProvider: The logger provider to use in the bridge. Defaults to the global logger provider.
3737
/// - Parameter includeTraceContext : boolean flag used for the logger builder
3838
/// - Parameter attributes: attributes to apply to the logger builder
3939
public init(loggerProvider: LoggerProvider = OpenTelemetryApi.DefaultLoggerProvider.instance,
40-
includeTraceContext : Bool = true,
41-
attributes: [String:AttributeValue] = [String:AttributeValue]()) {
42-
40+
includeTraceContext: Bool = true,
41+
attributes: [String: AttributeValue] = [String: AttributeValue]()) {
42+
4343
self.loggerProvider = loggerProvider
4444
self.logger = self.loggerProvider.loggerBuilder(instrumentationScopeName: bridgeName)
4545
.setInstrumentationVersion(version)
@@ -49,62 +49,59 @@ public struct OTelLogHandler: LogHandler {
4949
.setIncludeTraceContext(includeTraceContext)
5050
.build()
5151
}
52-
52+
5353
public func log(level: Logging.Logger.Level,
5454
message: Logging.Logger.Message,
5555
metadata: Logging.Logger.Metadata?,
5656
source: String,
5757
file: String,
5858
function: String,
5959
line: UInt) {
60-
61-
60+
6261
// This converts log atrributes to otel attributes
6362
var otelattributes: [String: AttributeValue] = [
6463
"source": AttributeValue.string(source),
6564
"file": AttributeValue.string(file),
6665
"function": AttributeValue.string(function),
67-
"line": AttributeValue.int(Int(line)),
66+
"line": AttributeValue.int(Int(line))
6867
]
69-
68+
7069
// Convert metadata from the method parameter to AttributeValue and assign it to otelattributes
7170
if let metadata = metadata {
7271
let methodMetadata = convertMetadata(metadata)
7372
otelattributes.merge(methodMetadata) { _, new in new }
7473
}
75-
74+
7675
// Convert metadata from the struct property to AttributeValue and merge it with otelattributes
7776
let structMetadata = convertMetadata(self.metadata)
7877
otelattributes.merge(structMetadata) { _, new in new }
79-
78+
8079
// Build the log record and emit it
8180
let event = self.logger.logRecordBuilder().setSeverity(convertSeverity(level: level))
8281
.setBody(AttributeValue.string(message.description))
8382
.setAttributes(otelattributes)
84-
83+
8584
if let context = OpenTelemetry.instance.contextProvider.activeSpan?.context {
8685
_ = event.setSpanContext(context)
8786
}
8887
event.emit()
89-
88+
9089
}
91-
92-
93-
90+
9491
}
9592

9693
func convertMetadata(_ metadata: Logging.Logger.Metadata) -> [String: AttributeValue] {
9794
var convertedAttributes: [String: AttributeValue] = [:]
98-
95+
9996
// Iterate over each key-value pair in the metadata dictionary
10097
for (key, value) in metadata {
10198
// Convert each value to AttributeValue
10299
let attributeValue = convertToAttributeValue(value)
103-
100+
104101
// Store the converted value with its corresponding key in the attributes dictionary
105102
convertedAttributes[key] = attributeValue
106103
}
107-
104+
108105
return convertedAttributes
109106
}
110107

@@ -126,11 +123,11 @@ func convertToAttributeValue(_ value: Logging.Logger.Metadata.Value) -> Attribut
126123
return AttributeValue(str)
127124
case .stringConvertible(let strConvertable):
128125
return AttributeValue(strConvertable.description)
129-
126+
130127
}
131128
}
132129

133-
func convertSeverity(level: Logging.Logger.Level) -> OpenTelemetryApi.Severity{
130+
func convertSeverity(level: Logging.Logger.Level) -> OpenTelemetryApi.Severity {
134131
switch level {
135132
case .trace:
136133
return OpenTelemetryApi.Severity.trace
@@ -145,6 +142,6 @@ func convertSeverity(level: Logging.Logger.Level) -> OpenTelemetryApi.Severity{
145142
case .error:
146143
return OpenTelemetryApi.Severity.error
147144
case .critical:
148-
return OpenTelemetryApi.Severity.error2 //should this be fatal instead?
145+
return OpenTelemetryApi.Severity.error2 // should this be fatal instead?
149146
}
150147
}

0 commit comments

Comments
 (0)