sentry-cocoa icon indicating copy to clipboard operation
sentry-cocoa copied to clipboard

Lots of build warnings: Double-quoted include "SentryAttachment.h" in framework header, expected angle-bracketed instead

Open matthewreimer opened this issue 1 year ago • 8 comments

Platform

iOS

Environment

Production, Develop, TestFlight, Other

Installed

Swift Package Manager

Version

8.25.0

Did it work on previous versions?

8.21.0

Steps to Reproduce

Build an app that's using Sentry SDK via SPM. This might be the same issue as one you've fixed before in #1072.

Expected Result

No build warnings

Actual Result

Double-quoted include "SentryAttachment.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryBreadcrumb.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryClient.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryCrashExceptionApplication.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDebugImageProvider.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDebugMeta.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDsn.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryEnvelopeItemHeader.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryError.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryEvent.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryException.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryFrame.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryGeo.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryHttpStatusCodeRange.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryHub.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanProtocol.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanContext.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySampleDecision.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanStatus.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryMeasurementUnit.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryMechanism.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryMechanismMeta.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryMessage.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryNSError.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryOptions.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryProfilingConditionals.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryRequest.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySDK.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySampleDecision.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySamplingContext.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryScope.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanProtocol.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanContext.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanId.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanProtocol.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanStatus.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryStacktrace.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryThread.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryTraceHeader.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySampleDecision.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryTransactionContext.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySampleDecision.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySpanContext.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryUser.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryUserFeedback.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentryDefines.h" in framework header, expected angle-bracketed instead
Double-quoted include "SentrySerializable.h" in framework header, expected angle-bracketed instead

Are you willing to submit a PR?

Maybe

matthewreimer avatar May 13 '24 18:05 matthewreimer

@matthewreimer, which Xcode version are you using?

philipphofmann avatar May 14 '24 06:05 philipphofmann

@philipphofmann Version 15.3 (15E204a).

matthewreimer avatar May 14 '24 13:05 matthewreimer

@philipphofmann I just tried 15.4 (15F31d) and I get the same warnings. I'm using SentrySwiftUI if that matters.

matthewreimer avatar May 14 '24 14:05 matthewreimer

More info:

While building module 'Sentry' imported from /path/to/my/project/Classes/MassiveTextView/MassiveTextView.m:24:
In file included from <module-includes>:1:
/path/to/my/deriveddata/Build/Products/Debug-iphoneos/Sentry.framework/Headers/Sentry.h:9:9: warning: double-quoted include "SentryAttachment.h" in framework header, expected angle-bracketed instead [-Wquoted-include-in-framework-header]
#import "SentryAttachment.h"
        ^~~~~~~~~~~~~~~~~~~~
        <Sentry/SentryAttachment.h>
...

This happens when importing from Objective-C code like this:

@import Sentry;

Can Sentry.h and friends be changed from #include "SentryAttachment.h" to #include <Sentry/SentryAttachment.h>` or whatever is correct for all these? This problem floods our logs with almost 100 build warnings, which makes it harder to notice the real build warnings among all the noise.

matthewreimer avatar Jun 25 '24 01:06 matthewreimer

The number of build warnings has improved with Sentry 8.32.0, but @import Sentry; still results in 54 build warnings.

The public Sentry.h is now using bracket-quoted includes (e.g. #import <Sentry/SentryAttachment.h>) but the imported file continues to use double-quotes (e.g. SentryAttachment.h has #import "SentryDefines.h"). I think all the included header files also need to be changed to use bracket quotes.

Should I file a new issue, or should this issue be reopened?

matthewreimer avatar Aug 01 '24 16:08 matthewreimer

We should use minimal imports and rely more on forward declarations instead. We will tackle this, but there is no ETA as of now

brustolin avatar Aug 02 '24 07:08 brustolin

Same issue:

Error (Xcode): double-quoted include "FBLPromise+Race.h" in framework header, expected angle-bracketed instead /Users/user/Flutterprojects/appName/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromises.h:24:8

and when I try to fix it

Image

I also changed the clang_warn_quoted to 'no' everywhere

Kemberz avatar Aug 23 '24 10:08 Kemberz

Hello @Kemberz. Your problem is not related to Sentry.

brustolin avatar Aug 26 '24 07:08 brustolin