SpotBugs Bug Detector Report
The following document contains the results of SpotBugs
SpotBugs Version is 4.2.3
Threshold is medium
Effort is default
Summary
Classes |
Bugs |
Errors |
Missing Classes |
94 |
40 |
0 |
0 |
com.foxinmy.weixin4j.base64.BaseNCodec
Bug |
Category |
Details |
Line |
Priority |
Unread field: com.foxinmy.weixin4j.base64.BaseNCodec.PAD; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
171 |
Medium |
com.foxinmy.weixin4j.dispatcher.MessageHandlerExecutor
Bug |
Category |
Details |
Line |
Priority |
new com.foxinmy.weixin4j.dispatcher.MessageHandlerExecutor(ChannelHandlerContext, WeixinMessageHandler, WeixinMessageInterceptor[]) may expose internal representation by storing an externally mutable object into MessageHandlerExecutor.messageInterceptors |
MALICIOUS_CODE |
EI_EXPOSE_REP2 |
48 |
Medium |
com.foxinmy.weixin4j.dispatcher.WeixinMessageDispatcher
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.dispatcher.WeixinMessageDispatcher.getMessageHandlerPackages() may expose internal representation by returning WeixinMessageDispatcher.messageHandlerPackages |
MALICIOUS_CODE |
EI_EXPOSE_REP |
388 |
Medium |
com.foxinmy.weixin4j.dispatcher.WeixinMessageDispatcher.getMessageHandlers() may expose internal representation by returning WeixinMessageDispatcher.messageHandlers |
MALICIOUS_CODE |
EI_EXPOSE_REP |
272 |
Medium |
com.foxinmy.weixin4j.dispatcher.WeixinMessageDispatcher.getMessageInterceptorPackages() may expose internal representation by returning WeixinMessageDispatcher.messageInterceptorPackages |
MALICIOUS_CODE |
EI_EXPOSE_REP |
392 |
Medium |
com.foxinmy.weixin4j.dispatcher.WeixinMessageDispatcher.getMessageInterceptors() may expose internal representation by returning WeixinMessageDispatcher.messageInterceptors |
MALICIOUS_CODE |
EI_EXPOSE_REP |
333 |
Medium |
com.foxinmy.weixin4j.message.ImageMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.ImageMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.LinkMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.LinkMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.LocationMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.LocationMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.TextMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.TextMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.VideoMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.VideoMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.VoiceMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.VoiceMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.event.EventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.event.EventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.event.LocationEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.event.LocationEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.event.MenuEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.event.MenuEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.event.MenuLocationEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.event.MenuLocationEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.event.MenuPhotoEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.event.MenuPhotoEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.message.event.MenuScanEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.message.event.MenuScanEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.mp.event.KfCloseEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.mp.event.KfCloseEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.mp.event.KfCreateEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.mp.event.KfCreateEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.mp.event.KfSwitchEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.mp.event.KfSwitchEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.mp.event.MassEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.mp.event.MassEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.mp.event.ScanEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.mp.event.ScanEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.mp.event.TemplatesendjobfinishMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.mp.event.TemplatesendjobfinishMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.mp.event.VerifyExpireEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.mp.event.VerifyExpireEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.mp.event.VerifyFailEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.mp.event.VerifyFailEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.qy.chat.ChatItem
Bug |
Category |
Details |
Line |
Priority |
Unread field: com.foxinmy.weixin4j.qy.chat.ChatItem.LIST_SEPARATOR; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
26 |
Medium |
com.foxinmy.weixin4j.qy.event.BatchjobresultMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.qy.event.BatchjobresultMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.qy.event.EnterAgentEventMessage
Bug |
Category |
Details |
Line |
Priority |
com.foxinmy.weixin4j.qy.event.EnterAgentEventMessage doesn't override com.foxinmy.weixin4j.request.WeixinMessage.equals(Object) |
STYLE |
EQ_DOESNT_OVERRIDE_EQUALS |
1 |
Medium |
com.foxinmy.weixin4j.socket.WeixinResponseEncoder
Bug |
Category |
Details |
Line |
Priority |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.ELEMENT_CREATETIME; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
38 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.ELEMENT_ENCRYPT; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
42 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.ELEMENT_FROMUSERNAME; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
37 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.ELEMENT_MSGSIGNATURE; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
41 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.ELEMENT_MSGTYPE; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
39 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.ELEMENT_NONCE; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
44 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.ELEMENT_TIMESTAMP; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
43 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.ELEMENT_TOUSERNAME; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
36 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.XML_END; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
45 |
Medium |
Unread field: com.foxinmy.weixin4j.socket.WeixinResponseEncoder.XML_START; should this field be static? |
PERFORMANCE |
SS_SHOULD_BE_STATIC |
34 |
Medium |
com.foxinmy.weixin4j.util.ServerToolkits
Bug |
Category |
Details |
Line |
Priority |
Random object created and used only once in com.foxinmy.weixin4j.util.ServerToolkits.generateRandomString(int) |
BAD_PRACTICE |
DMI_RANDOM_USED_ONLY_ONCE |
47 |
High |