DataDog / libddwaf-rb

Bindings to libddwaf for Ruby
Other
0 stars 1 forks source link

steep command failed #31

Open obregonia1 opened 1 year ago

obregonia1 commented 1 year ago

Hi. I ran $ bundle exec steep check, then I got error. Is it caused by the library itself, or my environment?

vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:32:8: [error] Cannot find type ::FFI::Struct │ Diagnostic ID: RBS::UnknownTypeName │ └ class UInt32Ptr < ::FFI::Struct


vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:35:8: [error] Cannot find type `::FFI::Struct`
│ Diagnostic ID: RBS::UnknownTypeName
│
└         class UInt64Ptr < ::FFI::Struct

vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:38:8: [error] Cannot find type ::FFI::Struct │ Diagnostic ID: RBS::UnknownTypeName │ └ class SizeTPtr < ::FFI::Struct


vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:41:8: [error] Cannot find type `::FFI::Union`
│ Diagnostic ID: RBS::UnknownTypeName
│
└         class ObjectValueUnion < ::FFI::Union

vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:44:8: [error] Cannot find type ::FFI::Struct │ Diagnostic ID: RBS::UnknownTypeName │ └ class Object < ::FFI::Struct


vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:88:8: [error] Cannot find type `::FFI::Struct`
│ Diagnostic ID: RBS::UnknownTypeName
│
└         class Config < ::FFI::Struct

vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:89:10: [error] Cannot find type ::FFI::Struct │ Diagnostic ID: RBS::UnknownTypeName │ └ class Limits < ::FFI::Struct


vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:92:10: [error] Cannot find type `::FFI::Struct`
│ Diagnostic ID: RBS::UnknownTypeName
│
└           class Obfuscator < ::FFI::Struct

vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:96:8: [error] Cannot find type ::FFI::Struct │ Diagnostic ID: RBS::UnknownTypeName │ └ class RuleSetInfo < ::FFI::Struct


vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:119:8: [error] Cannot find type `::FFI::Struct`
│ Diagnostic ID: RBS::UnknownTypeName
│
└         class ResultActions < ::FFI::Struct

vendor/bundle/ruby/3.1.0/gems/libddwaf-1.8.2.0.0/sig/datadog/appsec/waf.rbs:122:8: [error] Cannot find type ::FFI::Struct │ Diagnostic ID: RBS::UnknownTypeName │ └ class Result < ::FFI::Struct



Detected 12 problems from 1 file
```
soutaro commented 5 months ago

@lloeki I also heard about this from someone else. I'm wondering if it's not intended to include the RBS files in the gem package, for now.

RBS files under /sig directory is loaded when a gem is installed, so adding .reject call in your .gemspec to exclude .rbs files would be the solution.

A workaround for Steep/RBS users is adding ignore: true entry in rbs_collection.yaml to explicitly skip loading RBS files from the gem.

gems:
  - name: libddwaf
    ignore: true
obregonia1 commented 5 months ago

@soutaro Thank you for your comment. I had changed rbs_collection.yaml exactly as you described to avoid the error with environment of this issue's description. However, with below environment, we have confirmed that the error does not occur even though rbs_collection.yaml is not modified.

libddwaf: 1.14.0.0.0
steep: 1.6.0
Ruby: 3.2.2