def reek_of(smell_type,
                smell_details = {},
                configuration = Configuration::AppConfiguration.default)
      ShouldReekOf.new(smell_type, smell_details, configuration)
    end
def reek_of(smell_type,
                smell_details = {},
                configuration = Configuration::AppConfiguration.default)
      ShouldReekOf.new(smell_type, smell_details, configuration)
    end
Checks the target source code for instances of "smell type"
 and returns true only if it can find one of them that matches.

 You can pass the smell type you want to check for as String or as Symbol:

   - :UtilityFunction
   - "UtilityFunction"

 It is recommended to pass this as a symbol like :UtilityFunction. However we don't
 enforce this.

 Additionally you can be more specific and pass in "smell_details" you
 want to check for as well e.g. "name" or "count" (see the examples below).
 The parameters you can check for are depending on the smell you are checking for.
 For instance "count" doesn't make sense everywhere whereas "name" does in most cases.
 If you pass in a parameter that doesn't exist (e.g. you make a typo like "namme") Reek will
 raise an ArgumentError to give you a hint that you passed something that doesn't make
 much sense.

 @param smell_type [Symbol, String] The "smell type" to check for.
 @param smell_details [Hash] A hash containing "smell warning" parameters

 @example Without smell_details

   reek_of(:FeatureEnvy)
   reek_of(:UtilityFunction)

 @example With smell_details

   reek_of(:UncommunicativeParameterName, name: 'x2')
   reek_of(:DataClump, count: 3)

 @example From a real spec

   expect(src).to reek_of(:DuplicateMethodCall, name: '@other.thing')

 @public

 @quality :reek:UtilityFunction