-
Notifications
You must be signed in to change notification settings - Fork 260
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Fix] RMQ Tests need fixing for changes in the Proactor/Reactor changes #3476
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ Code Health Quality Gates: FAILED
Change in average Code Health of affected files: -0.12 (9.49 -> 9.37)
- Declining Code Health: 14 findings(s) 🚩
public override void HandleBasicDeliver( | ||
string consumerTag, | ||
ulong deliveryTag, | ||
bool redelivered, | ||
string exchange, | ||
string routingKey, | ||
IBasicProperties properties, | ||
ReadOnlyMemory<byte> body) | ||
{ | ||
//We have to copy the body, before returning, as the memory in body is pooled and may be re-used after (see base class documentation) | ||
//See also https://docs.microsoft.com/en-us/dotnet/standard/memory-and-spans/memory-t-usage-guidelines | ||
var payload = new byte[body.Length]; | ||
body.CopyTo(payload); | ||
|
||
_messages.Enqueue(new BasicDeliverEventArgs | ||
{ | ||
BasicProperties = properties, | ||
Body = payload, | ||
ConsumerTag = consumerTag, | ||
DeliveryTag = deliveryTag, | ||
Exchange = exchange, | ||
Redelivered = redelivered, | ||
RoutingKey = routingKey | ||
}); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Excess Number of Function Arguments
HandleBasicDeliver has 7 arguments, threshold = 4
protected virtual void EnsureChannel() | ||
{ | ||
if (Connection.Exchange is null) | ||
throw new InvalidOperationException("RmqMessageConsumer.EnsureChannel - value of Connection.Exchange cannot be null"); | ||
|
||
if (Connection.AmpqUri is null) | ||
throw new InvalidOperationException("RmqMessageConsumer.EnsureChannel - value of Connection.AmpqUri cannot be null"); | ||
|
||
if (Channel == null || Channel.IsClosed) | ||
{ | ||
EnsureBroker(_queueName); | ||
|
||
if (_makeChannels == OnMissingChannel.Create) | ||
{ | ||
CreateQueue(); | ||
BindQueue(); | ||
} | ||
else if (_makeChannels == OnMissingChannel.Validate) | ||
{ | ||
ValidateQueue(); | ||
} | ||
else if (_makeChannels == OnMissingChannel.Assume) | ||
{ | ||
; //-- pass, here for clarity on fall through to use of queue directly on assume | ||
} | ||
|
||
CreateConsumer(); | ||
|
||
s_logger.LogInformation( | ||
"RmqMessageConsumer: Created rabbitmq channel {ConsumerNumber} for queue {ChannelName} with routing key/s {RoutingKeys} via exchange {ExchangeName} on subscription {URL}", | ||
//NOTE: Ensure Broker will create a channel if it is not already created | ||
Channel!.ChannelNumber, | ||
_queueName.Value, | ||
string.Join(";", _routingKeys.Select(rk => rk.Value)), | ||
Connection.Exchange.Name, | ||
Connection.AmpqUri.GetSanitizedUri() | ||
); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Bumpy Road Ahead
EnsureChannel has 3 blocks with nested conditional logic. Any nesting of 2 or deeper is considered. Threshold is one single, nested block per function
public RmqMessageConsumer( | ||
RmqMessagingGatewayConnection connection, | ||
ChannelName queueName, | ||
RoutingKey routingKey, | ||
bool isDurable, | ||
bool highAvailability = false, | ||
int batchSize = 1, | ||
ChannelName? deadLetterQueueName = null, | ||
RoutingKey? deadLetterRoutingKey = null, | ||
TimeSpan? ttl = null, | ||
int? maxQueueLength = null, | ||
OnMissingChannel makeChannels = OnMissingChannel.Create) | ||
: this(connection, queueName, new RoutingKeys([routingKey]), isDurable, highAvailability, | ||
batchSize, deadLetterQueueName, deadLetterRoutingKey, ttl, maxQueueLength, makeChannels) | ||
{ | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Constructor Over-Injection
RmqMessageConsumer has 11 arguments, threshold = 5
public RmqMessageConsumer( | ||
RmqMessagingGatewayConnection connection, | ||
ChannelName queueName, | ||
RoutingKeys routingKeys, | ||
bool isDurable, | ||
bool highAvailability = false, | ||
int batchSize = 1, | ||
ChannelName? deadLetterQueueName = null, | ||
RoutingKey? deadLetterRoutingKey = null, | ||
TimeSpan? ttl = null, | ||
int? maxQueueLength = null, | ||
OnMissingChannel makeChannels = OnMissingChannel.Create) | ||
: base(connection) | ||
{ | ||
_queueName = queueName; | ||
_routingKeys = routingKeys; | ||
_isDurable = isDurable; | ||
_highAvailability = highAvailability; | ||
_messageCreator = new RmqMessageCreator(); | ||
_batchSize = Convert.ToUInt16(batchSize); | ||
_makeChannels = makeChannels; | ||
_consumerTag = Connection.Name + Guid.NewGuid(); | ||
_deadLetterQueueName = deadLetterQueueName; | ||
_deadLetterRoutingKey = deadLetterRoutingKey; | ||
//NOTE: Weird because netstandard20 can't understand that isnullor empty checks for null | ||
_hasDlq = !string.IsNullOrEmpty(deadLetterQueueName ?? string.Empty) && !string.IsNullOrEmpty(_deadLetterRoutingKey ?? string.Empty); | ||
_ttl = ttl; | ||
_maxQueueLength = maxQueueLength; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Constructor Over-Injection
RmqMessageConsumer has 11 arguments, threshold = 5
public Message CreateMessage(BasicDeliverEventArgs fromQueue) | ||
{ | ||
var headers = fromQueue.BasicProperties.Headers ?? new Dictionary<string, object>(); | ||
var topic = HeaderResult<RoutingKey>.Empty(); | ||
var messageId = HeaderResult<string>.Empty(); | ||
var timeStamp = HeaderResult<DateTime>.Empty(); | ||
var handledCount = HeaderResult<int>.Empty(); | ||
var delay = HeaderResult<TimeSpan>.Empty(); | ||
var redelivered = HeaderResult<bool>.Empty(); | ||
var deliveryTag = HeaderResult<ulong>.Empty(); | ||
var messageType = HeaderResult<MessageType>.Empty(); | ||
var replyTo = HeaderResult<string>.Empty(); | ||
var deliveryMode = fromQueue.BasicProperties.DeliveryMode; | ||
|
||
Message message; | ||
try | ||
{ | ||
topic = ReadTopic(fromQueue, headers); | ||
messageId = ReadMessageId(fromQueue.BasicProperties.MessageId); | ||
timeStamp = ReadTimeStamp(fromQueue.BasicProperties); | ||
handledCount = ReadHandledCount(headers); | ||
delay = ReadDelay(headers); | ||
redelivered = ReadRedeliveredFlag(fromQueue.Redelivered); | ||
deliveryTag = ReadDeliveryTag(fromQueue.DeliveryTag); | ||
messageType = ReadMessageType(headers); | ||
replyTo = ReadReplyTo(fromQueue.BasicProperties); | ||
|
||
if (false == (topic.Success && messageId.Success && messageType.Success && timeStamp.Success && handledCount.Success)) | ||
{ | ||
message = FailureMessage(topic, messageId); | ||
} | ||
else | ||
{ | ||
//TODO:CLOUD_EVENTS parse from headers | ||
|
||
var messageHeader = new MessageHeader( | ||
messageId: messageId.Result ?? string.Empty, | ||
topic: topic.Result ?? RoutingKey.Empty, | ||
messageType.Result, | ||
source: null, | ||
type: "", | ||
timeStamp: timeStamp.Success ? timeStamp.Result : DateTime.UtcNow, | ||
correlationId: "", | ||
replyTo: new RoutingKey(replyTo.Result ?? string.Empty), | ||
contentType: "", | ||
handledCount: handledCount.Result, | ||
dataSchema: null, | ||
subject: null, | ||
delayed: delay.Result | ||
); | ||
|
||
|
||
//this effectively transfers ownership of our buffer | ||
message = new Message(messageHeader, new MessageBody(fromQueue.Body, fromQueue.BasicProperties.Type)); | ||
|
||
headers.Each(header => message.Header.Bag.Add(header.Key, ParseHeaderValue(header.Value))); | ||
} | ||
|
||
if (headers.TryGetValue(HeaderNames.CORRELATION_ID, out object? correlationHeader)) | ||
{ | ||
var correlationId = Encoding.UTF8.GetString((byte[])correlationHeader); | ||
message.Header.CorrelationId = correlationId; | ||
} | ||
|
||
message.DeliveryTag = deliveryTag.Result; | ||
message.Redelivered = redelivered.Result; | ||
message.Header.ReplyTo = replyTo.Result; | ||
message.Persist = deliveryMode == 2; | ||
} | ||
catch (Exception e) | ||
{ | ||
s_logger.LogWarning(e,"Failed to create message from amqp message"); | ||
message = FailureMessage(topic, messageId); | ||
} | ||
|
||
return message; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Complex Method
CreateMessage has a cyclomatic complexity of 13, threshold = 9
private HeaderResult<TimeSpan> ReadDelay(IDictionary<string, object> headers) | ||
{ | ||
if (headers.ContainsKey(HeaderNames.DELAYED_MILLISECONDS) == false) | ||
{ | ||
return new HeaderResult<TimeSpan>(TimeSpan.Zero, true); | ||
} | ||
|
||
int delayedMilliseconds; | ||
|
||
// on 32 bit systems the x-delay value will be a int and on 64 bit it will be a long, thank you erlang | ||
// The number will be negative after a message has been delayed | ||
// sticking with an int as you should not be delaying for more than 49 days | ||
switch (headers[HeaderNames.DELAYED_MILLISECONDS]) | ||
{ | ||
case byte[] value: | ||
{ | ||
if (!int.TryParse(Encoding.UTF8.GetString(value), out var handledCount)) | ||
delayedMilliseconds = 0; | ||
else | ||
{ | ||
if (handledCount < 0) | ||
handledCount = Math.Abs(handledCount); | ||
delayedMilliseconds = handledCount; | ||
} | ||
|
||
break; | ||
} | ||
case int value: | ||
{ | ||
if (value < 0) | ||
value = Math.Abs(value); | ||
|
||
delayedMilliseconds = value; | ||
break; | ||
} | ||
case long value: | ||
{ | ||
if (value < 0) | ||
value = Math.Abs(value); | ||
|
||
delayedMilliseconds = (int)value; | ||
break; | ||
} | ||
default: | ||
return new HeaderResult<TimeSpan>(TimeSpan.Zero, false); | ||
} | ||
|
||
return new HeaderResult<TimeSpan>(TimeSpan.FromMilliseconds( delayedMilliseconds), true); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Bumpy Road Ahead
ReadDelay has 2 blocks with nested conditional logic. Any nesting of 2 or deeper is considered. Threshold is one single, nested block per function
{ | ||
if (disposing) | ||
{ | ||
if (Channel != null && Channel.IsOpen && _confirmsSelected) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Complex Conditional
Dispose has 1 complex conditionals with 2 branches, threshold = 2
private bool IsAnAmqpType(object value) | ||
{ | ||
switch (value) | ||
{ | ||
case null: | ||
case string _: | ||
case byte[] _: | ||
case int _: | ||
case uint _: | ||
case decimal _: | ||
case AmqpTimestamp _: | ||
case IDictionary _: | ||
case IList _: | ||
case byte _: | ||
case sbyte _: | ||
case double _: | ||
case float _: | ||
case long _: | ||
case short _: | ||
case bool _: | ||
return true; | ||
default: | ||
return false; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Complex Method
IsAnAmqpType has a cyclomatic complexity of 18, threshold = 9
public void PublishMessage(Message message, TimeSpan? delay = null) | ||
{ | ||
if (_connection.Exchange is null) | ||
throw new InvalidOperationException("RmqMessagePublisher.PublishMessage: Connections Exchange is null"); | ||
|
||
var messageId = message.Id; | ||
var deliveryTag = message.Header.Bag.ContainsKey(HeaderNames.DELIVERY_TAG) ? message.DeliveryTag.ToString() : null; | ||
|
||
var headers = new Dictionary<string, object> | ||
{ | ||
{ HeaderNames.MESSAGE_TYPE, message.Header.MessageType.ToString() }, | ||
{ HeaderNames.TOPIC, message.Header.Topic.Value }, | ||
{ HeaderNames.HANDLED_COUNT, message.Header.HandledCount } | ||
}; | ||
|
||
if (message.Header.CorrelationId != string.Empty) | ||
headers.Add(HeaderNames.CORRELATION_ID, message.Header.CorrelationId); | ||
|
||
message.Header.Bag.Each(header => | ||
{ | ||
if (!_headersToReset.Any(htr => htr.Equals(header.Key))) headers.Add(header.Key, header.Value); | ||
}); | ||
|
||
if (!string.IsNullOrEmpty(deliveryTag)) | ||
headers.Add(HeaderNames.DELIVERY_TAG, deliveryTag!); | ||
|
||
if (delay > TimeSpan.Zero) | ||
headers.Add(HeaderNames.DELAY_MILLISECONDS, delay.Value.TotalMilliseconds); | ||
|
||
_channel.BasicPublish( | ||
_connection.Exchange.Name, | ||
message.Header.Topic, | ||
false, | ||
CreateBasicProperties( | ||
messageId, | ||
message.Header.TimeStamp, | ||
message.Body.ContentType, | ||
message.Header.ContentType ?? "plain/text", | ||
message.Header.ReplyTo ?? string.Empty, | ||
message.Persist, | ||
headers), | ||
message.Body.Bytes); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Complex Method
PublishMessage has a cyclomatic complexity of 9, threshold = 9
private IBasicProperties CreateBasicProperties(string id, DateTimeOffset timeStamp, string type, string contentType, | ||
string replyTo, bool persistMessage, IDictionary<string, object>? headers = null) | ||
{ | ||
var basicProperties = _channel.CreateBasicProperties(); | ||
|
||
basicProperties.DeliveryMode = (byte) (persistMessage ? 2 : 1); // delivery mode set to 2 if message is persistent or 1 if non-persistent | ||
basicProperties.ContentType = contentType; | ||
basicProperties.Type = type; | ||
basicProperties.MessageId = id; | ||
basicProperties.Timestamp = new AmqpTimestamp(UnixTimestamp.GetUnixTimestampSeconds(timeStamp.DateTime)); | ||
if (!string.IsNullOrEmpty(replyTo)) | ||
basicProperties.ReplyTo = replyTo; | ||
|
||
if (!(headers is null)) | ||
{ | ||
foreach (var header in headers) | ||
{ | ||
if(!IsAnAmqpType(header.Value)) | ||
throw new ConfigurationException($"The value {header.Value} is type {header.Value.GetType()} for header {header.Key} value only supports the AMQP 0-8/0-9 standard entry types S, I, D, T and F, as well as the QPid-0-8 specific b, d, f, l, s, t, x and V types and the AMQP 0-9-1 A type."); | ||
} | ||
|
||
basicProperties.Headers = headers; | ||
} | ||
|
||
return basicProperties; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Excess Number of Function Arguments
CreateBasicProperties has 7 arguments, threshold = 4
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ Code Health Quality Gates: FAILED
Change in average Code Health of affected files: -0.12 (9.49 -> 9.37)
- Declining Code Health: 14 findings(s) 🚩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ Code Health Quality Gates: FAILED
Change in average Code Health of affected files: -0.12 (9.49 -> 9.37)
- Declining Code Health: 14 findings(s) 🚩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ Code Health Quality Gates: FAILED
Change in average Code Health of affected files: -0.11 (9.49 -> 9.38)
- Declining Code Health: 14 findings(s) 🚩
public Message[] Receive(TimeSpan? timeOut = null) | ||
{ | ||
|
||
if (Connection.Exchange is null) | ||
throw new InvalidOperationException("RmqMessageConsumer.Receive - value of Connection.Exchange cannot be null"); | ||
|
||
if (Connection.AmpqUri is null) | ||
throw new InvalidOperationException("RmqMessageConsumer.Receive - value of Connection.AmpqUri cannot be null"); | ||
|
||
s_logger.LogDebug( | ||
"RmqMessageConsumer: Preparing to retrieve next message from queue {ChannelName} with routing key {RoutingKeys} via exchange {ExchangeName} on subscription {URL}", | ||
_queueName.Value, | ||
string.Join(";", _routingKeys.Select(rk => rk.Value)), | ||
Connection.Exchange.Name, | ||
Connection.AmpqUri.GetSanitizedUri() | ||
); | ||
|
||
timeOut ??= TimeSpan.FromMilliseconds(5); | ||
|
||
try | ||
{ | ||
EnsureChannel(); | ||
|
||
//NOTE: EnsureChannel means that _consumer cannot be null | ||
var (resultCount, results) = _consumer!.DeQueue(timeOut.Value, _batchSize); | ||
|
||
if (results != null && results.Length != 0) | ||
{ | ||
var messages = new Message[resultCount]; | ||
for (var i = 0; i < resultCount; i++) | ||
{ | ||
var message = _messageCreator.CreateMessage(results[i]); | ||
messages[i] = message; | ||
|
||
s_logger.LogInformation( | ||
"RmqMessageConsumer: Received message from queue {ChannelName} with routing key {RoutingKeys} via exchange {ExchangeName} on subscription {URL}, message: {Request}", | ||
_queueName.Value, | ||
string.Join(";", _routingKeys.Select(rk => rk.Value)), | ||
Connection.Exchange.Name, | ||
Connection.AmpqUri.GetSanitizedUri(), | ||
JsonSerializer.Serialize(message, JsonSerialisationOptions.Options) | ||
); | ||
} | ||
|
||
return messages; | ||
} | ||
else | ||
{ | ||
|
||
return [_noopMessage]; | ||
} | ||
} | ||
catch (Exception exception) when (exception is BrokerUnreachableException || | ||
exception is AlreadyClosedException || | ||
exception is TimeoutException) | ||
{ | ||
HandleException(exception, true); | ||
} | ||
catch (Exception exception) when (exception is EndOfStreamException || | ||
exception is OperationInterruptedException || | ||
exception is NotSupportedException || | ||
exception is BrokenCircuitException) | ||
{ | ||
HandleException(exception); | ||
} | ||
catch (Exception exception) | ||
{ | ||
HandleException(exception); | ||
} | ||
|
||
return [_noopMessage]; // Default return in case of exception | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Complex Method
Receive has a cyclomatic complexity of 15, threshold = 9
@@ -0,0 +1,544 @@ | |||
#region Licence |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❌ New issue: Overall Code Complexity
This module has a mean cyclomatic complexity of 4.17 across 18 functions. The mean complexity threshold is 4
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
…rationresultexception
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gates Failed
New code is healthy
(3 new files with code health below 9.00)
Enforce critical code health rules
(2 files with Bumpy Road Ahead)
Enforce advisory code health rules
(5 files with Excess Number of Function Arguments, Complex Method, Overall Code Complexity, Constructor Over-Injection, Complex Conditional)
Gates Passed
1 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
New code is healthy | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 4 rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 3 rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 rules | 10.00 → 8.97 | Suppress |
Enforce critical code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 1 critical rule | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 1 critical rule | 10.00 → 8.96 | Suppress |
Enforce advisory code health rules | Violations | Code Health Impact | |
---|---|---|---|
RmqMessageConsumer.cs | 3 advisory rules | 10.00 → 8.59 | Suppress |
RmqMessageCreator.cs | 2 advisory rules | 10.00 → 8.96 | Suppress |
RmqMessagePublisher.cs | 2 advisory rules | 10.00 → 8.97 | Suppress |
PullConsumer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
RmqMessageProducer.cs | 1 advisory rule | 10.00 → 9.69 | Suppress |
Quality Gate Profile: Clean Code Collective
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
We changed the code to use a clearer Reeactor/Proactor model and moved to RMQ V7. We need to fix up the broken tests.