Warnung : Dead Code. Aber wieso?

Hallo liebe Community ,

Ich habe mich vor kurzer zeit etwas in Java rein gearbeitet , mit vorkenntnis von PHP.

Leider ist mir jetzt ein Fehler aufgetretten wo ich beim besten willen nicht weiss und auch nicht ganz hinter komme wieso dieser auftritt.

Es steht das der Fehler bzw die Warning durch ungenutzte Variablen kommt. Doch benutze ich diese doch schliesslich.

Der Fehler soll hier sein :
Java:
			else
			{
				totalReloads = 1;
			}

Hier der gesamte aufruf :
Java:
		if (event.equalsIgnoreCase("mobReloads"))
		{
			int totalReloads = 0;
			if ((_mobReload*2) < _runInterval)
			{
				totalReloads = _runInterval/_mobReload;
			}
			else
			{
				totalReloads = 1;
			}
			clearAllAreas();
			if (_round == "PIGS")
			{
				SpawnMobs(_spawnZoneOne,_pigsOne,1);
				SpawnMobs(_spawnZoneTwo,_pigsTwo,2);
				SpawnMobs(_spawnZoneThr,_pigsThr,3);
				SpawnMobs(_spawnZoneFou,_pigsFou,4);
			}
			else
			{
				SpawnMobs(_spawnZoneOne,_catsOne,1);
				SpawnMobs(_spawnZoneTwo,_catsTwo,2);
				SpawnMobs(_spawnZoneThr,_catsThr,3);
				SpawnMobs(_spawnZoneFou,_catsFou,4);
			}
			_reloads++;
			if (_reloads < totalReloads)
			{
				startQuestTimer("mobReloads", mobReload, null, null);
			}
			else
			{
				Announcements.getInstance().announceToAll(_byeByeFewMinutes);
			}
		}

Vielleicht kann mir ja jemand von euch erklären wieso diese Warnung mit dem Dead Code auftritt und wie ich diese weg bekommen kann.

Schon einmal Danke im vorraus.

Mit freundlichem Gruß
PapaHarni
 
am bisherigen Code ist das meiner Ansicht nach nicht zu erkennen,
wenn es nur eine Warnung ist, dann kannst du den Code doch ausführen und mit bestimmten Werten sowie System.out.println() testen und prüfen, ob da wirklich was dead ist oder du doch dahin gelangst

edit: mit unreachable code verwechselt, aber kommt fast aufs gleiche hinaus: wo soll die Variable verwendet werden, wird diese Stelle erreicht?
 
Zuletzt bearbeitet von einem Moderator:
Nein, es bedeutet, dass der else-Bereich niemals abgearbeitet werden kann und hat nichts mit dem Inhalt zu tun. Ein möglicher Grund wäre, dass _mobReload und _runInterval beide final sind und _runInterval mehr als doppelt so groß wie _mobReload ist.
 
Das geht nicht so ohne weiteres 😉 Das ist L2J Code, die sind froh, dass das überhaupt schon als Gesamteinheit kompiliert *g*

Richtig aber machbar wäre es schon ;-) Da der Abschnitt nicht unbedingt jetzt was mit den L2J Typen ( L2PcInstance und so ) zu tun hat ;-)


Nein, es bedeutet, dass der else-Bereich niemals abgearbeitet werden kann und hat nichts mit dem Inhalt zu tun. Ein möglicher Grund wäre, dass _mobReload und _runInterval beide final sind und _runInterval mehr als doppelt so groß wie _mobReload ist.

Okay also die aussage haut den nagel auf den Punkt.

_mobReload sowie _runInterval sind final und _runInterval ist mehr als doppelt so gross. Da es eigentlich Cofig werte sind halt.

Wenn ich es jetzt richtig verstehe müsste die Meldung weg sein wenn ich statt
Java:
	private static final int _runInterval = 15; //Minuten
	private static final int _homeTeleport = 30; //Sekunden
	private static final int _mobReload = 5; //Minuten
schreibe , es so schreibe :
Java:
	private int _runInterval = 15; //Minuten
	private int _homeTeleport = 30; //Sekunden
	private int _mobReload = 5; //Minuten
oder?
Weil dann sind die Variablen ja nicht mehr von beginn an Festgelegt , sondern könnten unter umständen im Scriptverlauf geändert werden.

Mit freundlichem Gruß
PapaHarni

@njans : Mach ich gerne wenn der fehler danach immer noch nicht weg ist und es woanders doch dran liegt.
 
Die Variablen nicht final zu machen ist doch auch nur so lala zweckvoll. Wenn der Else-Zweig nicht abgearbeitet wird, wieso willst du ihn dann haben? Vermutlich waren es mal konfigurierbare Werte und du willst sie fest setzen. Da die festen Werte aber die Abfrage sinnlos machen, schmeiss sie halt raus.

@ L2J Code:
Machbar schon aber sinnfrei 😉 Bei welchem Server hilfst du denn programmieren?
 
Die Variablen nicht final zu machen ist doch auch nur so lala zweckvoll. Wenn der Else-Zweig nicht abgearbeitet wird, wieso willst du ihn dann haben? Vermutlich waren es mal konfigurierbare Werte und du willst sie fest setzen. Da die festen Werte aber die Abfrage sinnlos machen, schmeiss sie halt raus.

@ L2J Code:
Machbar schon aber sinnfrei 😉 Bei welchem Server hilfst du denn programmieren?


Ich hab die Variablen absichtlich rein gesetzt , ob diese nun Konstant sind oder nicht , ist relativ egal.
Ich wollte es nur so schreiben das jeder es ohne grossen Probleme benutzen kann. Einfach Configs einstellen im Script und das Script regelt dann den Rest alleine im Grunde. So wie es eben sein sollte. ;-)
Daher finde ich das es nicht sehr praktisch ist den code raus zu holen. Muss ich mir was einfallen lassen bzw mal schauen wie ich den fehler dann weg bekomme wenn es nicht hilft diese als final raus zu nehmen.


Helfe derzeit bei einem neuen Server mit. L2Crafting(dot)com nennt dieser sich. Ist noch am anfang , war zuvor ein anderer Server mit anderen rates.
 

Zurück
Oben