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 |