Issue 134: Exception thrown when parsing numeric constant "3.14_15F"

This commit is contained in:
ychulovskyy 2014-09-08 23:46:04 +02:00 committed by Roman Ivanov
parent f768a8f8cc
commit 08ea556aed
3 changed files with 23 additions and 23 deletions

View File

@ -151,7 +151,7 @@ public final class CheckUtils
*/
public static double parseDouble(String aText, int aType)
{
String txt = aText;
String txt = aText.replaceAll("_", "");
double result = 0;
switch (aType) {
case TokenTypes.NUM_FLOAT:

View File

@ -32,8 +32,8 @@ public class MagicNumberCheckTest
final DefaultConfiguration checkConfig =
createCheckConfig(MagicNumberCheck.class);
final String[] expected = {
"41:26: '3' is a magic number.",
"42:32: '1.5' is a magic number.",
"41:26: '3_000' is a magic number.",
"42:32: '1.5_0' is a magic number.",
"43:27: '3' is a magic number.",
"43:31: '4' is a magic number.",
"45:29: '3' is a magic number.",
@ -46,7 +46,7 @@ public class MagicNumberCheckTest
"55:39: '3' is a magic number.",
"60:25: '010' is a magic number.",
"61:25: '011' is a magic number.",
"63:30: '010L' is a magic number.",
"63:30: '0_10L' is a magic number.",
"64:30: '011l' is a magic number.",
"68:24: '0x10' is a magic number.",
"69:24: '0X011' is a magic number.",
@ -80,7 +80,7 @@ public class MagicNumberCheckTest
{
final DefaultConfiguration checkConfig =
createCheckConfig(MagicNumberCheck.class);
checkConfig.addAttribute("ignoreNumbers", "0, 1, 3.0, 8, 16");
checkConfig.addAttribute("ignoreNumbers", "0, 1, 3.0, 8, 16, 3000");
checkConfig.addAttribute("ignoreAnnotation", "true");
final String[] expected = {
"22:25: '2' is a magic number.",
@ -90,7 +90,7 @@ public class MagicNumberCheckTest
"34:29: '2' is a magic number.",
"36:17: '2' is a magic number.",
"38:19: '2.0' is a magic number.",
"42:32: '1.5' is a magic number.",
"42:32: '1.5_0' is a magic number.",
"43:31: '4' is a magic number.",
"48:26: '1.5' is a magic number.",
"50:29: '5' is a magic number.",
@ -148,8 +148,8 @@ public class MagicNumberCheckTest
"36:17: '2' is a magic number.",
"38:13: '1.0' is a magic number.",
"38:19: '2.0' is a magic number.",
"41:26: '3' is a magic number.",
"42:32: '1.5' is a magic number.",
"41:26: '3_000' is a magic number.",
"42:32: '1.5_0' is a magic number.",
"43:27: '3' is a magic number.",
"43:31: '4' is a magic number.",
"45:29: '3' is a magic number.",
@ -163,7 +163,7 @@ public class MagicNumberCheckTest
"59:25: '00' is a magic number.",
"60:25: '010' is a magic number.",
"61:25: '011' is a magic number.",
"63:30: '010L' is a magic number.",
"63:30: '0_10L' is a magic number.",
"64:30: '011l' is a magic number.",
"67:23: '0x0' is a magic number.",
"68:24: '0x10' is a magic number.",
@ -205,7 +205,7 @@ public class MagicNumberCheckTest
checkConfig.addAttribute("tokens", "NUM_INT, NUM_LONG");
checkConfig.addAttribute("ignoreAnnotation", "true");
final String[] expected = {
"41:26: '3' is a magic number.",
"41:26: '3_000' is a magic number.",
"43:27: '3' is a magic number.",
"43:31: '4' is a magic number.",
"45:29: '3' is a magic number.",
@ -217,7 +217,7 @@ public class MagicNumberCheckTest
"55:39: '3' is a magic number.",
"60:25: '010' is a magic number.",
"61:25: '011' is a magic number.",
"63:30: '010L' is a magic number.",
"63:30: '0_10L' is a magic number.",
"64:30: '011l' is a magic number.",
"68:24: '0x10' is a magic number.",
"69:24: '0X011' is a magic number.",
@ -251,7 +251,7 @@ public class MagicNumberCheckTest
checkConfig.addAttribute("tokens", "NUM_INT, NUM_LONG");
checkConfig.addAttribute("ignoreAnnotation", "true");
final String[] expected = {
"41:26: '3' is a magic number.",
"41:26: '3_000' is a magic number.",
"43:27: '3' is a magic number.",
"43:31: '4' is a magic number.",
"45:29: '3' is a magic number.",
@ -263,7 +263,7 @@ public class MagicNumberCheckTest
"55:39: '3' is a magic number.",
"60:25: '010' is a magic number.",
"61:25: '011' is a magic number.",
"63:30: '010L' is a magic number.",
"63:30: '0_10L' is a magic number.",
"64:30: '011l' is a magic number.",
"68:24: '0x10' is a magic number.",
"69:24: '0X011' is a magic number.",
@ -292,8 +292,8 @@ public class MagicNumberCheckTest
checkConfig.addAttribute("ignoreHashCodeMethod", "true");
checkConfig.addAttribute("ignoreAnnotation", "true");
final String[] expected = {
"41:26: '3' is a magic number.",
"42:32: '1.5' is a magic number.",
"41:26: '3_000' is a magic number.",
"42:32: '1.5_0' is a magic number.",
"43:27: '3' is a magic number.",
"43:31: '4' is a magic number.",
"45:29: '3' is a magic number.",
@ -306,7 +306,7 @@ public class MagicNumberCheckTest
"55:39: '3' is a magic number.",
"60:25: '010' is a magic number.",
"61:25: '011' is a magic number.",
"63:30: '010L' is a magic number.",
"63:30: '0_10L' is a magic number.",
"64:30: '011l' is a magic number.",
"68:24: '0x10' is a magic number.",
"69:24: '0X011' is a magic number.",

View File

@ -8,12 +8,12 @@ package com.puppycrawl.tools.checkstyle;
public class InputMagicNumber {
public void magicMethod() {
//constants, ignore
final int INT_CONST = 101;
final long LONG_CONST1 = 100L;
final int INT_CONST = 101_000;
final long LONG_CONST1 = 100_000L;
final long LONG_CONST2 = 100l;
final float FLOAT_CONST1 = 1.5F;
final float FLOAT_CONST1 = 1.500_0F;
final float FLOAT_CONST2 = 1.5f;
final double DOUBLE_CONST1 = 1.5D;
final double DOUBLE_CONST1 = 1.500_0D;
final double DOUBLE_CONST2 = 1.5d;
final double DOUBLE_CONST3 = 1.5;
@ -38,8 +38,8 @@ public class InputMagicNumber {
if (1.0 < 2.0);
//magic numbers
int int_magic1 = 3;
double double_magic1 = 1.5;
int int_magic1 = 3_000;
double double_magic1 = 1.5_0;
int int_magic2 = (3 + 4);
int_array = new int[3];
@ -60,7 +60,7 @@ public class InputMagicNumber {
int octalVar8 = 010;
int octalVar9 = 011;
long longOctalVar8 = 010L;
long longOctalVar8 = 0_10L;
long longOctalVar9 = 011l;
//hex