From 9d5c88604547659e7e217602d5111528fd47a9f5 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 12 Jul 2014 14:01:06 +1000 Subject: [PATCH] Fix some more static analysis warnings --- pom.xml | 6 ++++++ .../main/java/net/md_5/bungee/BungeeCord.java | 9 +++++++-- .../java/net/md_5/bungee/EncryptionUtil.java | 2 +- .../java/net/md_5/bungee/UserConnection.java | 9 +++++++-- .../java/net/md_5/bungee/conf/YamlConfig.java | 14 +++++++++---- .../bungee/connection/DownstreamBridge.java | 4 ++++ .../md_5/bungee/connection/PingHandler.java | 2 ++ .../net/md_5/bungee/entitymap/EntityMap.java | 2 ++ .../bungee/entitymap/EntityMap_14_11_a.java | 6 +++++- .../bungee/entitymap/EntityMap_1_7_6.java | 6 ++---- .../net/md_5/bungee/log/BungeeLogger.java | 8 +++++--- .../md_5/bungee/log/LoggingOutputStream.java | 3 ++- .../net/md_5/bungee/module/ModuleManager.java | 6 ++++++ .../net/md_5/bungee/netty/PipelineUtils.java | 20 +++++++++---------- .../main/java/net/md_5/bungee/tab/Custom.java | 3 --- 15 files changed, 69 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index 3b77c86a..1c051a90 100644 --- a/pom.xml +++ b/pom.xml @@ -87,6 +87,12 @@ 3.0.3 compile + + com.google.code.findbugs + findbugs + 3.0.0 + provided + org.projectlombok lombok diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java index 5a258046..cdbd5b33 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -1,5 +1,6 @@ package net.md_5.bungee; +import com.google.common.base.Charsets; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; @@ -16,6 +17,7 @@ import net.md_5.bungee.log.BungeeLogger; import net.md_5.bungee.scheduler.BungeeScheduler; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.gson.Gson; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelException; @@ -157,6 +159,7 @@ public class BungeeCord extends ProxyServer return (BungeeCord) ProxyServer.getInstance(); } + @SuppressFBWarnings("DM_DEFAULT_ENCODING") public BungeeCord() throws IOException { System.setSecurityManager( new BungeeSecurityManager() ); @@ -200,6 +203,7 @@ public class BungeeCord extends ProxyServer * @throws Exception */ @Override + @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE") public void start() throws Exception { System.setProperty( "java.net.preferIPv4Stack", "true" ); // Minecraft does not support IPv6 @@ -311,6 +315,7 @@ public class BungeeCord extends ProxyServer new Thread( "Shutdown Thread" ) { @Override + @SuppressFBWarnings("DM_EXIT") @SuppressWarnings("TooBroadCatch") public void run() { @@ -514,7 +519,7 @@ public class BungeeCord extends ProxyServer public PluginMessage registerChannels() { - return new PluginMessage( "REGISTER", Util.format( pluginChannels, "\00" ).getBytes() ); + return new PluginMessage( "REGISTER", Util.format( pluginChannels, "\00" ).getBytes( Charsets.UTF_8 ) ); } @Override @@ -614,7 +619,7 @@ public class BungeeCord extends ProxyServer @Override public boolean apply(ProxiedPlayer input) { - return input.getName().toLowerCase().contains( partialName.toLowerCase() ); + return ( input == null ) ? false : input.getName().toLowerCase().contains( partialName.toLowerCase() ); } } ) ); } diff --git a/proxy/src/main/java/net/md_5/bungee/EncryptionUtil.java b/proxy/src/main/java/net/md_5/bungee/EncryptionUtil.java index 50520b46..2a5ebecf 100644 --- a/proxy/src/main/java/net/md_5/bungee/EncryptionUtil.java +++ b/proxy/src/main/java/net/md_5/bungee/EncryptionUtil.java @@ -24,7 +24,7 @@ public class EncryptionUtil { private static final Random random = new Random(); - public static KeyPair keys; + public static final KeyPair keys; @Getter private static final SecretKey secret = new SecretKeySpec( new byte[ 16 ], "AES" ); diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index 62697e3a..6f0a3297 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -96,7 +96,6 @@ public final class UserConnection implements ProxiedPlayer @Setter private int serverEntityId; @Getter - @Setter private ClientSettings settings; @Getter private final Scoreboard serverSentScoreboard = new Scoreboard(); @@ -435,9 +434,15 @@ public final class UserConnection implements ProxiedPlayer return getPendingConnection().getUniqueId(); } + public void setSettings(ClientSettings settings) + { + this.settings = settings; + this.locale = null; + } + @Override public Locale getLocale() { - return ( locale == null ) ? locale = Locale.forLanguageTag( settings.getLocale() ) : locale; + return ( locale == null && settings != null ) ? locale = Locale.forLanguageTag( settings.getLocale() ) : locale; } } diff --git a/proxy/src/main/java/net/md_5/bungee/conf/YamlConfig.java b/proxy/src/main/java/net/md_5/bungee/conf/YamlConfig.java index fca930f6..071cddf0 100644 --- a/proxy/src/main/java/net/md_5/bungee/conf/YamlConfig.java +++ b/proxy/src/main/java/net/md_5/bungee/conf/YamlConfig.java @@ -1,5 +1,6 @@ package net.md_5.bungee.conf; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; @@ -42,19 +43,23 @@ public class YamlConfig implements ConfigurationAdapter GLOBAL( Global.class ), GLOBAL_PING( GlobalPing.class ), SERVER( ServerUnique.class ); private final Class clazz; } - private Yaml yaml; + private final Yaml yaml; private Map config; private final File file = new File( "config.yml" ); + public YamlConfig() + { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle( DumperOptions.FlowStyle.BLOCK ); + yaml = new Yaml( options ); + } + @Override public void load() { try { file.createNewFile(); - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle( DumperOptions.FlowStyle.BLOCK ); - yaml = new Yaml( options ); try ( InputStream is = new FileInputStream( file ) ) { @@ -182,6 +187,7 @@ public class YamlConfig implements ConfigurationAdapter @Override @SuppressWarnings("unchecked") + @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") public Collection getListeners() { Collection> base = get( "listeners", (Collection) Arrays.asList( new Map[] diff --git a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java index fcd6c4eb..9c2a0705 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/DownstreamBridge.java @@ -118,6 +118,8 @@ public class DownstreamBridge extends PacketHandler case 1: serverScoreboard.removeObjective( objective.getName() ); break; + default: + throw new IllegalArgumentException( "Unknown objective action: " + objective.getAction() ); } } @@ -135,6 +137,8 @@ public class DownstreamBridge extends PacketHandler case 1: serverScoreboard.removeScore( score.getItemName() ); break; + default: + throw new IllegalArgumentException( "Unknown scoreboard action: " + score.getAction() ); } } diff --git a/proxy/src/main/java/net/md_5/bungee/connection/PingHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/PingHandler.java index ad868828..ba3260f3 100644 --- a/proxy/src/main/java/net/md_5/bungee/connection/PingHandler.java +++ b/proxy/src/main/java/net/md_5/bungee/connection/PingHandler.java @@ -1,6 +1,7 @@ package net.md_5.bungee.connection; import com.google.gson.Gson; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import lombok.RequiredArgsConstructor; import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.Callback; @@ -49,6 +50,7 @@ public class PingHandler extends PacketHandler } @Override + @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") public void handle(StatusResponse statusResponse) throws Exception { Gson gson = protocol == ProtocolConstants.MINECRAFT_1_7_2 ? BungeeCord.getInstance().gsonLegacy : BungeeCord.getInstance().gson; diff --git a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java index 38e67077..978624d8 100644 --- a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java +++ b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java @@ -1,5 +1,6 @@ package net.md_5.bungee.entitymap; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import io.netty.buffer.ByteBuf; import net.md_5.bungee.protocol.DefinedPacket; import net.md_5.bungee.protocol.ProtocolConstants; @@ -80,6 +81,7 @@ public abstract class EntityMap } } + @SuppressFBWarnings("DLS_DEAD_LOCAL_STORE") protected static void rewriteVarInt(ByteBuf packet, int oldId, int newId, int offset) { // Need to rewrite the packet because VarInts are variable length diff --git a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_14_11_a.java b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_14_11_a.java index 0924a8e0..da23d62b 100644 --- a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_14_11_a.java +++ b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_14_11_a.java @@ -1,5 +1,6 @@ package net.md_5.bungee.entitymap; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import io.netty.buffer.ByteBuf; import net.md_5.bungee.BungeeCord; import net.md_5.bungee.UserConnection; @@ -9,6 +10,7 @@ import net.md_5.bungee.protocol.ProtocolConstants; class EntityMap_14_11_a extends EntityMap { + EntityMap_14_11_a() { addRewrite( 0x04, ProtocolConstants.Direction.TO_CLIENT, true ); // Entity Equipment @@ -42,6 +44,7 @@ class EntityMap_14_11_a extends EntityMap } @Override + @SuppressFBWarnings("DLS_DEAD_LOCAL_STORE") public void rewriteClientbound(ByteBuf packet, int oldId, int newId) { super.rewriteClientbound( packet, oldId, newId ); @@ -153,7 +156,8 @@ class EntityMap_14_11_a extends EntityMap { DefinedPacket.readVarInt( packet ); rewriteInt( packet, oldId, newId, packet.readerIndex() ); - } else if ( event == 2 /* Entity Dead */ ) { + } else if ( event == 2 /* Entity Dead */ ) + { int position = packet.readerIndex(); rewriteVarInt( packet, oldId, newId, packet.readerIndex() ); packet.readerIndex( position ); diff --git a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_1_7_6.java b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_1_7_6.java index 99b0ea20..1a765c84 100644 --- a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_1_7_6.java +++ b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_1_7_6.java @@ -1,5 +1,6 @@ package net.md_5.bungee.entitymap; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import io.netty.buffer.ByteBuf; import net.md_5.bungee.BungeeCord; import net.md_5.bungee.UserConnection; @@ -8,12 +9,9 @@ import net.md_5.bungee.protocol.DefinedPacket; class EntityMap_1_7_6 extends EntityMap_1_7_2 { - EntityMap_1_7_6() - { - super(); - } @Override + @SuppressFBWarnings("DLS_DEAD_LOCAL_STORE") public void rewriteClientbound(ByteBuf packet, int oldId, int newId) { super.rewriteClientbound( packet, oldId, newId ); diff --git a/proxy/src/main/java/net/md_5/bungee/log/BungeeLogger.java b/proxy/src/main/java/net/md_5/bungee/log/BungeeLogger.java index 90b4c01c..94e924b6 100644 --- a/proxy/src/main/java/net/md_5/bungee/log/BungeeLogger.java +++ b/proxy/src/main/java/net/md_5/bungee/log/BungeeLogger.java @@ -1,5 +1,6 @@ package net.md_5.bungee.log; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.logging.FileHandler; import java.util.logging.Formatter; @@ -15,9 +16,10 @@ public class BungeeLogger extends Logger private final LogDispatcher dispatcher = new LogDispatcher( this ); @SuppressWarnings( - { - "CallToPrintStackTrace", "CallToThreadStartDuringObjectConstruction" - }) + { + "CallToPrintStackTrace", "CallToThreadStartDuringObjectConstruction" + }) + @SuppressFBWarnings("SC_START_IN_CTOR") public BungeeLogger(BungeeCord bungee) { super( "BungeeCord", null ); diff --git a/proxy/src/main/java/net/md_5/bungee/log/LoggingOutputStream.java b/proxy/src/main/java/net/md_5/bungee/log/LoggingOutputStream.java index f78298cd..2b1ab9c0 100644 --- a/proxy/src/main/java/net/md_5/bungee/log/LoggingOutputStream.java +++ b/proxy/src/main/java/net/md_5/bungee/log/LoggingOutputStream.java @@ -1,5 +1,6 @@ package net.md_5.bungee.log; +import com.google.common.base.Charsets; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.logging.Level; @@ -18,7 +19,7 @@ public class LoggingOutputStream extends ByteArrayOutputStream @Override public void flush() throws IOException { - String contents = toString(); + String contents = toString( Charsets.UTF_8.name() ); super.reset(); if ( !contents.isEmpty() && !contents.equals( separator ) ) { diff --git a/proxy/src/main/java/net/md_5/bungee/module/ModuleManager.java b/proxy/src/main/java/net/md_5/bungee/module/ModuleManager.java index b1799cb2..901fc5a3 100644 --- a/proxy/src/main/java/net/md_5/bungee/module/ModuleManager.java +++ b/proxy/src/main/java/net/md_5/bungee/module/ModuleManager.java @@ -1,6 +1,7 @@ package net.md_5.bungee.module; import com.google.common.base.Preconditions; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; @@ -30,6 +31,10 @@ public class ModuleManager knownSources.put( "jenkins", new JenkinsModuleSource() ); } + @SuppressFBWarnings( + { + "SF_SWITCH_FALLTHROUGH", "SF_SWITCH_NO_DEFAULT" + }) public void load(ProxyServer proxy, File moduleDirectory) throws Exception { moduleDirectory.mkdir(); @@ -125,6 +130,7 @@ public class ModuleManager } } + @SuppressFBWarnings("REC_CATCH_EXCEPTION") private ModuleVersion getVersion(File file) { try ( JarFile jar = new JarFile( file ) ) diff --git a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java index 57f98a45..8b57225b 100644 --- a/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java +++ b/proxy/src/main/java/net/md_5/bungee/netty/PipelineUtils.java @@ -65,16 +65,16 @@ public class PipelineUtils }; public static final Base BASE = new Base(); private static final Varint21LengthFieldPrepender framePrepender = new Varint21LengthFieldPrepender(); - public static String TIMEOUT_HANDLER = "timeout"; - public static String PACKET_DECODER = "packet-decoder"; - public static String PACKET_ENCODER = "packet-encoder"; - public static String BOSS_HANDLER = "inbound-boss"; - public static String ENCRYPT_HANDLER = "encrypt"; - public static String DECRYPT_HANDLER = "decrypt"; - public static String FRAME_DECODER = "frame-decoder"; - public static String FRAME_PREPENDER = "frame-prepender"; - public static String LEGACY_DECODER = "legacy-decoder"; - public static String LEGACY_KICKER = "legacy-kick"; + public static final String TIMEOUT_HANDLER = "timeout"; + public static final String PACKET_DECODER = "packet-decoder"; + public static final String PACKET_ENCODER = "packet-encoder"; + public static final String BOSS_HANDLER = "inbound-boss"; + public static final String ENCRYPT_HANDLER = "encrypt"; + public static final String DECRYPT_HANDLER = "decrypt"; + public static final String FRAME_DECODER = "frame-decoder"; + public static final String FRAME_PREPENDER = "frame-prepender"; + public static final String LEGACY_DECODER = "legacy-decoder"; + public static final String LEGACY_KICKER = "legacy-kick"; private static boolean epoll; diff --git a/proxy/src/main/java/net/md_5/bungee/tab/Custom.java b/proxy/src/main/java/net/md_5/bungee/tab/Custom.java index e90b71f9..40dbd649 100644 --- a/proxy/src/main/java/net/md_5/bungee/tab/Custom.java +++ b/proxy/src/main/java/net/md_5/bungee/tab/Custom.java @@ -56,9 +56,6 @@ public class Custom extends TabListAdapter implements CustomTabList rowLim = row; colLim = column; } - } else - { - sentStuff.remove( text ); } slots[--row][--column] = text;