Produced using FindBugs3.0.1.
Project: drools-multiproject
110174 lines of code analyzed, in 2009 classes, in 73 packages.
Metric | Total | Density* |
---|---|---|
High Priority Warnings | 124 | 1.13 |
Medium Priority Warnings | 756 | 6.86 |
Total Warnings | 880 | 7.99 |
(* Defects per Thousand lines of non-commenting source statements)
Warning Type | Number |
---|---|
Bad practice Warnings | 264 |
Correctness Warnings | 36 |
Experimental Warnings | 1 |
Internationalization Warnings | 1 |
Malicious code vulnerability Warnings | 313 |
Multithreaded correctness Warnings | 19 |
Performance Warnings | 72 |
Dodgy code Warnings | 169 |
Total | 875 |
Click on each warning link to see a full description of the issue, and details of how to resolve it.
Warning | Priority | Details |
---|---|---|
Class defines clone() but doesn't implement Cloneable | High |
org.drools.core.base.MapGlobalResolver defines clone() but doesn't implement Cloneable |
clone method does not call super.clone() | High |
org.drools.core.common.DefaultFactHandle.clone() does not call super.clone() |
clone method does not call super.clone() | High |
org.drools.core.rule.Pattern.clone() does not call super.clone() |
Equals checks for incompatible operand | High |
org.drools.core.common.DoubleNonIndexSkipBetaConstraints.equals(Object) checks for operand being a DoubleBetaConstraints |
Equals checks for incompatible operand | High |
org.drools.core.common.QuadroupleNonIndexSkipBetaConstraints.equals(Object) checks for operand being a QuadroupleBetaConstraints |
Equals checks for incompatible operand | High |
org.drools.core.common.TripleNonIndexSkipBetaConstraints.equals(Object) checks for operand being a TripleBetaConstraints |
Equals checks for incompatible operand | High |
org.drools.core.reteoo.QueryTerminalNode.equals(Object) checks for operand being a Rete |
Equals checks for incompatible operand | High |
org.drools.core.rule.constraint.XpathConstraint$XpathDataProvider.equals(Object) checks for operand being a XpathConstraint$XpathChunk |
Class defines equals() and uses Object.hashCode() | High |
org.drools.core.base.RuleNameSerializationAgendaFilter defines equals and uses Object.hashCode() |
Class defines equals() and uses Object.hashCode() | High |
org.drools.core.factmodel.traits.TripleBasedTypes defines equals and uses Object.hashCode() |
Class defines equals() and uses Object.hashCode() | High |
org.drools.core.RuleBaseConfiguration$AssertBehaviour defines equals and uses Object.hashCode() |
Class defines equals() and uses Object.hashCode() | High |
org.drools.core.RuleBaseConfiguration$LogicalOverride defines equals and uses Object.hashCode() |
Class names shouldn't shadow simple name of superclass | High |
The class name org.drools.core.ClassObjectFilter shadows the simple name of the superclass org.kie.api.runtime.ClassObjectFilter |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.base.field.ClassFieldImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.base.TraitHelper is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | High |
Class org.drools.core.command.runtime.rule.GetObjectsCommand defines non-transient non-serializable instance field classObjectFilter |
Non-transient non-serializable instance field in serializable class | High |
Class org.drools.core.common.AgendaItemImpl defines non-transient non-serializable instance field activationGroupNode |
Non-transient non-serializable instance field in serializable class | High |
Class org.drools.core.common.AgendaItemImpl defines non-transient non-serializable instance field activationNode |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.event.rule.impl.ActivationEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.event.rule.impl.AgendaGroupEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.event.rule.impl.RuleFlowGroupEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.event.rule.impl.SerializableAgendaGroup is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.event.rule.impl.SerializableRuleFlowGroup is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.io.impl.EncodedResource is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.process.instance.impl.DefaultWorkItemManager is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | High |
Class org.drools.core.reteoo.FromNode$FromMemory defines non-transient non-serializable instance field betaMemory |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.reteoo.ObjectTypeNode$ExpireJobContext is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.reteoo.RuleRemovalContext is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | High |
Class org.drools.core.reteoo.RuleTerminalNodeLeftTuple defines non-transient non-serializable instance field activationGroupNode |
Non-transient non-serializable instance field in serializable class | High |
Class org.drools.core.reteoo.RuleTerminalNodeLeftTuple defines non-transient non-serializable instance field activationNode |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.rule.SlidingLengthWindow$SlidingLengthWindowContext is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | High |
org.drools.core.rule.SlidingTimeWindow$BehaviorJobContext is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | High |
Class org.drools.core.util.RBTree defines non-transient non-serializable instance field root |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.factmodel.FieldDefinition assumes the argument is of type FieldDefinition |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.AccumulateNode assumes the argument is of type AccumulateNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.AlphaNode assumes the argument is of type AlphaNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.BetaNode assumes the argument is of type BetaNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.CompositeObjectSinkAdapter$HashKey assumes the argument is of type CompositeObjectSinkAdapter$HashKey |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.ConditionalBranchNode assumes the argument is of type ConditionalBranchNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.EvalConditionNode assumes the argument is of type EvalConditionNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.FromNode assumes the argument is of type FromNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.LeftInputAdapterNode assumes the argument is of type LeftInputAdapterNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.ObjectTypeNode assumes the argument is of type ObjectTypeNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.PropagationQueuingNode assumes the argument is of type PropagationQueuingNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.QueryElementNode assumes the argument is of type QueryElementNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.QueryTerminalNode assumes the argument is of type QueryTerminalNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.RightInputAdapterNode assumes the argument is of type RightInputAdapterNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.TimerNode assumes the argument is of type TimerNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.WindowNode assumes the argument is of type WindowNode |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.reteoo.WindowTupleList assumes the argument is of type WindowTupleList |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.util.ClassUtils$SetterInClass assumes the argument is of type ClassUtils$SetterInClass |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.util.index.TupleList assumes the argument is of type TupleList |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.util.ObjectHashMap$ObjectEntry assumes the argument is of type ObjectHashMap$ObjectEntry |
Equals method should not assume anything about the type of its argument | Medium |
Equals method for org.drools.core.util.ObjectHashSet$ObjectEntry assumes the argument is of type ObjectHashSet$ObjectEntry |
clone method does not call super.clone() | Medium |
org.drools.core.base.dataproviders.MVELDataProvider.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.base.mvel.MVELCompilationUnit.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.base.mvel.MVELEvalExpression.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.common.DisconnectedFactHandle.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.common.EventFactHandle.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.common.InstanceEqualsConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.common.InstanceNotEqualsConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.common.QueryElementFactHandle.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.common.TupleStartEqualsConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.Collect.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.ConditionalBranch.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.constraint.EvaluatorConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.constraint.MvelConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.constraint.NegConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.constraint.QueryNameConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.constraint.XpathConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.constraint.XpathConstraint$XpathDataProvider.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.Declaration.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.EntryPointId.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.EvalCondition.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.EvalCondition$SafeEvalExpression.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.Forall.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.From.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.GroupElement.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.MultiAccumulate.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.NamedConsequence.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.PredicateConstraint.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.QueryElement.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.ReturnValueRestriction.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.SingleAccumulate.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.rule.WindowReference.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.time.impl.CompositeMaxDurationTimer.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.time.impl.CronExpression.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.time.impl.CronTimer.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.time.impl.DurationTimer.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.time.impl.ExpressionIntervalTimer.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.time.impl.IntervalTimer.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.time.Interval.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.util.bitmask.AllSetBitMask.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.util.bitmask.AllSetButLastBitMask.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.util.bitmask.EmptyBitMask.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.util.bitmask.EmptyButLastBitMask.clone() does not call super.clone() |
clone method does not call super.clone() | Medium |
org.drools.core.util.bitmask.LongBitMask.clone() does not call super.clone() |
Method might ignore exception | Medium |
new org.drools.core.base.field.ClassFieldImpl(String) might ignore java.lang.ClassNotFoundException |
Method might ignore exception | Medium |
new org.drools.core.common.ProjectClassLoader$IBMClassLoader(ClassLoader, ResourceProvider) might ignore java.lang.NoSuchMethodException |
Method might ignore exception | Medium |
org.drools.core.io.impl.ClassPathResource.getLastModified() might ignore java.io.IOException |
equals method fails for subtypes | Medium |
org.drools.core.base.ClassObjectType.equals(Object) fails for subtypes |
equals method fails for subtypes | Medium |
org.drools.core.facttemplates.FactImpl.equals(Object) fails for subtypes |
equals method fails for subtypes | Medium |
org.drools.core.rule.AbstractCompositeConstraint.equals(Object) fails for subtypes |
Class defines compareTo(...) and uses Object.equals() | Medium |
org.drools.core.rule.builder.dialect.asm.GeneratorHelper$DeclarationMatcher defines compareTo(Object) and uses Object.equals() |
equals method fails for subtypes | Medium |
org.drools.core.rule.constraint.MvelConstraint.equals(Object) fails for subtypes |
equals method fails for subtypes | Medium |
org.drools.core.rule.EvalCondition.equals(Object) fails for subtypes |
equals method fails for subtypes | Medium |
org.drools.core.rule.PredicateConstraint.equals(Object) fails for subtypes |
equals method fails for subtypes | Medium |
org.drools.core.rule.ReturnValueRestriction.equals(Object) fails for subtypes |
Class defines compareTo(...) and uses Object.equals() | Medium |
org.drools.core.time.impl.DefaultTimerJobInstance defines compareTo(DefaultTimerJobInstance) and uses Object.equals() |
Class defines compareTo(...) and uses Object.equals() | Medium |
org.drools.core.util.RBTree$Node defines compareTo(RBTree$Node) and uses Object.equals() |
Class inherits equals() and uses Object.hashCode() | Medium |
org.drools.core.factmodel.traits.TripleBasedBean inherits equals and uses Object.hashCode() |
Class defines equals() and uses Object.hashCode() | Medium |
org.drools.core.factmodel.traits.TripleBasedStruct defines equals and uses Object.hashCode() |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.base.evaluators.EvaluatorDefinition shadows the simple name of implemented interface org.kie.api.runtime.rule.EvaluatorDefinition |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.base.evaluators.Operator shadows the simple name of implemented interface org.kie.api.runtime.rule.Operator |
Method names should start with a lower case letter | Medium |
The method name org.drools.core.builder.conf.impl.ScoreCardConfigurationImpl.IsUsingExternalTypes() doesn't start with a lower case letter |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.ObjectFilter shadows the simple name of implemented interface org.kie.api.runtime.ObjectFilter |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.process.instance.WorkItem shadows the simple name of implemented interface org.kie.api.runtime.process.WorkItem |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.process.instance.WorkItemHandler shadows the simple name of implemented interface org.kie.api.runtime.process.WorkItemHandler |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.process.instance.WorkItemManager shadows the simple name of implemented interface org.kie.api.runtime.process.WorkItemManager |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.spi.AgendaGroup shadows the simple name of implemented interface org.kie.api.runtime.rule.AgendaGroup |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.spi.Evaluator shadows the simple name of implemented interface org.kie.api.runtime.rule.Evaluator |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.spi.ProcessContext shadows the simple name of implemented interface org.kie.api.runtime.process.ProcessContext |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.spi.PropagationContext shadows the simple name of implemented interface org.kie.api.runtime.rule.PropagationContext |
Class names shouldn't shadow simple name of implemented interface | Medium |
The class name org.drools.core.spi.RuleFlowGroup shadows the simple name of implemented interface org.kie.api.runtime.rule.RuleFlowGroup |
equals() method does not check for null argument | Medium |
org.drools.core.factmodel.FieldDefinition.equals(Object) does not check for null argument |
equals() method does not check for null argument | Medium |
org.drools.core.factmodel.traits.TripleBasedStruct.equals(Object) does not check for null argument |
equals() method does not check for null argument | Medium |
org.drools.core.factmodel.traits.TripleBasedTypes.equals(Object) does not check for null argument |
equals() method does not check for null argument | Medium |
org.drools.core.reteoo.CompositeObjectSinkAdapter$HashKey.equals(Object) does not check for null argument |
equals() method does not check for null argument | Medium |
org.drools.core.util.ClassUtils$SetterInClass.equals(Object) does not check for null argument |
equals() method does not check for null argument | Medium |
org.drools.core.util.index.TupleList.equals(Object) does not check for null argument |
equals() method does not check for null argument | Medium |
org.drools.core.util.ObjectHashMap$ObjectEntry.equals(Object) does not check for null argument |
equals() method does not check for null argument | Medium |
org.drools.core.util.ObjectHashSet$ObjectEntry.equals(Object) does not check for null argument |
Suspicious reference comparison of Boolean values | Medium |
Suspicious comparison of Boolean references in org.drools.core.common.ActivationIterator.next() |
Suspicious reference comparison of Boolean values | Medium |
Suspicious comparison of Boolean references in org.drools.core.phreak.PhreakTimerNode.doPropagateChildLeftTuple(LeftTupleSink, TupleSets, TupleSets, LeftTuple) |
Suspicious reference comparison of Boolean values | Medium |
Suspicious comparison of Boolean references in org.drools.core.reteoo.BaseLeftTuple.clearStaged() |
Method ignores exceptional return value | Medium |
Exceptional return value of java.util.concurrent.BlockingQueue.offer(Object) ignored in org.drools.core.impl.SessionsCache$SessionResetter.enqueue(SessionsCache, StatefulKnowledgeSessionImpl) |
Method ignores exceptional return value | Medium |
Exceptional return value of java.io.File.delete() ignored in org.drools.core.io.impl.UrlResource.cacheStream() |
Method ignores exceptional return value | Medium |
Exceptional return value of java.io.File.renameTo(File) ignored in org.drools.core.io.impl.UrlResource.cacheStream() |
Method ignores exceptional return value | Medium |
Exceptional return value of java.io.File.mkdirs() ignored in org.drools.core.util.IoUtils.copyFile(File, File) |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.base.evaluators.MatchesEvaluatorsDefinition$1 is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.base.evaluators.SetEvaluatorsDefinition$1 is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.base.evaluators.SoundslikeEvaluatorsDefinition$1 is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.base.evaluators.StrEvaluatorDefinition$StrEvaluator is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.beliefsystem.jtms.JTMSBeliefSetImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.beliefsystem.simple.SimpleBeliefSet is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.builder.conf.impl.JaxbConfigurationImpl defines non-transient non-serializable instance field xjcOpts |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.command.NewKieSessionCommand defines non-transient non-serializable instance field releaseId |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.command.runtime.process.CreateCorrelatedProcessInstanceCommand defines non-transient non-serializable instance field correlationKey |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.command.runtime.process.GetProcessInstanceByCorrelationKeyCommand defines non-transient non-serializable instance field correlationKey |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.command.runtime.process.SignalEventCommand defines non-transient non-serializable instance field correlationKey |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.command.runtime.process.StartCorrelatedProcessCommand defines non-transient non-serializable instance field correlationKey |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.command.runtime.RegisterChannelCommand defines non-transient non-serializable instance field channel |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.command.runtime.rule.FireUntilHaltCommand defines non-transient non-serializable instance field agendaFilter |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.common.AgendaItemImpl defines non-transient non-serializable instance field activationUnMatchListener |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.common.AgendaItemImpl defines non-transient non-serializable instance field agendaGroup |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.event.ProcessNodeLeftEventImpl defines non-transient non-serializable instance field nodeInstance |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.event.ProcessNodeTriggeredEventImpl defines non-transient non-serializable instance field nodeInstance |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.ActivationCancelledEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.ActivationCreatedEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.AfterActivationFiredEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.AgendaGroupPoppedEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.AgendaGroupPushedEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.BeforeActivationFiredEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.ObjectDeletedEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.ObjectInsertedEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.ObjectUpdatedEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.RuleFlowGroupActivatedEventImpl is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.event.rule.impl.RuleFlowGroupDeactivatedEventImpl is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Action defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Assert defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$BehaviorExpire defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$DeactivateCallback defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Expire defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$LogicalRetract defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Propagate defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Signal defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$SignalProcessInstance defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Activation defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Agenda defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Agenda$AgendaGroup defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Agenda$AgendaGroup$NodeInstance defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Agenda$FocusStack defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Agenda$RuleFlowGroup defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Agenda$RuleFlowGroup$NodeInstance defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$BeliefSet defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$EntryPoint defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$EqualityKey defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$FactHandle defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Header defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Header$StrategyIndex defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$KnowledgeBase defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$KnowledgeSession defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$LogicalDependency defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$AccumulateNodeMemory defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$AccumulateNodeMemory$AccumulateContext defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$FromNodeMemory defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$FromNodeMemory$FromContext defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$QueryElementNodeMemory defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$QueryElementNodeMemory$QueryContext defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$RIANodeMemory defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$RIANodeMemory$RIAContext defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ObjectTypeConfiguration defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$ProcessData defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$RuleData defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$RuntimeClassDef defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Signature defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Timers defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Timers$ActivationTimer defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Timers$BehaviorTimer defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Timers$ExpireTimer defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Timers$Timer defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Timers$TimerNodeTimer defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Trigger defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Trigger$CompositeMaxDurationTrigger defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Trigger$CronTrigger defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Trigger$IntervalTrigger defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Trigger$PointInTimeTrigger defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$TruthMaintenanceSystem defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Tuple defines non-transient non-serializable instance field unknownFields |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.marshalling.impl.ProtobufMessages$Version defines non-transient non-serializable instance field unknownFields |
Comparator doesn't implement Serializable | Medium |
org.drools.core.marshalling.impl.ProtobufOutputMarshaller$HandleSorter implements Comparator but not Serializable |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.phreak.PhreakTimerNode$TimerNodeJobContext defines non-transient non-serializable instance field pmems |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.phreak.PhreakTimerNode$TimerNodeJobContext defines non-transient non-serializable instance field tm |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.phreak.RuleAgendaItem defines non-transient non-serializable instance field executor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.AlphaNode$ObjectSinkUpdateAdapter is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.reteoo.BaseLeftTuple defines non-transient non-serializable instance field memory |
Comparator doesn't implement Serializable | Medium |
org.drools.core.reteoo.ClassObjectTypeConf$ObjectTypeNodeComparator implements Comparator but not Serializable |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.LeftInputAdapterNode$RightTupleSinkAdapter is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.MethodCountingAlphaNode is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.MethodCountingLeftInputAdapterNode is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.MethodCountingObjectTypeNode is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.PropagationQueuingNode$AssertAction is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.PropagationQueuingNode$AssertToSinkAction is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.PropagationQueuingNode$ModifyToSinkAction is Externalizable but doesn't define a void constructor |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.PropagationQueuingNode$RetractAction is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.reteoo.ReactiveFromNode$ReactiveFromMemory defines non-transient non-serializable instance field stagedLeftTuples |
Non-serializable value stored into instance field of a serializable class | Medium |
org.drools.core.common.TupleSetsImpl stored into non-transient field ReactiveFromNode$ReactiveFromMemory.stagedLeftTuples |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.reteoo.RightTupleImpl defines non-transient non-serializable instance field memory |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.reteoo.RuleTerminalNodeLeftTuple defines non-transient non-serializable instance field activationUnMatchListener |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.reteoo.RuleTerminalNodeLeftTuple defines non-transient non-serializable instance field agendaGroup |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.SegmentMemory is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.reteoo.SubnetworkTuple defines non-transient non-serializable instance field factHandleForEvaluation |
Non-serializable value stored into instance field of a serializable class | Medium |
org.drools.core.common.DefaultFactHandle stored into non-transient field SubnetworkTuple.factHandleForEvaluation |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.reteoo.TraitProxyObjectTypeNode is Externalizable but doesn't define a void constructor |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.reteoo.WindowTuple defines non-transient non-serializable instance field windowList |
Serializable inner class | Medium |
org.drools.core.rule.MultiAccumulate$Wirer is serializable and an inner class |
Serializable inner class | Medium |
org.drools.core.rule.SingleAccumulate$Wirer is serializable and an inner class |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.rule.XpathBackReference$RelativePattern is Externalizable but doesn't define a void constructor |
Transient field that isn't set by deserialization. | Medium |
The field org.drools.core.time.impl.DefaultTimerJobInstance.scheduler is transient but isn't set by deserialization |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.time.impl.JDKTimerService$JDKJobHandle defines non-transient non-serializable instance field future |
Comparator doesn't implement Serializable | Medium |
org.drools.core.util.debug.LeftMemorySizeComparator implements Comparator but not Serializable |
Comparator doesn't implement Serializable | Medium |
org.drools.core.util.debug.RightMemorySizeComparator implements Comparator but not Serializable |
Non-transient non-serializable instance field in serializable class | Medium |
Class org.drools.core.util.index.TupleIndexHashTable$FieldIndexHashTableFullIterator defines non-transient non-serializable instance field list |
Class is Externalizable but doesn't define a void constructor | Medium |
org.drools.core.util.StandaloneTraitFactory is Externalizable but doesn't define a void constructor |
Class is Serializable, but doesn't define serialVersionUID | Medium |
org.drools.core.command.runtime.rule.GetObjectCommand is Serializable; consider declaring a serialVersionUID |
Class is Serializable, but doesn't define serialVersionUID | Medium |
org.drools.core.command.runtime.rule.GetObjectsCommand is Serializable; consider declaring a serialVersionUID |
Class is Serializable, but doesn't define serialVersionUID | Medium |
org.drools.core.factmodel.traits.ThingProxyPlaceHolder is Serializable; consider declaring a serialVersionUID |
Class is Serializable, but doesn't define serialVersionUID | Medium |
org.drools.core.factmodel.traits.TraitMapPropertyWrapperClassBuilderImpl is Serializable; consider declaring a serialVersionUID |
Class is Serializable, but doesn't define serialVersionUID | Medium |
org.drools.core.factmodel.traits.TraitMapProxyClassBuilderImpl is Serializable; consider declaring a serialVersionUID |
Class is Serializable, but doesn't define serialVersionUID | Medium |
org.drools.core.factmodel.traits.TraitTriplePropertyWrapperClassBuilderImpl is Serializable; consider declaring a serialVersionUID |
Class is Serializable, but doesn't define serialVersionUID | Medium |
org.drools.core.factmodel.traits.TraitTripleProxyClassBuilderImpl is Serializable; consider declaring a serialVersionUID |
Class is Serializable, but doesn't define serialVersionUID | Medium |
org.drools.core.time.impl.CronTrigger is Serializable; consider declaring a serialVersionUID |
Warning | Priority | Details |
---|---|---|
Impossible cast | High |
Impossible cast from org.drools.core.rule.constraint.XpathConstraint$XpathChunk to org.drools.core.rule.constraint.XpathConstraint$XpathDataProvider in org.drools.core.rule.constraint.XpathConstraint$XpathDataProvider.equals(Object) |
An apparent infinite recursive loop | High |
There is an apparent infinite recursive loop in org.drools.core.beliefsystem.defeasible.DefeasibleBeliefSet.getLogicalDependency() |
An apparent infinite recursive loop | High |
There is an apparent infinite recursive loop in org.drools.core.common.DisconnectedFactHandle.clone() |
An apparent infinite recursive loop | High |
There is an apparent infinite recursive loop in org.drools.core.rule.constraint.MvelConstraint.calculateMask(ConditionAnalyzer$Condition, List) |
Nullcheck of value previously dereferenced | High |
Nullcheck of context at line 35 of value previously dereferenced in org.drools.core.reteoo.ReteObjectTypeNode.attach(BuildContext) |
Bad attempt to compute absolute value of signed 32-bit hashcode | High |
Bad attempt to compute absolute value of signed 32-bit hashcode in org.drools.core.base.ClassFieldAccessorFactory.getClassFieldReader(Class, String, ClassFieldAccessorCache$CacheEntry) |
Bad attempt to compute absolute value of signed 32-bit hashcode | High |
Bad attempt to compute absolute value of signed 32-bit hashcode in org.drools.core.base.ClassFieldAccessorFactory.getClassFieldWriter(Class, String, ClassFieldAccessorCache$CacheEntry) |
equals method overrides equals in superclass and may not be symmetric | Medium |
org.drools.core.common.EqualityKey overrides equals in org.drools.core.util.LinkedList and may not be symmetric |
equals method overrides equals in superclass and may not be symmetric | Medium |
org.drools.core.phreak.RuleAgendaItem overrides equals in org.drools.core.common.AgendaItemImpl and may not be symmetric |
equals method overrides equals in superclass and may not be symmetric | Medium |
org.drools.core.reteoo.SegmentMemory overrides equals in org.drools.core.util.LinkedList and may not be symmetric |
Possible null pointer dereference | Medium |
Possible null pointer dereference of value in org.drools.core.base.FieldFactory.getFieldValue(String, ValueType) |
Value is null and guaranteed to be dereferenced on exception path | Medium |
object is null guaranteed to be dereferenced in org.drools.core.common.NamedEntryPoint.removePropertyChangeListener(FactHandle, boolean) on exception path |
Possible null pointer dereference | Medium |
Possible null pointer dereference of AbstractEventSupport.listeners in org.drools.core.event.AbstractEventSupport.clear() |
Possible null pointer dereference in method on exception path | Medium |
Possible null pointer dereference of cw in org.drools.core.factmodel.traits.TraitClassBuilderImpl.buildClass(ClassDefinition, ClassLoader) on exception path |
Method call passes null for non-null parameter | Medium |
Null passed for non-null parameter of processTypeDeclaration(TypeDeclaration, InternalKnowledgePackage) in org.drools.core.impl.KnowledgeBaseImpl.internalAddPackages(List) |
Possible null pointer dereference | Medium |
Possible null pointer dereference of strategy in org.drools.core.marshalling.impl.InputMarshaller.readWorkItem(MarshallerReaderContext) |
Method call passes null for non-null parameter | Medium |
Null passed for non-null parameter of org.drools.core.common.ObjectTypeConfigurationRegistry.getObjectTypeConf(EntryPointId, Object) in org.drools.core.marshalling.impl.InputMarshaller.readFactHandle(MarshallerReaderContext) |
Method call passes null for non-null parameter | Medium |
Null passed for non-null parameter of org.drools.core.common.ObjectTypeConfigurationRegistry.getObjectTypeConf(EntryPointId, Object) in org.drools.core.marshalling.impl.ProtobufInputMarshaller.readFactHandle(MarshallerReaderContext, EntryPoint, ProtobufMessages$FactHandle) |
Possible null pointer dereference | Medium |
Possible null pointer dereference of rightMemory in org.drools.core.reteoo.QueryRiaFixerNode$QueryRiaFixerNodeFixer.execute(InternalWorkingMemory) |
Read of unwritten field | Medium |
Read of unwritten field annotations in org.drools.core.rule.BaseAnnotatedAsset.getAnnotation(Class) |
Read of unwritten field | Medium |
Read of unwritten field annotations in org.drools.core.rule.BaseAnnotatedAsset.getAnnotations() |
Read of unwritten field | Medium |
Read of unwritten field annotations in org.drools.core.rule.BaseAnnotatedAsset.getDeclaredAnnotations() |
Read of unwritten field | Medium |
Read of unwritten field annotations in org.drools.core.rule.BaseAnnotatedAsset.isAnnotationPresent(Class) |
Possible null pointer dereference | Medium |
Possible null pointer dereference of method in org.drools.core.rule.constraint.MvelConstraint.getFirstInvokedPropertyName(ConditionAnalyzer$Expression) |
Possible null pointer dereference | Medium |
Possible null pointer dereference of resolved in org.drools.core.rule.LogicTransformer.processElement(DeclarationScopeResolver, Stack, RuleConditionElement) |
Possible null pointer dereference in method on exception path | Medium |
Possible null pointer dereference of service in org.drools.core.time.TimerServiceFactory.getTimerService(SessionConfiguration) on exception path |
Possible null pointer dereference in method on exception path | Medium |
Possible null pointer dereference of v in org.drools.core.xml.jaxb.util.JaxbListAdapter.marshal(Collection) on exception path |
Nullcheck of value previously dereferenced | Medium |
Nullcheck of object at line 344 of value previously dereferenced in org.drools.core.common.NamedEntryPoint.update(InternalFactHandle, Object, BitMask, Class, Activation) |
Nullcheck of value previously dereferenced | Medium |
Nullcheck of coreKlazz at line 68 of value previously dereferenced in org.drools.core.factmodel.traits.TraitCoreWrapperClassBuilderImpl.buildClass(ClassDefinition, ClassLoader) |
Code checks for specific values returned by compareTo | Medium |
Check to see if return value of java.util.Comparator.compare(Object, Object) is equal to -1 |
Uncallable method defined in anonymous class | Medium |
Uncallable method org.drools.core.util.FastIterator$1.resume(Entry) defined in anonymous class |
Uninitialized read of field in constructor | Medium |
Uninitialized read of ruleBaseConfig in new org.drools.core.marshalling.impl.ProtobufMarshaller(KieBase, MarshallingConfiguration) |
Unwritten field | Medium |
Unwritten field: org.drools.core.rule.BaseAnnotatedAsset.annotations |
Field only ever set to null | Medium |
Field only ever set to null: org.drools.core.util.index.IndexUtil$Factory$IndexSpec.ascendingConstraintType |
Field only ever set to null | Medium |
Field only ever set to null: org.drools.core.util.index.IndexUtil$Factory$IndexSpec.descendingConstraintType |
Unwritten field | Medium |
Unwritten field: org.drools.core.world.impl.WorldImpl.lastReturnValue |
Warning | Priority | Details |
---|---|---|
Method may fail to clean up stream or resource on checked exception | Medium |
org.drools.core.io.impl.UrlResource.cacheStream() may fail to clean up java.io.OutputStream on checked exception |
Warning | Priority | Details |
---|---|---|
Reliance on default encoding | High |
Found reliance on default encoding in org.drools.core.util.ServiceDiscoveryImpl.processKieConf(InputStream, ServiceRegistry): new java.io.InputStreamReader(InputStream) |
Warning | Priority | Details |
---|---|---|
Field isn't final but should be | High |
org.drools.core.base.evaluators.AfterEvaluatorDefinition.AFTER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.base.evaluators.AfterEvaluatorDefinition.NOT_AFTER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.base.evaluators.BeforeEvaluatorDefinition.BEFORE isn't final but should be |
Field isn't final but should be | High |
org.drools.core.base.evaluators.BeforeEvaluatorDefinition.NOT_BEFORE isn't final but should be |
Field isn't final but should be | High |
org.drools.core.base.evaluators.IsAEvaluatorDefinition.ISA isn't final but should be |
Field isn't final but should be | High |
org.drools.core.base.evaluators.IsAEvaluatorDefinition.NOT_ISA isn't final but should be |
Field isn't final but should be | High |
org.drools.core.beliefsystem.jtms.JTMSBeliefSystem.STRICT isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Action.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Assert.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$BehaviorExpire.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$DeactivateCallback.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Expire.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$LogicalRetract.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Propagate.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Signal.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$SignalProcessInstance.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Activation.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Agenda.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Agenda$AgendaGroup.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Agenda$AgendaGroup$NodeInstance.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Agenda$FocusStack.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Agenda$RuleFlowGroup.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Agenda$RuleFlowGroup$NodeInstance.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$BeliefSet.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$EntryPoint.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$EqualityKey.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$FactHandle.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Header.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Header$StrategyIndex.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$KnowledgeBase.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$KnowledgeSession.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$LogicalDependency.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$AccumulateNodeMemory.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$AccumulateNodeMemory$AccumulateContext.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$FromNodeMemory.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$FromNodeMemory$FromContext.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$QueryElementNodeMemory.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$QueryElementNodeMemory$QueryContext.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$RIANodeMemory.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$NodeMemory$RIANodeMemory$RIAContext.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ObjectTypeConfiguration.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$ProcessData.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$RuleData.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$RuntimeClassDef.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Signature.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Timers.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Timers$ActivationTimer.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Timers$BehaviorTimer.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Timers$ExpireTimer.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Timers$Timer.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Timers$TimerNodeTimer.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Trigger.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Trigger$CompositeMaxDurationTrigger.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Trigger$CronTrigger.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Trigger$IntervalTrigger.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Trigger$PointInTimeTrigger.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$TruthMaintenanceSystem.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Tuple.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.marshalling.impl.ProtobufMessages$Version.PARSER isn't final but should be |
Field isn't final but should be | High |
org.drools.core.xml.jaxb.util.JaxbListAdapter.logger isn't final but should be |
Field isn't final but should be | High |
org.drools.core.xml.jaxb.util.JaxbMapAdapter.logger isn't final but should be |
Classloaders should only be created inside doPrivileged block | Medium |
new org.drools.core.base.ClassFieldAccessorCache$CacheEntry(ClassLoader) creates a org.drools.core.base.ClassFieldAccessorCache$DefaultByteArrayClassLoader classloader, which should be performed within a doPrivileged block |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.ArrayElements.getElements() may expose internal representation by returning ArrayElements.elements |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.DroolsQuery.getVariables() may expose internal representation by returning DroolsQuery.vars |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.AfterEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning AfterEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.BeforeEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning BeforeEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.CoincidesEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning CoincidesEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.DuringEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning DuringEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.FinishedByEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning FinishedByEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.FinishesEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning FinishesEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.IncludesEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning IncludesEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.IsAEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning IsAEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.MatchesEvaluatorsDefinition.getEvaluatorIds() may expose internal representation by returning MatchesEvaluatorsDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.MeetsEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning MeetsEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.MetByEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning MetByEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.OverlappedByEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning OverlappedByEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.OverlapsEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning OverlapsEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.SetEvaluatorsDefinition.getEvaluatorIds() may expose internal representation by returning SetEvaluatorsDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.SoundslikeEvaluatorsDefinition.getEvaluatorIds() may expose internal representation by returning SoundslikeEvaluatorsDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.StartedByEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning StartedByEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.StartsEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning StartsEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.evaluators.StrEvaluatorDefinition.getEvaluatorIds() may expose internal representation by returning StrEvaluatorDefinition.SUPPORTED_IDS |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.mvel.MVELCompilationUnit.getGlobalIdentifiers() may expose internal representation by returning MVELCompilationUnit.globalIdentifiers |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.mvel.MVELCompilationUnit.getInputIdentifiers() may expose internal representation by returning MVELCompilationUnit.inputIdentifiers |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.mvel.MVELCompilationUnit.getInputTypes() may expose internal representation by returning MVELCompilationUnit.inputTypes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.mvel.MVELCompilationUnit.getLocalDeclarations() may expose internal representation by returning MVELCompilationUnit.localDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.mvel.MVELCompilationUnit.getOtherIdentifiers() may expose internal representation by returning MVELCompilationUnit.otherIdentifiers |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.mvel.MVELCompilationUnit.getPreviousDeclarations() may expose internal representation by returning MVELCompilationUnit.previousDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.base.QueryRowWithSubruleIndex.getHandles() may expose internal representation by returning QueryRowWithSubruleIndex.handles |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.beliefsystem.defeasible.DefeasibleMode.getDefeats() may expose internal representation by returning DefeasibleMode.defeats |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.common.DefaultBetaConstraints.getConstraints() may expose internal representation by returning DefaultBetaConstraints.constraints |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.common.InstanceEqualsConstraint.getRequiredDeclarations() may expose internal representation by returning InstanceEqualsConstraint.declarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.common.InstanceNotEqualsConstraint.getRequiredDeclarations() may expose internal representation by returning InstanceNotEqualsConstraint.declarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.common.MultipleBetaConstraint.getConstraints() may expose internal representation by returning MultipleBetaConstraint.constraints |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.common.TupleStartEqualsConstraint.getRequiredDeclarations() may expose internal representation by returning TupleStartEqualsConstraint.declarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.definitions.rule.impl.RuleImpl.getCalendars() may expose internal representation by returning RuleImpl.calendars |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.factmodel.ClassDefinition.getInterfaces() may expose internal representation by returning ClassDefinition.interfaces |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.facttemplates.FactTemplateImpl.getAllFieldTemplates() may expose internal representation by returning FactTemplateImpl.fields |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.io.impl.ByteArrayResource.getBytes() may expose internal representation by returning ByteArrayResource.bytes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.metadata.ClassLiteral.getProperties() may expose internal representation by returning ClassLiteral.properties |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.metadata.ModifyLiteral.getAdditionalUpdates() may expose internal representation by returning ModifyLiteral.with |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.metadata.With.getArgs() may expose internal representation by returning With.args |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.phreak.StackEntry.getSmems() may expose internal representation by returning StackEntry.smems |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.QueryResultsImpl.getDeclarations() may expose internal representation by returning QueryResultsImpl.declarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.QueryResultsImpl.getIdentifiers() may expose internal representation by returning QueryResultsImpl.identifiers |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.QueryResultsImpl.getParameters() may expose internal representation by returning QueryResultsImpl.parameters |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.AbstractTerminalNode.getPathEndNodes() may expose internal representation by returning AbstractTerminalNode.pathEndNodes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.AbstractTerminalNode.getPathNodes() may expose internal representation by returning AbstractTerminalNode.pathNodes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.AccumulateNode.getResultConstraints() may expose internal representation by returning AccumulateNode.resultConstraints |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.BetaMemory.getContext() may expose internal representation by returning BetaMemory.context |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.builder.BuildContext.getLastBuiltPatterns() may expose internal representation by returning BuildContext.lastBuiltPatterns |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.builder.BuildContext.getWorkingMemories() may expose internal representation by returning BuildContext.workingMemories |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.ClassObjectTypeConf.getObjectTypeNodes() may expose internal representation by returning ClassObjectTypeConf.objectTypeNodes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.CompositeLeftTupleSinkAdapter.getSinks() may expose internal representation by returning CompositeLeftTupleSinkAdapter.sinkArray |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.CompositeObjectSinkAdapter.getSinks() may expose internal representation by returning CompositeObjectSinkAdapter.sinks |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.FactTemplateTypeConf.getObjectTypeNodes() may expose internal representation by returning FactTemplateTypeConf.cache |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.FromNode.getAlphaConstraints() may expose internal representation by returning FromNode.alphaConstraints |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.PathMemory.getSegmentMemories() may expose internal representation by returning PathMemory.segmentMemories |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.QueryTerminalNode.getAllDeclarations() may expose internal representation by returning QueryTerminalNode.allDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.QueryTerminalNode.getRequiredDeclarations() may expose internal representation by returning QueryTerminalNode.requiredDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.RightInputAdapterNode.getPathEndNodes() may expose internal representation by returning RightInputAdapterNode.pathEndNodes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.RightInputAdapterNode.getPathNodes() may expose internal representation by returning RightInputAdapterNode.pathNodes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.RuleTerminalNode.getAllDeclarations() may expose internal representation by returning RuleTerminalNode.allDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.RuleTerminalNode.getEnabledDeclarations() may expose internal representation by returning RuleTerminalNode.enabledDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.RuleTerminalNode.getRequiredDeclarations() may expose internal representation by returning RuleTerminalNode.requiredDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.RuleTerminalNode.getSalienceDeclarations() may expose internal representation by returning RuleTerminalNode.salienceDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.RuleTerminalNode.getTimerDeclarations() may expose internal representation by returning RuleTerminalNode.timerDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.SingleLeftTupleSinkAdapter.getSinks() may expose internal representation by returning SingleLeftTupleSinkAdapter.sinkArray |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.SingleObjectSinkAdapter.getSinks() may expose internal representation by returning SingleObjectSinkAdapter.sinks |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.TimerNode.getCalendarNames() may expose internal representation by returning TimerNode.calendarNames |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.reteoo.TimerNode.getDeclarations() may expose internal representation by returning TimerNode.declarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.AbductiveQuery.getAbducibleArgs() may expose internal representation by returning AbductiveQuery.abducibleArgs |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.AbstractCompositeConstraint.getAlphaConstraints() may expose internal representation by returning AbstractCompositeConstraint.alphaConstraints |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.AbstractCompositeConstraint.getBetaConstraints() may expose internal representation by returning AbstractCompositeConstraint.betaConstraints |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.AbstractCompositeConstraint.getRequiredDeclarations() may expose internal representation by returning AbstractCompositeConstraint.requiredDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.Accumulate.getRequiredDeclarations() may expose internal representation by returning Accumulate.requiredDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.BehaviorManager.getBehaviors() may expose internal representation by returning BehaviorManager.behaviors |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.builder.dialect.asm.ClassGenerator.generateBytecode() may expose internal representation by returning ClassGenerator.bytecode |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.constraint.EvaluatorConstraint.getRequiredDeclarations() may expose internal representation by returning EvaluatorConstraint.declarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.constraint.MvelConstraint.getOperators() may expose internal representation by returning MvelConstraint.operators |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.constraint.MvelConstraint.getRequiredDeclarations() may expose internal representation by returning MvelConstraint.declarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.constraint.MvelConstraint$MvelContextEntry.getDeclarations() may expose internal representation by returning MvelConstraint$MvelContextEntry.declarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.EvalCondition.getRequiredDeclarations() may expose internal representation by returning EvalCondition.requiredDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.MultiAccumulate.getAccumulators() may expose internal representation by returning MultiAccumulate.accumulators |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.PredicateConstraint.getGlobals() may expose internal representation by returning PredicateConstraint.requiredGlobals |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.PredicateConstraint.getLocalDeclarations() may expose internal representation by returning PredicateConstraint.localDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.PredicateConstraint.getOperators() may expose internal representation by returning PredicateConstraint.requiredOperators |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.PredicateConstraint.getPreviousDeclarations() may expose internal representation by returning PredicateConstraint.previousDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.PredicateConstraint.getRequiredDeclarations() may expose internal representation by returning PredicateConstraint.requiredDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.QueryElement.getArgTemplate() may expose internal representation by returning QueryElement.argTemplate |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.QueryElement.getDeclIndexes() may expose internal representation by returning QueryElement.declIndexes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.QueryElement.getRequiredDeclarations() may expose internal representation by returning QueryElement.requiredDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.QueryElement.getVariableIndexes() may expose internal representation by returning QueryElement.variableIndexes |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.QueryImpl.getParameters() may expose internal representation by returning QueryImpl.parameters |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.ReturnValueRestriction.getLocalDeclarations() may expose internal representation by returning ReturnValueRestriction.localDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.ReturnValueRestriction.getPreviousDeclarations() may expose internal representation by returning ReturnValueRestriction.previousDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.ReturnValueRestriction.getRequiredDeclarations() may expose internal representation by returning ReturnValueRestriction.requiredDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.ReturnValueRestriction.getRequiredGlobals() may expose internal representation by returning ReturnValueRestriction.requiredGlobals |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.ReturnValueRestriction$ReturnValueContextEntry.getLocalDeclarations() may expose internal representation by returning ReturnValueRestriction$ReturnValueContextEntry.localDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.rule.ReturnValueRestriction$ReturnValueContextEntry.getPreviousDeclarations() may expose internal representation by returning ReturnValueRestriction$ReturnValueContextEntry.previousDeclarations |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CompositeMaxDurationTrigger.getMaxDurationTimestamp() may expose internal representation by returning CompositeMaxDurationTrigger.maxDurationTimestamp |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CompositeMaxDurationTrigger.getTimerCurrentDate() may expose internal representation by returning CompositeMaxDurationTrigger.timerCurrentDate |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CompositeMaxDurationTrigger.hasNextFireTime() may expose internal representation by returning CompositeMaxDurationTrigger.maxDurationTimestamp |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.getCalendarNames() may expose internal representation by returning CronTrigger.calendarNames |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.getEndTime() may expose internal representation by returning CronTrigger.endTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.getNextFireTime() may expose internal representation by returning CronTrigger.nextFireTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.getPreviousFireTime() may expose internal representation by returning CronTrigger.previousFireTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.getStartTime() may expose internal representation by returning CronTrigger.startTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.hasNextFireTime() may expose internal representation by returning CronTrigger.nextFireTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.getCalendarNames() may expose internal representation by returning IntervalTrigger.calendarNames |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.getCreatedTime() may expose internal representation by returning IntervalTrigger.createdTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.getEndTime() may expose internal representation by returning IntervalTrigger.endTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.getLastFireTime() may expose internal representation by returning IntervalTrigger.lastFireTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.getNextFireTime() may expose internal representation by returning IntervalTrigger.nextFireTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.getStartTime() may expose internal representation by returning IntervalTrigger.startTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.hasNextFireTime() may expose internal representation by returning IntervalTrigger.nextFireTime |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.impl.PointInTimeTrigger.hasNextFireTime() may expose internal representation by returning PointInTimeTrigger.timestamp |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.time.TemporalDependencyMatrix.getMatrix() may expose internal representation by returning TemporalDependencyMatrix.matrix |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.util.AbstractHashTable.getTable() may expose internal representation by returning AbstractHashTable.table |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.util.bitmask.OpenBitSet.getBits() may expose internal representation by returning OpenBitSet.bits |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.util.KeyStoreHelper.getPubKeyStorePwd() may expose internal representation by returning KeyStoreHelper.pubKeyStorePwd |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.util.KeyStoreHelper.getPvtKeyPassword() may expose internal representation by returning KeyStoreHelper.pvtKeyPassword |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.util.KeyStoreHelper.getPvtKeyStorePwd() may expose internal representation by returning KeyStoreHelper.pvtKeyStorePwd |
May expose internal representation by returning reference to mutable object | Medium |
org.drools.core.xml.jaxb.util.JaxbListWrapper.getElements() may expose internal representation by returning JaxbListWrapper.elements |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.ArrayElements(Object[]) may expose internal representation by storing an externally mutable object into ArrayElements.elements |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.base.ArrayElements.setElements(Object[]) may expose internal representation by storing an externally mutable object into ArrayElements.elements |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.mvel.MVELCompilationUnit(String, String, String[], EvaluatorWrapper[], Declaration[], Declaration[], String[], String[], String[], int, boolean, boolean) may expose internal representation by storing an externally mutable object into MVELCompilationUnit.globalIdentifiers |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.mvel.MVELCompilationUnit(String, String, String[], EvaluatorWrapper[], Declaration[], Declaration[], String[], String[], String[], int, boolean, boolean) may expose internal representation by storing an externally mutable object into MVELCompilationUnit.inputIdentifiers |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.mvel.MVELCompilationUnit(String, String, String[], EvaluatorWrapper[], Declaration[], Declaration[], String[], String[], String[], int, boolean, boolean) may expose internal representation by storing an externally mutable object into MVELCompilationUnit.inputTypes |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.mvel.MVELCompilationUnit(String, String, String[], EvaluatorWrapper[], Declaration[], Declaration[], String[], String[], String[], int, boolean, boolean) may expose internal representation by storing an externally mutable object into MVELCompilationUnit.localDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.mvel.MVELCompilationUnit(String, String, String[], EvaluatorWrapper[], Declaration[], Declaration[], String[], String[], String[], int, boolean, boolean) may expose internal representation by storing an externally mutable object into MVELCompilationUnit.operators |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.mvel.MVELCompilationUnit(String, String, String[], EvaluatorWrapper[], Declaration[], Declaration[], String[], String[], String[], int, boolean, boolean) may expose internal representation by storing an externally mutable object into MVELCompilationUnit.otherIdentifiers |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.mvel.MVELCompilationUnit(String, String, String[], EvaluatorWrapper[], Declaration[], Declaration[], String[], String[], String[], int, boolean, boolean) may expose internal representation by storing an externally mutable object into MVELCompilationUnit.previousDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.base.mvel.MVELCompilationUnit.setPreviousDeclarations(Declaration[]) may expose internal representation by storing an externally mutable object into MVELCompilationUnit.previousDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.base.QueryRowWithSubruleIndex(InternalFactHandle[], int) may expose internal representation by storing an externally mutable object into QueryRowWithSubruleIndex.handles |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.common.DefaultBetaConstraints(BetaNodeFieldConstraint[], RuleBaseConfiguration, boolean) may expose internal representation by storing an externally mutable object into DefaultBetaConstraints.constraints |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.definitions.rule.impl.RuleImpl.setCalendars(String[]) may expose internal representation by storing an externally mutable object into RuleImpl.calendars |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.facttemplates.FactImpl(FactTemplate, Object[], long) may expose internal representation by storing an externally mutable object into FactImpl.values |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.facttemplates.FactTemplateImpl(InternalKnowledgePackage, String, FieldTemplate[]) may expose internal representation by storing an externally mutable object into FactTemplateImpl.fields |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.io.impl.ByteArrayResource(byte[]) may expose internal representation by storing an externally mutable object into ByteArrayResource.bytes |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.marshalling.impl.ObjectMarshallingStrategyStoreImpl(ObjectMarshallingStrategy[]) may expose internal representation by storing an externally mutable object into ObjectMarshallingStrategyStoreImpl.strategiesList |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.marshalling.impl.ProtobufInputMarshaller$ActivationKey(String, String, int[]) may expose internal representation by storing an externally mutable object into ProtobufInputMarshaller$ActivationKey.tuple |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.marshalling.impl.ProtobufInputMarshaller$TupleKey(int[]) may expose internal representation by storing an externally mutable object into ProtobufInputMarshaller$TupleKey.tuple |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.metadata.ClassLiteral(MetaProperty[]) may expose internal representation by storing an externally mutable object into ClassLiteral.properties |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.phreak.StackEntry(NetworkNode, long, LeftTupleSinkNode, PathMemory, Memory, SegmentMemory[], int, TupleSets, boolean, boolean) may expose internal representation by storing an externally mutable object into StackEntry.smems |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.QueryResultsImpl(List, Map[], WorkingMemory, Declaration[]) may expose internal representation by storing an externally mutable object into QueryResultsImpl.declarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.QueryResultsImpl(List, Map[], WorkingMemory, Declaration[]) may expose internal representation by storing an externally mutable object into QueryResultsImpl.parameters |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.reteoo.AbstractTerminalNode.setPathEndNodes(PathEndNode[]) may expose internal representation by storing an externally mutable object into AbstractTerminalNode.pathEndNodes |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.reteoo.AccumulateNode(int, LeftTupleSource, ObjectSource, AlphaNodeFieldConstraint[], BetaConstraints, BetaConstraints, Accumulate, boolean, BuildContext) may expose internal representation by storing an externally mutable object into AccumulateNode.resultConstraints |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.reteoo.AccumulateNode$MultiAccumulateMemory(BetaMemory, Accumulator[]) may expose internal representation by storing an externally mutable object into AccumulateNode$MultiAccumulateMemory.accumulators |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.reteoo.BetaMemory(TupleMemory, TupleMemory, ContextEntry[], short) may expose internal representation by storing an externally mutable object into BetaMemory.context |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.reteoo.FromNode(int, DataProvider, LeftTupleSource, AlphaNodeFieldConstraint[], BetaConstraints, boolean, BuildContext, From) may expose internal representation by storing an externally mutable object into FromNode.alphaConstraints |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.reteoo.PathMemory.setSegmentMemories(SegmentMemory[]) may expose internal representation by storing an externally mutable object into PathMemory.segmentMemories |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.reteoo.QueryElementNode$UnificationNodeViewChangedEventListener(LeftTuple, int[], QueryElementNode, boolean) may expose internal representation by storing an externally mutable object into QueryElementNode$UnificationNodeViewChangedEventListener.variables |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.reteoo.QueryElementNode$UnificationNodeViewChangedEventListener.setVariables(int[]) may expose internal representation by storing an externally mutable object into QueryElementNode$UnificationNodeViewChangedEventListener.variables |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.reteoo.RightInputAdapterNode.setPathEndNodes(PathEndNode[]) may expose internal representation by storing an externally mutable object into RightInputAdapterNode.pathEndNodes |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.reteoo.RuleTerminalNode.setSalienceDeclarations(Declaration[]) may expose internal representation by storing an externally mutable object into RuleTerminalNode.salienceDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.reteoo.TimerNode(int, LeftTupleSource, Timer, String[], Declaration[][], BuildContext) may expose internal representation by storing an externally mutable object into TimerNode.calendarNames |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.reteoo.TimerNode(int, LeftTupleSource, Timer, String[], Declaration[][], BuildContext) may expose internal representation by storing an externally mutable object into TimerNode.declarations |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.rule.AbductiveQuery.setReturnType(ClassObjectType, String[], String[], Declaration[]) may expose internal representation by storing an externally mutable object into AbductiveQuery.params |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.AbstractCompositeRestriction(Restriction[]) may expose internal representation by storing an externally mutable object into AbstractCompositeRestriction.restrictions |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.Accumulate(RuleConditionElement, Declaration[]) may expose internal representation by storing an externally mutable object into Accumulate.requiredDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.BehaviorManager(Behavior[]) may expose internal representation by storing an externally mutable object into BehaviorManager.behaviors |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.constraint.ConditionAnalyzer(ExecutableStatement, Declaration[], EvaluatorWrapper[], String) may expose internal representation by storing an externally mutable object into ConditionAnalyzer.declarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.constraint.ConditionAnalyzer(ExecutableStatement, Declaration[], EvaluatorWrapper[], String) may expose internal representation by storing an externally mutable object into ConditionAnalyzer.operators |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.constraint.EvaluatorConstraint(Declaration[], Evaluator, InternalReadAccessor) may expose internal representation by storing an externally mutable object into EvaluatorConstraint.declarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.constraint.MvelConditionEvaluator(MVELCompilationUnit, ParserConfiguration, ExecutableStatement, Declaration[], EvaluatorWrapper[], String) may expose internal representation by storing an externally mutable object into MvelConditionEvaluator.declarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.constraint.MvelConditionEvaluator(MVELCompilationUnit, ParserConfiguration, ExecutableStatement, Declaration[], EvaluatorWrapper[], String) may expose internal representation by storing an externally mutable object into MvelConditionEvaluator.operators |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.constraint.MvelConstraint$MvelContextEntry(Declaration[]) may expose internal representation by storing an externally mutable object into MvelConstraint$MvelContextEntry.declarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.EvalCondition(EvalExpression, Declaration[]) may expose internal representation by storing an externally mutable object into EvalCondition.requiredDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.MultiAccumulate(RuleConditionElement, Declaration[], Accumulator[]) may expose internal representation by storing an externally mutable object into MultiAccumulate.accumulators |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.PredicateConstraint(PredicateExpression, Declaration[], Declaration[], String[], String[]) may expose internal representation by storing an externally mutable object into PredicateConstraint.localDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.PredicateConstraint(PredicateExpression, Declaration[], Declaration[], String[], String[]) may expose internal representation by storing an externally mutable object into PredicateConstraint.previousDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.PredicateConstraint(PredicateExpression, Declaration[], Declaration[], String[], String[]) may expose internal representation by storing an externally mutable object into PredicateConstraint.requiredGlobals |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.PredicateConstraint(PredicateExpression, Declaration[], Declaration[], String[], String[]) may expose internal representation by storing an externally mutable object into PredicateConstraint.requiredOperators |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.QueryElement(Pattern, String, Object[], Declaration[], int[], int[], boolean, boolean) may expose internal representation by storing an externally mutable object into QueryElement.argTemplate |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.QueryElement(Pattern, String, Object[], Declaration[], int[], int[], boolean, boolean) may expose internal representation by storing an externally mutable object into QueryElement.declIndexes |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.QueryElement(Pattern, String, Object[], Declaration[], int[], int[], boolean, boolean) may expose internal representation by storing an externally mutable object into QueryElement.requiredDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.QueryElement(Pattern, String, Object[], Declaration[], int[], int[], boolean, boolean) may expose internal representation by storing an externally mutable object into QueryElement.variableIndexes |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.rule.QueryElement.setVariableIndexes(int[]) may expose internal representation by storing an externally mutable object into QueryElement.variableIndexes |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.rule.QueryImpl.setParameters(Declaration[]) may expose internal representation by storing an externally mutable object into QueryImpl.parameters |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.ReturnValueRestriction(InternalReadAccessor, ReturnValueExpression, Declaration[], Declaration[], String[], Evaluator) may expose internal representation by storing an externally mutable object into ReturnValueRestriction.localDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.ReturnValueRestriction(InternalReadAccessor, ReturnValueExpression, Declaration[], Declaration[], String[], Evaluator) may expose internal representation by storing an externally mutable object into ReturnValueRestriction.previousDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.ReturnValueRestriction(InternalReadAccessor, ReturnValueExpression, Declaration[], Declaration[], String[], Evaluator) may expose internal representation by storing an externally mutable object into ReturnValueRestriction.requiredGlobals |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.ReturnValueRestriction$ReturnValueContextEntry(ReadAccessor, Declaration[], Declaration[]) may expose internal representation by storing an externally mutable object into ReturnValueRestriction$ReturnValueContextEntry.localDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.rule.ReturnValueRestriction$ReturnValueContextEntry(ReadAccessor, Declaration[], Declaration[]) may expose internal representation by storing an externally mutable object into ReturnValueRestriction$ReturnValueContextEntry.previousDeclarations |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.time.impl.CompositeMaxDurationTrigger(Date, Trigger) may expose internal representation by storing an externally mutable object into CompositeMaxDurationTrigger.maxDurationTimestamp |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.CompositeMaxDurationTrigger.setMaxDurationTimestamp(Date) may expose internal representation by storing an externally mutable object into CompositeMaxDurationTrigger.maxDurationTimestamp |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.CompositeMaxDurationTrigger.setTimerCurrentDate(Date) may expose internal representation by storing an externally mutable object into CompositeMaxDurationTrigger.timerCurrentDate |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.time.impl.CronTrigger(long, Date, Date, int, CronExpression, String[], Calendars) may expose internal representation by storing an externally mutable object into CronTrigger.calendarNames |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.setCalendarNames(String[]) may expose internal representation by storing an externally mutable object into CronTrigger.calendarNames |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.setEndTime(Date) may expose internal representation by storing an externally mutable object into CronTrigger.endTime |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.setNextFireTime(Date) may expose internal representation by storing an externally mutable object into CronTrigger.nextFireTime |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.CronTrigger.setPreviousFireTime(Date) may expose internal representation by storing an externally mutable object into CronTrigger.previousFireTime |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.time.impl.IntervalTrigger(long, Date, Date, int, long, long, String[], Calendars, Date, Date) may expose internal representation by storing an externally mutable object into IntervalTrigger.calendarNames |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.time.impl.IntervalTrigger(long, Date, Date, int, long, long, String[], Calendars, Date, Date) may expose internal representation by storing an externally mutable object into IntervalTrigger.lastFireTime |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.setCalendarNames(String[]) may expose internal representation by storing an externally mutable object into IntervalTrigger.calendarNames |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.setEndTime(Date) may expose internal representation by storing an externally mutable object into IntervalTrigger.endTime |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.impl.IntervalTrigger.setNextFireTime(Date) may expose internal representation by storing an externally mutable object into IntervalTrigger.nextFireTime |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.time.TemporalDependencyMatrix(Interval[][], List) may expose internal representation by storing an externally mutable object into TemporalDependencyMatrix.matrix |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.time.TemporalDependencyMatrix.setMatrix(Interval[][]) may expose internal representation by storing an externally mutable object into TemporalDependencyMatrix.matrix |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.util.AbstractHashTable(float, Entry[]) may expose internal representation by storing an externally mutable object into AbstractHashTable.table |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.util.bitmask.OpenBitSet(long[], int) may expose internal representation by storing an externally mutable object into OpenBitSet.bits |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.util.bitmask.OpenBitSet.setBits(long[]) may expose internal representation by storing an externally mutable object into OpenBitSet.bits |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.util.index.TupleIndexHashTable.init(Entry[], int, int) may expose internal representation by storing an externally mutable object into TupleIndexHashTable.table |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.util.index.TupleIndexHashTable$FullFastIterator(Entry[]) may expose internal representation by storing an externally mutable object into TupleIndexHashTable$FullFastIterator.table |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.util.index.TupleIndexHashTable$FullFastIterator(Entry[], int) may expose internal representation by storing an externally mutable object into TupleIndexHashTable$FullFastIterator.table |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.util.index.TupleIndexHashTable$FullFastIterator.reset(Entry[]) may expose internal representation by storing an externally mutable object into TupleIndexHashTable$FullFastIterator.table |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.util.index.TupleIndexHashTable$FullFastIterator.resume(Entry, Entry[]) may expose internal representation by storing an externally mutable object into TupleIndexHashTable$FullFastIterator.table |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.xml.jaxb.util.JaxbListWrapper(Object[]) may expose internal representation by storing an externally mutable object into JaxbListWrapper.elements |
May expose internal representation by incorporating reference to mutable object | Medium |
new org.drools.core.xml.jaxb.util.JaxbListWrapper(Object[], JaxbListWrapper$JaxbWrapperType) may expose internal representation by storing an externally mutable object into JaxbListWrapper.elements |
May expose internal representation by incorporating reference to mutable object | Medium |
org.drools.core.xml.jaxb.util.JaxbListWrapper.setElements(Object[]) may expose internal representation by storing an externally mutable object into JaxbListWrapper.elements |
Field should be package protected | Medium |
org.drools.core.base.evaluators.CoincidesEvaluatorDefinition.COINCIDES should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.CoincidesEvaluatorDefinition.COINCIDES_NOT should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.DuringEvaluatorDefinition.DURING should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.DuringEvaluatorDefinition.NOT_DURING should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.FinishedByEvaluatorDefinition.FINISHED_BY should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.FinishedByEvaluatorDefinition.NOT_FINISHED_BY should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.FinishesEvaluatorDefinition.FINISHES should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.FinishesEvaluatorDefinition.FINISHES_NOT should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.IncludesEvaluatorDefinition.INCLUDES should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.IncludesEvaluatorDefinition.INCLUDES_NOT should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.MatchesEvaluatorsDefinition.MATCHES should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.MatchesEvaluatorsDefinition.NOT_MATCHES should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.MeetsEvaluatorDefinition.MEETS should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.MeetsEvaluatorDefinition.MEETS_NOT should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.MetByEvaluatorDefinition.MET_BY should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.MetByEvaluatorDefinition.NOT_MET_BY should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.OverlappedByEvaluatorDefinition.NOT_OVERLAPPED_BY should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.OverlappedByEvaluatorDefinition.OVERLAPPED_BY should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.OverlapsEvaluatorDefinition.OVERLAPS should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.OverlapsEvaluatorDefinition.OVERLAPS_NOT should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.SetEvaluatorsDefinition.CONTAINS should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.SetEvaluatorsDefinition.EXCLUDES should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.SetEvaluatorsDefinition.MEMBEROF should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.SetEvaluatorsDefinition.NOT_CONTAINS should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.SetEvaluatorsDefinition.NOT_EXCLUDES should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.SetEvaluatorsDefinition.NOT_MEMBEROF should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.SoundslikeEvaluatorsDefinition.NOT_SOUNDSLIKE should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.SoundslikeEvaluatorsDefinition.SOUNDSLIKE should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.StartedByEvaluatorDefinition.NOT_STARTED_BY should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.StartedByEvaluatorDefinition.STARTED_BY should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.StartsEvaluatorDefinition.STARTS should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.StartsEvaluatorDefinition.STARTS_NOT should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.StrEvaluatorDefinition.NOT_STR_COMPARE should be package protected |
Field should be package protected | Medium |
org.drools.core.base.evaluators.StrEvaluatorDefinition.STR_COMPARE should be package protected |
Field should be package protected | Medium |
org.drools.core.common.NamedEntryPoint.ADD_REMOVE_PROPERTY_CHANGE_LISTENER_ARG_TYPES should be package protected |
Field is a mutable collection which should be package protected | Medium |
org.drools.core.marshalling.impl.ProtobufMarshaller.TIMER_READERS is a mutable collection which should be package protected |
Field should be package protected | Medium |
org.drools.core.reteoo.ClassObjectTypeConf.ADD_REMOVE_PROPERTY_CHANGE_LISTENER_ARG_TYPES should be package protected |
Field is a mutable collection which should be package protected | Medium |
org.drools.core.time.impl.CronExpression.dayMap is a mutable collection which should be package protected |
Field is a mutable collection which should be package protected | Medium |
org.drools.core.time.impl.CronExpression.monthMap is a mutable collection which should be package protected |
Warning | Priority | Details |
---|---|---|
Sequence of calls to concurrent abstraction may not be atomic | Medium |
Sequence of calls to java.util.concurrent.ConcurrentHashMap may not be atomic in org.drools.core.management.KieSessionMonitoringImpl$AgendaStats.getRuleStatsInstance(String) |
Sequence of calls to concurrent abstraction may not be atomic | Medium |
Sequence of calls to java.util.concurrent.ConcurrentHashMap may not be atomic in org.drools.core.management.KieSessionMonitoringImpl$ProcessStats.getProcessInstanceStatsInstance(Long) |
Sequence of calls to concurrent abstraction may not be atomic | Medium |
Sequence of calls to java.util.concurrent.ConcurrentHashMap may not be atomic in org.drools.core.management.KieSessionMonitoringImpl$ProcessStats.getProcessStatsInstance(String) |
Possible double check of field | Medium |
Possible doublecheck on org.drools.core.impl.StatefulKnowledgeSessionImpl.processRuntime in org.drools.core.impl.StatefulKnowledgeSessionImpl.getProcessRuntime() |
Inconsistent synchronization | Medium |
Inconsistent synchronization of org.drools.core.factmodel.traits.AbstractTraitFactory.wrapperCache; locked 71% of time |
Inconsistent synchronization | Medium |
Inconsistent synchronization of org.drools.core.impl.StatefulKnowledgeSessionImpl.runtimeServices; locked 50% of time |
Inconsistent synchronization | Medium |
Inconsistent synchronization of org.drools.core.reteoo.ReteooBuilder.queries; locked 60% of time |
Inconsistent synchronization | Medium |
Inconsistent synchronization of org.drools.core.reteoo.ReteooBuilder.rules; locked 66% of time |
Inconsistent synchronization | Medium |
Inconsistent synchronization of org.drools.core.time.impl.PseudoClockScheduler.session; locked 66% of time |
Synchronization performed on util.concurrent instance | Medium |
Synchronization performed on java.util.concurrent.PriorityBlockingQueue in org.drools.core.time.impl.PseudoClockScheduler.getTimeToNextJob() |
Synchronization performed on util.concurrent instance | Medium |
Synchronization performed on java.util.concurrent.PriorityBlockingQueue in org.drools.core.time.impl.PseudoClockScheduler.internalSchedule(TimerJobInstance) |
Synchronization performed on util.concurrent instance | Medium |
Synchronization performed on java.util.concurrent.PriorityBlockingQueue in org.drools.core.time.impl.PseudoClockScheduler.removeJob(JobHandle) |
Synchronization performed on util.concurrent instance | Medium |
Synchronization performed on java.util.concurrent.PriorityBlockingQueue in org.drools.core.time.impl.PseudoClockScheduler.runCallBacksAndIncreaseTimer(long) |
Synchronization performed on util.concurrent instance | Medium |
Synchronization performed on java.util.concurrent.PriorityBlockingQueue in org.drools.core.time.impl.PseudoClockScheduler.runCallBacksAndIncreaseTimer(long) |
Naked notify | Medium |
Naked notify in org.drools.core.phreak.SynchronizedPropagationList.notifyWaitOnRest() |
Method does not release lock on all exception paths | Medium |
org.drools.core.common.NamedEntryPoint.delete(FactHandle, RuleImpl, Activation, FactHandle$State) does not release lock on all exception paths |
Method does not release lock on all exception paths | Medium |
org.drools.core.common.NamedEntryPoint.update(InternalFactHandle, Object, BitMask, Class, Activation) does not release lock on all exception paths |
An increment to a volatile field isn't atomic | Medium |
Increment of volatile field org.drools.core.util.BinaryHeapQueue.size in org.drools.core.util.BinaryHeapQueue.dequeue(int) |
Wait not in loop | Medium |
Wait not in loop in org.drools.core.phreak.SynchronizedPropagationList.waitOnRest() |
Warning | Priority | Details |
---|---|---|
Boxing/unboxing to parse a primitive | High |
Boxing/unboxing to parse a primitive org.drools.core.base.DefaultKnowledgeHelper.getContext(Class) |
Boxing/unboxing to parse a primitive | High |
Boxing/unboxing to parse a primitive org.drools.core.base.field.ObjectFieldImpl.getIntValue() |
Boxing/unboxing to parse a primitive | High |
Boxing/unboxing to parse a primitive org.drools.core.base.field.ObjectFieldImpl.getLongValue() |
Method allocates a boxed primitive just to call toString | High |
Primitive boxed just to call toString in org.drools.core.util.StringUtils.escapeXmlString(String) |
The equals and hashCode methods of URL are blocking | High |
Invocation of java.net.URL.equals(Object), which blocks to do domain name resolution, in org.drools.core.io.impl.UrlResource.equals(Object) |
The equals and hashCode methods of URL are blocking | High |
Invocation of java.net.URL.hashCode(), which blocks to do domain name resolution, in org.drools.core.io.impl.UrlResource.hashCode() |
Explicit garbage collection; extremely dubious except in benchmarking code | High |
org.drools.core.util.IoUtils.write(File, byte[]) forces garbage collection; extremely dubious except in benchmarking code |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.accumulators.CountAccumulateFunction.getResult(Serializable) invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.DefaultKnowledgeHelper.getContext(Class) invokes inefficient new Long(String) constructor; use Long.valueOf(String) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseByteClassFieldReader.getValue(InternalWorkingMemory, Object) invokes inefficient new Byte(byte) constructor; use Byte.valueOf(byte) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseCharClassFieldReader.getValue(InternalWorkingMemory, Object) invokes inefficient new Character(char) constructor; use Character.valueOf(char) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseIntClassFieldReader.getValue(InternalWorkingMemory, Object) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseLongClassFieldReader.getValue(InternalWorkingMemory, Object) invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseObjectClassFieldWriter.setByteValue(Object, byte) invokes inefficient new Byte(byte) constructor; use Byte.valueOf(byte) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseObjectClassFieldWriter.setCharValue(Object, char) invokes inefficient new Character(char) constructor; use Character.valueOf(char) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseObjectClassFieldWriter.setIntValue(Object, int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseObjectClassFieldWriter.setLongValue(Object, long) invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseObjectClassFieldWriter.setShortValue(Object, short) invokes inefficient new Short(short) constructor; use Short.valueOf(short) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.extractors.BaseShortClassFieldReader.getValue(InternalWorkingMemory, Object) invokes inefficient new Short(short) constructor; use Short.valueOf(short) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.field.LongFieldImpl.getValue() invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.FieldFactory.getFieldValue(String, ValueType) invokes inefficient new Byte(String) constructor; use Byte.valueOf(String) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.FieldFactory.getFieldValue(String, ValueType) invokes inefficient new Integer(String) constructor; use Integer.valueOf(String) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.FieldFactory.getFieldValue(String, ValueType) invokes inefficient new Long(String) constructor; use Long.valueOf(String) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.base.FieldFactory.getFieldValue(String, ValueType) invokes inefficient new Short(String) constructor; use Short.valueOf(String) instead |
Boxed value is unboxed and then immediately reboxed | Medium |
Boxed value is unboxed and then immediately reboxed in org.drools.core.marshalling.impl.ProtobufInputMarshaller.readTruthMaintenanceSystem(MarshallerReaderContext, EntryPoint, ProtobufMessages$EntryPoint, List) |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.process.core.datatype.impl.type.IntegerDataType.readValue(String) invokes inefficient new Integer(String) constructor; use Integer.valueOf(String) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.process.instance.impl.DefaultWorkItemManager.abortWorkItem(long) invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.process.instance.impl.DefaultWorkItemManager.completeWorkItem(long, Map) invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.process.instance.impl.DefaultWorkItemManager.internalAbortWorkItem(long) invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.process.instance.impl.DefaultWorkItemManager.internalAddWorkItem(WorkItem) invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.time.impl.CronExpression.<static initializer for CronExpression>() invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.time.impl.CronExpression.addToSet(int, int, int, int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.time.impl.CronExpression.checkNext(int, String, int, int) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.time.impl.CronExpression.getTimeAfter(Date) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.util.KieFunctions.compareTo(Number, String) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.util.KieFunctions.compareTo(Number, String) invokes inefficient new Long(long) constructor; use Long.valueOf(long) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.util.KieFunctions.compareTo(Number, String) invokes inefficient new Short(short) constructor; use Short.valueOf(short) instead |
Method invokes inefficient Number constructor; use static valueOf instead | Medium |
org.drools.core.xml.ExtensibleXmlParser.buildPrintMessage(SAXParseException) invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead |
Method invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead | Medium |
org.drools.core.process.core.datatype.impl.type.BooleanDataType.readValue(String) invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead |
Method concatenates strings using + in a loop | Medium |
org.drools.core.command.runtime.process.CompleteWorkItemCommand.toString() concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.command.runtime.process.CreateCorrelatedProcessInstanceCommand.toString() concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.command.runtime.process.CreateProcessInstanceCommand.toString() concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.command.runtime.process.SetProcessInstanceVariablesCommand.toString() concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.command.runtime.process.StartCorrelatedProcessCommand.toString() concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.command.runtime.process.StartProcessCommand.toString() concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.factmodel.DefaultEnumClassBuilder.buildConstructors(ClassWriter, EnumClassDefinition) concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.factmodel.traits.AbstractTraitFactory.buildSignature(Method) concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.rule.builder.dialect.asm.ClassGenerator.toInteralName(String) concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.rule.builder.dialect.asm.ClassGenerator.toTypeDescriptor(String) concatenates strings using + in a loop |
Method concatenates strings using + in a loop | Medium |
org.drools.core.time.impl.CronExpression.getValue(int, String, int) concatenates strings using + in a loop |
Should be a static inner class | Medium |
Should org.drools.core.audit.KnowledgeRuntimeLoggerProviderImpl$KnowledgeRuntimeConsoleLoggerWrapper be a _static_ inner class? |
Should be a static inner class | Medium |
Should org.drools.core.audit.KnowledgeRuntimeLoggerProviderImpl$KnowledgeRuntimeFileLoggerWrapper be a _static_ inner class? |
Should be a static inner class | Medium |
Should org.drools.core.audit.KnowledgeRuntimeLoggerProviderImpl$KnowledgeRuntimeThreadedFileLoggerWrapper be a _static_ inner class? |
Should be a static inner class | Medium |
Should org.drools.core.impl.StatefulKnowledgeSessionImpl$EntryPointObjects be a _static_ inner class? |
Should be a static inner class | Medium |
Should org.drools.core.rule.LogicTransformer$AndOrTransformation be a _static_ inner class? |
Should be a static inner class | Medium |
Should org.drools.core.rule.LogicTransformer$ExistOrTransformation be a _static_ inner class? |
Should be a static inner class | Medium |
Should org.drools.core.rule.LogicTransformer$NotOrTransformation be a _static_ inner class? |
Should be a static inner class | Medium |
Should org.drools.core.util.asm.ClassFieldInspector$GetterOverloadWarning be a _static_ inner class? |
Private method is never called | Medium |
Private method org.drools.core.reteoo.compiled.ObjectTypeNodeParser.traversePropagator(LeftTupleSinkPropagator, NetworkHandler) is never called |
Unread field | Medium |
Unread field: org.drools.core.impl.StatefulKnowledgeSessionImpl$EntryPointObjects.name |
Unread field | Medium |
Unread field: org.drools.core.impl.StatefulKnowledgeSessionImpl$EntryPointObjects.objects |
Unread field | Medium |
Unread field: org.drools.core.phreak.AddRemoveRule$Flushed.pathMemory |
Unread field | Medium |
Unread field: org.drools.core.phreak.AddRemoveRule$PathEndNodes.subjectSplit |
Unread field | Medium |
Unread field: org.drools.core.world.impl.WorldImpl.executionHandler |
Unused field | Medium |
Unused field: org.drools.core.beliefsystem.defeasible.Join.firstLeft |
Unused field | Medium |
Unused field: org.drools.core.beliefsystem.defeasible.Join.firstRight |
Unused field | Medium |
Unused field: org.drools.core.beliefsystem.defeasible.Join.lastLeft |
Unused field | Medium |
Unused field: org.drools.core.beliefsystem.defeasible.Join.lastRight |
Inefficient use of keySet iterator instead of entrySet iterator | Medium |
org.drools.core.factmodel.AnnotationDefinition.build(Class, Map, TypeResolver) makes inefficient use of keySet iterator instead of entrySet iterator |
Inefficient use of keySet iterator instead of entrySet iterator | Medium |
org.drools.core.factmodel.traits.AbstractTraitFactory.buildClassDefinition(Class, Class) makes inefficient use of keySet iterator instead of entrySet iterator |
Inefficient use of keySet iterator instead of entrySet iterator | Medium |
org.drools.core.factmodel.traits.TripleBasedStruct.putAll(Map) makes inefficient use of keySet iterator instead of entrySet iterator |
Inefficient use of keySet iterator instead of entrySet iterator | Medium |
org.drools.core.factmodel.traits.TripleBasedTypes.putAll(Map) makes inefficient use of keySet iterator instead of entrySet iterator |
Warning | Priority | Details |
---|---|---|
Dead store to local variable that shadows field | High |
Dead store to processRuntime rather than field with same name in org.drools.core.impl.StatefulKnowledgeSessionImpl.createProcessRuntime() |
Dead store to local variable | High |
Dead store to nodeTypesInSegment in org.drools.core.phreak.SegmentUtilities.restoreSegmentFromPrototype(InternalWorkingMemory, LeftTupleSource, int) |
Dead store to local variable | High |
Dead store to outs in org.drools.core.runtime.help.impl.XStreamXML$QueryConverter.unmarshal(HierarchicalStreamReader, UnmarshallingContext) |
Dead store to local variable | High |
Dead store to toBeRemoved in org.drools.core.util.index.TupleIndexRBTree.toArray() |
Non serializable object written to ObjectOutput | High |
Non serializable com.sun.tools.xjc.Options written to ObjectOutput in org.drools.core.builder.conf.impl.JaxbConfigurationImpl.toByteArray() |
Non serializable object written to ObjectOutput | High |
Non serializable org.drools.core.reteoo.PropagationQueuingNode$PropagateAction written to ObjectOutput in org.drools.core.reteoo.PropagationQueuingNode.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | High |
Non serializable org.drools.core.common.EventFactHandle written to ObjectOutput in org.drools.core.rule.SlidingLengthWindow$SlidingLengthWindowContext.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | High |
Non serializable org.drools.core.common.EventFactHandle written to ObjectOutput in org.drools.core.rule.SlidingTimeWindow$SlidingTimeWindowContext.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | High |
Non serializable org.drools.core.util.TupleRBTree<java.lang.Comparable<java.lang.Comparable>> written to ObjectOutput in org.drools.core.util.index.TupleIndexRBTree.writeExternal(ObjectOutput) |
Private readResolve method not inherited by subclasses | High |
Private readResolve method in org.drools.core.base.ValueType not inherited by subclasses. |
Write to static field from instance method | High |
Write to static field org.drools.core.common.InstanceNotEqualsConstraint.declarations from instance method org.drools.core.common.InstanceNotEqualsConstraint.readExternal(ObjectInput) |
Condition has no effect | High |
Useless condition: it's known that elements.length > 6 at this point |
Condition has no effect | High |
Useless condition: it's known that this.multithread == false at this point |
Unchecked/unconfirmed cast | Medium |
Unchecked/unconfirmed cast from org.mvel2.ast.ASTNode to org.mvel2.ast.WithNode in org.drools.core.base.ModifyInterceptor.doAfter(Object, ASTNode, VariableResolverFactory) |
instanceof will always return true | Medium |
instanceof will always return true for all non-null values in org.drools.core.impl.StatefulKnowledgeSessionImpl.getActivationParameters(Tuple), since all org.drools.core.common.InternalFactHandle are instances of org.drools.core.common.InternalFactHandle |
Unchecked/unconfirmed cast | Medium |
Unchecked/unconfirmed cast from org.drools.core.definitions.rule.impl.RuleImpl to org.drools.core.rule.QueryImpl in new org.drools.core.reteoo.QueryTerminalNode(int, LeftTupleSource, RuleImpl, GroupElement, int, BuildContext) |
Dead store to local variable | Medium |
Dead store to handle in org.drools.core.base.TraitHelper.insertLogical(Activation, Object, Mode[]) |
Dead store to local variable | Medium |
Dead store to handle in org.drools.core.base.TraitHelper.makeTraitable(Object, TraitFactory, boolean, Activation) |
Dead store to local variable | Medium |
Dead store to handle in org.drools.core.base.TraitHelper.updateCore(TraitableBean, Object, Class, boolean, Activation) |
Dead store to local variable | Medium |
Dead store to sBeliefSet in org.drools.core.beliefsystem.simple.SimpleBeliefSystem.delete(SimpleMode, RuleImpl, Activation, Object, BeliefSet, PropagationContext) |
Dead store to local variable | Medium |
Dead store to hasObjects in org.drools.core.factmodel.DefaultBeanClassBuilder.buildDefaultConstructor(ClassVisitor, ClassDefinition) |
Dead store to local variable | Medium |
Dead store to wrapperClass in org.drools.core.factmodel.traits.AbstractTraitFactory.buildProxyClass(String, TraitableBean, Class) |
Dead store to local variable | Medium |
Dead store to fieldName in org.drools.core.factmodel.traits.TraitMapProxyClassBuilderImpl.buildHardGetter(ClassVisitor, FieldDefinition, String, ClassDefinition, ClassDefinition, String, boolean) |
Dead store to local variable | Medium |
Dead store to fieldName in org.drools.core.factmodel.traits.TraitMapProxyClassBuilderImpl.buildSoftGetter(ClassVisitor, FieldDefinition, String, ClassDefinition, ClassDefinition, String, boolean) |
Dead store to local variable | Medium |
Dead store to fieldName in org.drools.core.factmodel.traits.TraitMapProxyClassBuilderImpl.buildSoftSetter(ClassVisitor, FieldDefinition, String, ClassDefinition, ClassDefinition, String, boolean) |
Dead store to local variable | Medium |
Dead store to internalCore in org.drools.core.factmodel.traits.TraitTriplePropertyWrapperClassBuilderImpl.buildClass(ClassDefinition, ClassLoader) |
Dead store to local variable | Medium |
Dead store to masterName in org.drools.core.factmodel.traits.TraitTriplePropertyWrapperClassBuilderImpl.buildClass(ClassDefinition, ClassLoader) |
Dead store to local variable | Medium |
Dead store to N in org.drools.core.factmodel.traits.TraitTriplePropertyWrapperClassBuilderImpl.buildContainsValue(ClassWriter, String, String, ClassDefinition, ClassDefinition, BitSet) |
Dead store to local variable | Medium |
Dead store to stackSize in org.drools.core.factmodel.traits.TraitTriplePropertyWrapperClassBuilderImpl.buildInitSoftFields(ClassWriter, String, ClassDefinition, ClassDefinition, BitSet) |
Dead store to local variable | Medium |
Dead store to fieldType in org.drools.core.factmodel.traits.TraitTripleProxyClassBuilderImpl.buildHardSetter(ClassVisitor, FieldDefinition, String, ClassDefinition, ClassDefinition, String, boolean) |
Dead store to local variable | Medium |
Dead store to fieldName in org.drools.core.factmodel.traits.TraitTripleProxyClassBuilderImpl.buildSoftGetter(ClassVisitor, FieldDefinition, String, ClassDefinition, ClassDefinition, String, boolean) |
Dead store to local variable | Medium |
Dead store to fieldName in org.drools.core.factmodel.traits.TraitTripleProxyClassBuilderImpl.buildSoftSetter(ClassVisitor, FieldDefinition, String, ClassDefinition, ClassDefinition, String, boolean) |
Dead store to local variable | Medium |
Dead store to classLoaderCacheEnabled in org.drools.core.impl.KnowledgeBaseImpl.readExternal(ObjectInput) |
Dead store to local variable | Medium |
Dead store to conf in org.drools.core.marshalling.impl.ProtobufMarshaller.unmarshall(InputStream, KieSessionConfiguration, Environment) |
Dead store to local variable | Medium |
Dead store to lian in org.drools.core.phreak.PhreakTimerNode.evaluate(PathMemory, InternalWorkingMemory, LeftTupleSink, TimerNode$TimerNodeMemory, TupleSets) |
Dead store to local variable | Medium |
Dead store to nodeTypesInSegment in org.drools.core.phreak.SegmentUtilities.createSegmentMemory(LeftTupleSource, InternalWorkingMemory) |
Dead store to local variable | Medium |
Dead store to resultPattern in org.drools.core.reteoo.builder.CollectBuilder.build(BuildContext, BuildUtils, RuleConditionElement) |
Dead store to local variable | Medium |
Dead store to rightParent in org.drools.core.reteoo.CompositeLeftTupleSinkAdapter.propagateRetractLeftTupleDestroyRightTuple(LeftTuple, PropagationContext, InternalWorkingMemory) |
Dead store to local variable | Medium |
Dead store to ent in org.drools.core.rule.DynamicFact.entrySet() |
Dead store to local variable | Medium |
Dead store to i in org.drools.core.rule.SlidingTimeWindow$BehaviorJobContextTimerInputMarshaller.deserialize(MarshallerReaderContext, ProtobufMessages$Timers$Timer) |
Dead store to local variable | Medium |
Dead store to behaviorContext in org.drools.core.rule.SlidingTimeWindow$BehaviorJobContextTimerInputMarshaller.read(MarshallerReaderContext) |
Dead store to local variable | Medium |
Dead store to i in org.drools.core.rule.SlidingTimeWindow$BehaviorJobContextTimerInputMarshaller.read(MarshallerReaderContext) |
Dead store to local variable | Medium |
Dead store to cmd in org.drools.core.runtime.help.impl.XStreamXML$ClearAgendaConverter.marshal(Object, HierarchicalStreamWriter, MarshallingContext) |
Dead store to local variable | Medium |
Dead store to endDeclarations in org.drools.core.time.impl.ExpressionIntervalTimer.createTrigger(long, Tuple, DefaultJobHandle, String[], Calendars, Declaration[][], InternalWorkingMemory) |
Dead store to local variable | Medium |
Dead store to an in org.drools.core.util.debug.LeftInputAdapterNodeVisitor.doVisit(NetworkNode, Stack, StatefulKnowledgeSessionInfo) |
Dead store to local variable | Medium |
Dead store to inDex in org.drools.core.util.HierarchyEncoderImpl.modify(HierNode, HierNode) |
Dead store to local variable | Medium |
Dead store to upperNearest in org.drools.core.util.TupleRBTree.rangeLowerBounded(Comparable, boolean) |
Dead store to local variable | Medium |
Dead store to upperNearest in org.drools.core.util.TupleRBTree.rangeUperBounded(Comparable, boolean) |
Dead store to local variable | Medium |
Dead store to element in org.drools.core.xml.changeset.AddHandler.end(String, String, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to changeSet in org.drools.core.xml.changeset.AddHandler.start(String, String, Attributes, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to element in org.drools.core.xml.changeset.ChangeSetHandler.end(String, String, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to element in org.drools.core.xml.changeset.DecisionTableConfigurationHandler.end(String, String, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to element in org.drools.core.xml.changeset.DefinitionHandler.end(String, String, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to element in org.drools.core.xml.changeset.ModifyHandler.end(String, String, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to changeSet in org.drools.core.xml.changeset.ModifyHandler.start(String, String, Attributes, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to element in org.drools.core.xml.changeset.RemoveHandler.end(String, String, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to changeSet in org.drools.core.xml.changeset.RemoveHandler.start(String, String, Attributes, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to element in org.drools.core.xml.changeset.ResourceHandler.end(String, String, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to collection in org.drools.core.xml.changeset.ResourceHandler.start(String, String, Attributes, ExtensibleXmlParser) |
Dead store to local variable | Medium |
Dead store to isValidatingString in org.drools.core.xml.ExtensibleXmlParser.read(InputSource) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.drools.core.audit.event.LogEvent written to ObjectOutput in org.drools.core.audit.WorkingMemoryFileLogger.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.drools.core.audit.event.LogEvent written to ObjectOutput in org.drools.core.audit.WorkingMemoryInMemoryLogger.getEvents() |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.drools.core.audit.event.LogEvent written to ObjectOutput in org.drools.core.audit.WorkingMemoryInMemoryLogger.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.drools.core.audit.event.ILogEventFilter written to ObjectOutput in org.drools.core.audit.WorkingMemoryLogger.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.kie.api.time.Calendar written to ObjectOutput in org.drools.core.base.CalendarsImpl.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.drools.core.common.InternalAgendaGroup written to ObjectOutput in org.drools.core.common.DefaultAgenda.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.drools.core.spi.AgendaGroup written to ObjectOutput in org.drools.core.common.DefaultAgenda.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.drools.core.spi.ConsequenceExceptionHandler written to ObjectOutput in org.drools.core.common.DefaultAgenda.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.drools.core.spi.InternalActivationGroup written to ObjectOutput in org.drools.core.common.DefaultAgenda.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable reflect.Constructor written to ObjectOutput in org.drools.core.factmodel.traits.AbstractTraitFactory.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.kie.api.definition.KieDescr written to ObjectOutput in org.drools.core.io.impl.DescrResource.writeExternal(ObjectOutput) |
Non serializable object written to ObjectOutput | Medium |
Non serializable org.kie.api.runtime.process.WorkItemHandler written to ObjectOutput in org.drools.core.process.instance.impl.DefaultWorkItemManager.writeExternal(ObjectOutput) |
Class doesn't override equals in superclass | Medium |
org.drools.core.beliefsystem.jtms.JTMSBeliefSetImpl doesn't override org.drools.core.util.LinkedList.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.beliefsystem.simple.SimpleBeliefSet doesn't override org.drools.core.util.LinkedList.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.common.EventFactHandle doesn't override DefaultFactHandle.equals(Object) |
Unusual equals method | Medium |
org.drools.core.factmodel.traits.ThingProxyPlaceHolder.equals(Object) is unusual |
Class doesn't override equals in superclass | Medium |
org.drools.core.reteoo.EvalNodeLeftTuple doesn't override BaseLeftTuple.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.reteoo.LeftTupleImpl doesn't override BaseLeftTuple.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.reteoo.NotNodeLeftTuple doesn't override BaseLeftTuple.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.reteoo.RuleTerminalNodeLeftTuple doesn't override BaseLeftTuple.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.reteoo.SubnetworkTuple doesn't override BaseLeftTuple.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.reteoo.TraitObjectTypeNode doesn't override ObjectTypeNode.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.reteoo.WindowTuple doesn't override RightTupleImpl.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.rule.AbductiveQuery doesn't override org.drools.core.definitions.rule.impl.RuleImpl.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.rule.QueryImpl doesn't override org.drools.core.definitions.rule.impl.RuleImpl.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.rule.XpathBackReference$RelativePattern doesn't override Pattern.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.time.impl.JDKTimerService$JDKJobHandle doesn't override DefaultJobHandle.equals(Object) |
Class doesn't override equals in superclass | Medium |
org.drools.core.util.TupleRBTree$Node doesn't override org.drools.core.util.index.TupleList.equals(Object) |
Load of known null value | Medium |
Load of known null value in org.drools.core.base.RuleNameSerializationAgendaFilter.objectEquals(Object, Object) |
Possible null pointer dereference due to return value of called method | Medium |
Possible null pointer dereference in org.drools.core.io.impl.ClassPathResource.listResources() due to return value of called method |
Possible null pointer dereference due to return value of called method | Medium |
Possible null pointer dereference in org.drools.core.io.impl.FileSystemResource.listResources() due to return value of called method |
Possible null pointer dereference due to return value of called method | Medium |
Possible null pointer dereference in org.drools.core.io.impl.UrlResource.listResources() due to return value of called method |
Load of known null value | Medium |
Load of known null value in org.drools.core.xml.jaxb.util.JaxbUnknownAdapter.getClass(String) |
Redundant nullcheck of value known to be non-null | Medium |
Redundant nullcheck of clz, which is known to be non-null in org.drools.core.base.ClassTypeResolver.getFullTypeName(String) |
Redundant nullcheck of value known to be null | Medium |
Redundant nullcheck of handle which is known to be null in org.drools.core.base.TraitHelper.getFactHandle(Object) |
Redundant nullcheck of value known to be null | Medium |
Redundant nullcheck of handle which is known to be null in org.drools.core.base.TraitHelper.lookupFactHandle(Object) |
Redundant nullcheck of value known to be non-null | Medium |
Redundant nullcheck of Class.getMethod(String, Class[]), which is known to be non-null in org.drools.core.factmodel.traits.TraitCoreWrapperClassBuilderImpl.needsMethod(Class, String, Class[]) |
Redundant nullcheck of value known to be non-null | Medium |
Redundant nullcheck of listenedProperties, which is known to be non-null in org.drools.core.reteoo.PropertySpecificUtil.calculatePatternMask(List, List, boolean) |
Redundant nullcheck of value known to be non-null | Medium |
Redundant nullcheck of conf, which is known to be non-null in org.drools.core.reteoo.ReteooFactHandleFactory.newFactHandle(int, Object, long, ObjectTypeConf, InternalWorkingMemory, InternalWorkingMemoryEntryPoint) |
Redundant nullcheck of value known to be non-null | Medium |
Redundant nullcheck of object, which is known to be non-null in org.drools.core.reteoo.RightTupleImpl.equals(Object) |
Redundant nullcheck of value known to be non-null | Medium |
Redundant nullcheck of classLoader, which is known to be non-null in org.drools.core.util.ConfFileUtils.getURL(String, ClassLoader, Class) |
Redundant nullcheck of value known to be non-null | Medium |
Redundant nullcheck of o, which is known to be non-null in org.drools.core.xml.jaxb.util.JaxbUnknownAdapter.recursiveMarshal(Object, Map) |
Exception is caught when Exception is not thrown | Medium |
Exception is caught when Exception is not thrown in org.drools.core.io.impl.ClassPathResource.listResources() |
Exception is caught when Exception is not thrown | Medium |
Exception is caught when Exception is not thrown in org.drools.core.io.impl.UrlResource.isDirectory() |
Exception is caught when Exception is not thrown | Medium |
Exception is caught when Exception is not thrown in org.drools.core.rule.builder.dialect.asm.ClassGenerator.generateClass() |
Exception is caught when Exception is not thrown | Medium |
Exception is caught when Exception is not thrown in org.drools.core.util.bitmask.OpenBitSet.<static initializer for OpenBitSet>() |
Exception is caught when Exception is not thrown | Medium |
Exception is caught when Exception is not thrown in org.drools.core.xml.ExtensibleXmlParser.resolveSchema(String, String) |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.audit.event.ActivationLogEvent.toString() where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.audit.event.ObjectLogEvent.toString() where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.audit.event.RuleBaseLogEvent.toString() where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.audit.event.RuleFlowGroupLogEvent.toString() where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.audit.event.RuleFlowLogEvent.toString() where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.common.EqualityKey.toString() where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.common.TupleSetsImpl.addDelete(Tuple) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.factmodel.DefaultBeanClassBuilder.buildClassAnnotations(ClassDefinition, ClassVisitor) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.factmodel.DefaultBeanClassBuilder.buildFieldAnnotations(FieldDefinition, FieldVisitor) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.marshalling.impl.ProtobufOutputMarshaller.writeNodeMemories(MarshallerWriteContext, ProtobufMessages$RuleData$Builder) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.PhreakAccumulateNode.doLeftDeletes(AccumulateNode, AccumulateNode$AccumulateMemory, InternalWorkingMemory, TupleSets, TupleSets, TupleSets) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.PhreakAccumulateNode.evaluateResultConstraints(AccumulateNode, LeftTupleSink, Accumulate, LeftTuple, PropagationContext, InternalWorkingMemory, AccumulateNode$AccumulateMemory, AccumulateNode$AccumulateContext, TupleSets, TupleSets) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.PhreakBranchNode.doLeftUpdates(ConditionalBranchNode, ConditionalBranchNode$ConditionalBranchMemory, LeftTupleSink, InternalWorkingMemory, TupleSets, TupleSets, TupleSets, RuleExecutor) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.PhreakEvalNode.doLeftUpdates(EvalConditionNode, EvalConditionNode$EvalMemory, LeftTupleSink, InternalWorkingMemory, TupleSets, TupleSets, TupleSets) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.PhreakTimerNode.doPropagateChildLeftTuple(LeftTupleSink, TupleSets, TupleSets, LeftTuple) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.RuleNetworkEvaluator.deleteChildLeftTuple(LeftTuple, TupleSets, TupleSets) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.RuleNetworkEvaluator.evalNode(PathMemory, NetworkNode, long, Memory, SegmentMemory[], int, InternalWorkingMemory, LinkedList, boolean, RuleExecutor, TupleSets, SegmentMemory, TupleSets, LeftTupleSinkNode) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(NetworkNode, TupleSets, InternalWorkingMemory, TupleSets, TupleSets, LeftTupleSinkNode, BetaMemory, AccumulateNode$AccumulateMemory) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.SegmentUtilities.createSegmentMemory(LeftTupleSource, InternalWorkingMemory) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.phreak.SegmentUtilities.updateNodeTypesMask(NetworkNode, int) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.reteoo.QueryElementNode$UnificationNodeViewChangedEventListener.rowRemoved(RuleImpl, LeftTuple, PropagationContext, InternalWorkingMemory) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.reteoo.QueryElementNode$UnificationNodeViewChangedEventListener.rowUpdated(RuleImpl, LeftTuple, PropagationContext, InternalWorkingMemory) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.rule.constraint.ASMConditionEvaluatorJitter$EvaluateMethodGenerator.jitAritmeticOperation(Class, ConditionAnalyzer$AritmeticOperator) where default case is missing |
Switch statement found where default case is missing | Medium |
Switch statement found in org.drools.core.util.StringUtils.codeAwareSplitOnChar(CharSequence, char) where default case is missing |
Write to static field from instance method | Medium |
Write to static field org.drools.core.phreak.RuleNetworkEvaluator.cycle from instance method org.drools.core.phreak.RuleNetworkEvaluator.innerEval(PathMemory, NetworkNode, long, Memory, SegmentMemory[], int, TupleSets, InternalWorkingMemory, LinkedList, boolean, RuleExecutor) |
Useless control flow | Medium |
Useless control flow in org.drools.core.base.TraitHelper.getFactHandleFromWM(Object) |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$BehaviorExpire$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$DeactivateCallback$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Expire$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Propagate$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$Signal$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$ActionQueue$SignalProcessInstance$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Agenda$AgendaGroup$NodeInstance$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Agenda$FocusStack$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Agenda$RuleFlowGroup$NodeInstance$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$FactHandle$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Header$StrategyIndex$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$KnowledgeBase$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$ObjectTypeConfiguration$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$ProcessData$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$RuntimeClassDef$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Signature$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Timers$BehaviorTimer$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Timers$ExpireTimer$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Trigger$CronTrigger$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Trigger$IntervalTrigger$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Trigger$PointInTimeTrigger$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Tuple$Builder.maybeForceBuilderInitialization() |
Useless control flow | Medium |
Useless control flow in org.drools.core.marshalling.impl.ProtobufMessages$Version$Builder.maybeForceBuilderInitialization() |
Unread public/protected field | Medium |
Unread public/protected field: org.drools.core.marshalling.impl.MarshallerReaderContext.parameterObject |
Unread public/protected field | Medium |
Unread public/protected field: org.drools.core.marshalling.impl.MarshallerWriteContext.parameterObject |
Unread public/protected field | Medium |
Unread public/protected field: org.drools.core.reteoo.QueryElementNode$UnificationNodeViewChangedEventListener.tupleMemoryEnabled |
Unread public/protected field | Medium |
Unread public/protected field: org.drools.core.runtime.help.impl.XStreamJSon$BaseConverter.reflectionProvider |
Unused public or protected field | Medium |
Unused public or protected field: org.drools.core.common.SharedWorkingMemoryContext.propagationIdCounter |
Unused public or protected field | Medium |
Unused public or protected field: org.drools.core.marshalling.impl.MarshallerReaderContext.kruntime |
Unwritten public or protected field | Medium |
Unwritten public or protected field: org.drools.core.factmodel.Fact.name |
Unwritten public or protected field | Medium |
Unwritten public or protected field: org.drools.core.factmodel.Field.name |
Unwritten public or protected field | Medium |
Unwritten public or protected field: org.drools.core.factmodel.Field.type |
Unwritten public or protected field | Medium |
Unwritten public or protected field: org.drools.core.metadata.ClassLiteral.propertyNames |
Unwritten public or protected field | Medium |
Unwritten public or protected field: org.drools.core.metadata.DonLiteral.setter |
Unwritten public or protected field | Medium |
Unwritten public or protected field: org.drools.core.metadata.MetadataContainer.metaClassInfo |
Unwritten public or protected field | Medium |
Unwritten public or protected field: org.drools.core.metadata.NewInstanceLiteral.setter |
This code contains a sequence of calls to a concurrent abstraction (such as a concurrent hash map). These calls will not be executed atomically.
The equals(Object o)
method shouldn't make any assumptions
about the type of o
. It should simply return
false if o
is not the same type as this
.
This cast will always throw a ClassCastException. FindBugs tracks type information from instanceof checks, and also uses more precise information about the types of values returned from methods and loaded from fields. Thus, it may have more precise information that just the declared type of a variable, and can use this to determine that a cast will always throw an exception at runtime.
This instanceof test will always return true (unless the value being tested is null). Although this is safe, make sure it isn't an indication of some misunderstanding or some other logic error. If you really want to test the value for being null, perhaps it would be clearer to do better to do a null test rather than an instanceof test.
This cast is unchecked, and not all instances of the type casted from can be cast to the type it is being cast to. Check that your program logic ensures that this cast will not fail.
A boxed value is unboxed and then immediately reboxed.
A boxed primitive is created from a String, just to extract the unboxed primitive value. It is more efficient to just call the static parseXXX method.
A boxed primitive is allocated just to call toString(). It is more effective to just use the static form of toString which takes the primitive value. So,
Replace... | With this... |
---|---|
new Integer(1).toString() | Integer.toString(1) |
new Long(1).toString() | Long.toString(1) |
new Float(1.0).toString() | Float.toString(1.0) |
new Double(1.0).toString() | Double.toString(1.0) |
new Byte(1).toString() | Byte.toString(1) |
new Short(1).toString() | Short.toString(1) |
new Boolean(true).toString() | Boolean.toString(true) |
Using new Integer(int)
is guaranteed to always result in a new object whereas
Integer.valueOf(int)
allows caching of values to be done by the compiler, class library, or JVM.
Using of cached values avoids object allocation and the code will be faster.
Values between -128 and 127 are guaranteed to have corresponding cached instances
and using valueOf
is approximately 3.5 times faster than using constructor.
For values outside the constant range the performance of both styles is the same.
Unless the class must be compatible with JVMs predating Java 1.5,
use either autoboxing or the valueOf()
method when creating instances of
Long
, Integer
, Short
, Character
, and Byte
.
This class defines a clone() method but the class doesn't implement Cloneable. There are some situations in which this is OK (e.g., you want to control how subclasses can clone themselves), but just make sure that this is what you intended.
This non-final class defines a clone() method that does not call super.clone(). If this class ("A") is extended by a subclass ("B"), and the subclass B calls super.clone(), then it is likely that B's clone() method will return an object of type A, which violates the standard contract for clone().
If all clone() methods call super.clone(), then they are guaranteed to use Object.clone(), which always returns an object of the correct type.
This method may contain an instance of double-checked locking. This idiom is not correct according to the semantics of the Java memory model. For more information, see the web page http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html.
This method might ignore an exception. In general, exceptions should be handled or reported in some way, or they should be thrown out of the method.
This instruction assigns a value to a local variable, but the value is not read or used in any subsequent instruction. Often, this indicates an error, because the value computed is never used.
Note that Sun's javac compiler often generates dead stores for final local variables. Because FindBugs is a bytecode-based tool, there is no easy way to eliminate these false positives.
This instruction assigns a value to a local variable, but the value is not read or used in any subsequent instruction. Often, this indicates an error, because the value computed is never used. There is a field with the same name as the local variable. Did you mean to assign to that variable instead?
Code explicitly invokes garbage collection. Except for specific use in benchmarking, this is very dubious.
In the past, situations where people have explicitly invoked the garbage collector in routines such as close or finalize methods has led to huge performance black holes. Garbage collection can be expensive. Any situation that forces hundreds or thousands of garbage collections will bring the machine to a crawl.
Creating new instances of java.lang.Boolean
wastes
memory, since Boolean
objects are immutable and there are
only two useful values of this type. Use the Boolean.valueOf()
method (or Java 1.5 autoboxing) to create Boolean
objects instead.
Found a call to a method which will perform a byte to String (or String to byte) conversion, and will assume that the default platform encoding is suitable. This will cause the application behaviour to vary between platforms. Use an alternative API and specify a charset name or Charset object explicitly.
The equals and hashCode
method of URL perform domain name resolution, this can result in a big performance hit.
See http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html for more information.
Consider using java.net.URI
instead.
This code seems to be passing a non-serializable object to the ObjectOutput.writeObject method. If the object is, indeed, non-serializable, an error will result.
This code creates a classloader, which needs permission if a security manage is installed. If this code might be invoked by code that does not have security permissions, then the classloader creation needs to occur inside a doPrivileged block.
Returning a reference to a mutable object value stored in one of the object's fields exposes the internal representation of the object. If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Returning a new copy of the object is better approach in many situations.
This code stores a reference to an externally mutable object into the internal representation of the object. If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Storing a copy of the object is better approach in many situations.
This class defines a compareTo(...)
method but inherits its
equals()
method from java.lang.Object
.
Generally, the value of compareTo should return zero if and only if
equals returns true. If this is violated, weird and unpredictable
failures will occur in classes such as PriorityQueue.
In Java 5 the PriorityQueue.remove method uses the compareTo method,
while in Java 6 it uses the equals method.
From the JavaDoc for the compareTo method in the Comparable interface:
It is strongly recommended, but not strictly required that (x.compareTo(y)==0) == (x.equals(y))
.
Generally speaking, any class that implements the Comparable interface and violates this condition
should clearly indicate this fact. The recommended language
is "Note: this class has a natural ordering that is inconsistent with equals."
This class extends a class that defines an equals method and adds fields, but doesn't define an equals method itself. Thus, equality on instances of this class will ignore the identity of the subclass and the added fields. Be sure this is what is intended, and that you don't need to override the equals method. Even if you don't need to override the equals method, consider overriding it anyway to document the fact that the equals method for the subclass just return the result of invoking super.equals(o).
This equals method is checking to see if the argument is some incompatible type (i.e., a class that is neither a supertype nor subtype of the class that defines the equals method). For example, the Foo class might have an equals method that looks like:
public boolean equals(Object o) { if (o instanceof Foo) return name.equals(((Foo)o).name); else if (o instanceof String) return name.equals(o); else return false;
This is considered bad practice, as it makes it very hard to implement an equals method that is symmetric and transitive. Without those properties, very unexpected behavoirs are possible.
This class has an equals method that will be broken if it is inherited by subclasses.
It compares a class literal with the class of the argument (e.g., in class Foo
it might check if Foo.class == o.getClass()
).
It is better to check if this.getClass() == o.getClass()
.
This class defines an equals method that overrides an equals method in a superclass. Both equals methods
methods use instanceof
in the determination of whether two objects are equal. This is fraught with peril,
since it is important that the equals method is symmetrical (in other words, a.equals(b) == b.equals(a)
).
If B is a subtype of A, and A's equals method checks that the argument is an instanceof A, and B's equals method
checks that the argument is an instanceof B, it is quite likely that the equivalence relation defined by these
methods is not symmetric.
This class doesn't do any of the patterns we recognize for checking that the type of the argument
is compatible with the type of the this
object. There might not be anything wrong with
this code, but it is worth reviewing.
This class overrides equals(Object)
, but does not
override hashCode()
, and inherits the implementation of
hashCode()
from java.lang.Object
(which returns
the identity hash code, an arbitrary value assigned to the object
by the VM). Therefore, the class is very likely to violate the
invariant that equal objects must have equal hashcodes.
If you don't think instances of this class will ever be inserted into a HashMap/HashTable,
the recommended hashCode
implementation to use is:
public int hashCode() { assert false : "hashCode not designed"; return 42; // any arbitrary constant will do }
This class inherits equals(Object)
from an abstract
superclass, and hashCode()
from
java.lang.Object
(which returns
the identity hash code, an arbitrary value assigned to the object
by the VM). Therefore, the class is very likely to violate the
invariant that equal objects must have equal hashcodes.
If you don't want to define a hashCode method, and/or don't
believe the object will ever be put into a HashMap/Hashtable,
define the hashCode()
method
to throw UnsupportedOperationException
.
This method unconditionally invokes itself. This would seem to indicate an infinite recursive loop that will result in a stack overflow.
The fields of this class appear to be accessed inconsistently with respect to synchronization. This bug report indicates that the bug pattern detector judged that
A typical bug matching this bug pattern is forgetting to synchronize one of the methods in a class that is intended to be thread-safe.
You can select the nodes labeled "Unsynchronized access" to show the code locations where the detector believed that a field was accessed without synchronization.
Note that there are various sources of inaccuracy in this detector; for example, the detector cannot statically detect all situations in which a lock is held. Also, even when the detector is accurate in distinguishing locked vs. unlocked accesses, the code in question may still be correct.
This method performs synchronization an object that is an instance of
a class from the java.util.concurrent package (or its subclasses). Instances
of these classes have their own concurrency control mechanisms that are orthogonal to
the synchronization provided by the Java keyword synchronized
. For example,
synchronizing on an AtomicBoolean
will not prevent other threads
from modifying the AtomicBoolean
.
Such code may be correct, but should be carefully reviewed and documented, and may confuse people who have to maintain the code at a later date.
A mutable collection instance is assigned to a final static field, thus can be changed by malicious code or by accident from another package. The field could be made package protected to avoid this vulnerability. Alternatively you may wrap this field into Collections.unmodifiableSet/List/Map/etc. to avoid this vulnerability.
This static field public but not final, and could be changed by malicious code or by accident from another package. The field could be made final to avoid this vulnerability.
A mutable static field could be changed by malicious code or by accident. The field could be made package protected to avoid this vulnerability.
This class/interface has a simple name that is identical to that of an implemented/extended interface, except
that the interface is in a different package (e.g., alpha.Foo
extends beta.Foo
).
This can be exceptionally confusing, create lots of situations in which you have to look at import statements
to resolve references and creates many
opportunities to accidentally define methods that do not override methods in their superclasses.
This class has a simple name that is identical to that of its superclass, except
that its superclass is in a different package (e.g., alpha.Foo
extends beta.Foo
).
This can be exceptionally confusing, create lots of situations in which you have to look at import statements
to resolve references and creates many
opportunities to accidentally define methods that do not override methods in their superclasses.
Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.
A call to notify()
or notifyAll()
was made without any (apparent) accompanying
modification to mutable object state. In general, calling a notify
method on a monitor is done because some condition another thread is
waiting for has become true. However, for the condition to be meaningful,
it must involve a heap object that is visible to both threads.
This bug does not necessarily indicate an error, since the change to mutable object state may have taken place in a method which then called the method containing the notification.
This implementation of equals(Object) violates the contract defined by java.lang.Object.equals() because it does not check for null being passed as the argument. All equals() methods should return false if passed a null value.
The variable referenced at this point is known to be null due to an earlier check against null. Although this is valid, it might be a mistake (perhaps you intended to refer to a different variable, or perhaps the earlier check to see if the variable is null should have been a check to see if it was non-null).
This method call passes a null value for a non-null method parameter. Either the parameter is annotated as a parameter that should always be non-null, or analysis has shown that it will always be dereferenced.
There is a branch of statement that, if executed, guarantees that
a null value will be dereferenced, which
would generate a NullPointerException
when the code is executed.
Of course, the problem might be that the branch or statement is infeasible and that
the null pointer exception can't ever be executed; deciding that is beyond the ability of FindBugs.
The return value from a method is dereferenced without a null check,
and the return value of that method is one that should generally be checked
for null. This may lead to a NullPointerException
when the code is executed.
A reference value which is null on some exception control path is
dereferenced here. This may lead to a NullPointerException
when the code is executed.
Note that because FindBugs currently does not prune infeasible exception paths,
this may be a false warning.
Also note that FindBugs considers the default case of a switch statement to be an exception path, since the default case is often infeasible.
The program is dereferencing a field that does not seem to ever have a non-null value written to it. Unless the field is initialized via some mechanism not seen by the analysis, dereferencing this value will generate a null pointer exception.
There is a statement or branch on an exception path that if executed guarantees that a value is null at this point, and that value that is guaranteed to be dereferenced (except on forward paths involving runtime exceptions).
This method may fail to clean up (close, dispose of) a stream, database object, or other resource requiring an explicit cleanup operation.
In general, if a method opens a stream or other resource, the method should use a try/finally block to ensure that the stream or resource is cleaned up before the method returns.
This bug pattern is essentially the same as the OS_OPEN_STREAM and ODR_OPEN_DATABASE_RESOURCE bug patterns, but is based on a different (and hopefully better) static analysis technique. We are interested is getting feedback about the usefulness of this bug pattern. To send feedback, either:
In particular, the false-positive suppression heuristics for this bug pattern have not been extensively tuned, so reports about false positives are helpful to us.
See Weimer and Necula, Finding and Preventing Run-Time Error Handling Mistakes, for a description of the analysis technique.
This method compares two Boolean values using the == or != operator.
Normally, there are only two Boolean values (Boolean.TRUE and Boolean.FALSE),
but it is possible to create other Boolean objects using the new Boolean(b)
constructor. It is best to avoid such objects, but if they do exist,
then checking Boolean objects for equality using == or != will give results
than are different than you would get using .equals(...)
A value is checked here to see whether it is null, but this value can't be null because it was previously dereferenced and if it were null a null pointer exception would have occurred at the earlier dereference. Essentially, this code and the previous dereference disagree as to whether this value is allowed to be null. Either the check is redundant or the previous dereference is erroneous.
This method contains a redundant check of a known non-null value against the constant null.
This method contains a redundant check of a known null value against the constant null.
This method uses a try-catch block that catches Exception objects, but Exception is not thrown within the try block, and RuntimeException is not explicitly caught. It is a common bug pattern to say try { ... } catch (Exception e) { something } as a shorthand for catching a number of types of exception each of whose catch blocks is identical, but this construct also accidentally catches RuntimeException as well, masking potential bugs.
A better approach is to either explicitly catch the specific exceptions that are thrown, or to explicitly catch RuntimeException exception, rethrow it, and then catch all non-Runtime Exceptions, as shown below:
try { ... } catch (RuntimeException e) { throw e; } catch (Exception e) { ... deal with all non-runtime exceptions ... }
This code generates a hashcode and then computes
the absolute value of that hashcode. If the hashcode
is Integer.MIN_VALUE
, then the result will be negative as well (since
Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE
).
One out of 2^32 strings have a hashCode of Integer.MIN_VALUE, including "polygenelubricants" "GydZG_" and ""DESIGNING WORKHOUSES".
This code invoked a compareTo or compare method, and checks to see if the return value is a specific value, such as 1 or -1. When invoking these methods, you should only check the sign of the result, not for any specific non-zero value. While many or most compareTo and compare methods only return -1, 0 or 1, some of them will return other values.
This method returns a value that is not checked. The return value should be checked
since it can indicate an unusual or unexpected function execution. For
example, the File.delete()
method returns false
if the file could not be successfully deleted (rather than
throwing an Exception).
If you don't check the result, you won't notice if the method invocation
signals unexpected behavior by returning an atypical return value.
The method seems to be building a String using concatenation in a loop. In each iteration, the String is converted to a StringBuffer/StringBuilder, appended to, and converted back to a String. This can lead to a cost quadratic in the number of iterations, as the growing string is recopied in each iteration.
Better performance can be obtained by using a StringBuffer (or StringBuilder in Java 1.5) explicitly.
For example:
// This is bad String s = ""; for (int i = 0; i < field.length; ++i) { s = s + field[i]; } // This is better StringBuffer buf = new StringBuffer(); for (int i = 0; i < field.length; ++i) { buf.append(field[i]); } String s = buf.toString();
This class implements the Externalizable
interface, but does
not define a void constructor. When Externalizable objects are deserialized,
they first need to be constructed by invoking the void
constructor. Since this class does not have one,
serialization and deserialization will fail at runtime.
This class implements the Comparator
interface. You
should consider whether or not it should also implement the Serializable
interface. If a comparator is used to construct an ordered collection
such as a TreeMap
, then the TreeMap
will be serializable only if the comparator is also serializable.
As most comparators have little or no state, making them serializable
is generally easy and good defensive programming.
A non-serializable value is stored into a non-transient field of a serializable class.
This Serializable class defines a non-primitive instance field which is neither transient,
Serializable, or java.lang.Object
, and does not appear to implement
the Externalizable
interface or the
readObject()
and writeObject()
methods.
Objects of this class will not be deserialized correctly if a non-Serializable
object is stored in this field.
This class defines a private readResolve method. Since it is private, it won't be inherited by subclasses. This might be intentional and OK, but should be reviewed to ensure it is what is intended.
This Serializable class is an inner class. Any attempt to serialize it will also serialize the associated outer instance. The outer instance is serializable, so this won't fail, but it might serialize a lot more data than intended. If possible, making the inner class a static inner class (also known as a nested class) should solve the problem.
This class contains a field that is updated at multiple places in the class, thus it seems to be part of the state of the class. However, since the field is marked as transient and not set in readObject or readResolve, it will contain the default value in any deserialized instance of the class.
This method contains a switch statement where default case is missing. Usually you need to provide a default case.
Because the analysis only looks at the generated bytecode, this warning can be incorrect triggered if the default case is at the end of the switch statement and the switch statement doesn't contain break statements for other cases.
This class is an inner class, but does not use its embedded reference to the object which created it. This reference makes the instances of the class larger, and may keep the reference to the creator object alive longer than necessary. If possible, the class should be made static.
This class implements the Serializable
interface, but does
not define a serialVersionUID
field.
A change as simple as adding a reference to a .class object
will add synthetic fields to the class,
which will unfortunately change the implicit
serialVersionUID (e.g., adding a reference to String.class
will generate a static field class$java$lang$String
).
Also, different source code to bytecode compilers may use different
naming conventions for synthetic variables generated for
references to class objects or inner classes.
To ensure interoperability of Serializable across versions,
consider adding an explicit serialVersionUID.
This instance method writes to a static field. This is tricky to get correct if multiple instances are being manipulated, and generally bad practice.
This condition always produces the same result as the value of the involved variable was narrowed before. Probably something else was meant or condition can be removed.
This method contains a useless control flow statement, where
control flow continues onto the same place regardless of whether or not
the branch is taken. For example,
this is caused by having an empty statement
block for an if
statement:
if (argv.length == 0) { // TODO: handle this case }
This method acquires a JSR-166 (java.util.concurrent
) lock,
but does not release it on all exception paths out of the method. In general, the correct idiom
for using a JSR-166 lock is:
Lock l = ...; l.lock(); try { // do something } finally { l.unlock(); }
This anonymous class defined a method that is not directly invoked and does not override a method in a superclass. Since methods in other classes cannot directly invoke methods declared in an anonymous class, it seems that this method is uncallable. The method might simply be dead code, but it is also possible that the method is intended to override a method declared in a superclass, and due to an typo or other error the method does not, in fact, override the method it is intended to.
This private method is never called. Although it is possible that the method will be invoked through reflection, it is more likely that the method is never used, and should be removed.
This constructor reads a field which has not yet been assigned a value. This is often caused when the programmer mistakenly uses the field instead of one of the constructor's parameters.
This field is never read. Consider removing it from the class.
This field is never read. The field is public or protected, so perhaps it is intended to be used with classes not seen as part of the analysis. If not, consider removing it from the class.
This field is never used. Consider removing it from the class.
This field is never used. The field is public or protected, so perhaps it is intended to be used with classes not seen as part of the analysis. If not, consider removing it from the class.
All writes to this field are of the constant value null, and thus all reads of the field will return null. Check for errors, or remove it if it is useless.
This field is never written. All reads of it will return the default value. Check for errors (should it have been initialized?), or remove it if it is useless.
No writes were seen to this public/protected field. All reads of it will return the default value. Check for errors (should it have been initialized?), or remove it if it is useless.
This code increments a volatile field. Increments of volatile fields aren't atomic. If more than one thread is incrementing the field at the same time, increments could be lost.
This method contains a call to java.lang.Object.wait()
which is not in a loop. If the monitor is used for multiple conditions,
the condition the caller intended to wait for might not be the one
that actually occurred.
This method accesses the value of a Map entry, using a key that was retrieved from a keySet iterator. It is more efficient to use an iterator on the entrySet of the map, to avoid the Map.get(key) lookup.