The following issues were found

src/test/java/com/alibaba/json/bvt/serializer/enum_/EnumFieldsTest7.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 13

              
public class EnumFieldsTest7 extends TestCase {

    public void test_enum() throws Exception {
        Model model = new Model();
        model.t1 = Type.A;
        model.t2 = null;

        ValueFilter filter = new ValueFilter() {

            

Reported by PMD.

Assigning an Object to null is a code smell. Consider refactoring.
Error

Line: 16

                  public void test_enum() throws Exception {
        Model model = new Model();
        model.t1 = Type.A;
        model.t2 = null;

        ValueFilter filter = new ValueFilter() {
            public Object process(Object object, String name, Object value) {
                return null;
            }

            

Reported by PMD.

The class 'Model' is suspected to be a Data Class (WOC=0.000%, NOPA=0, NOAM=4, WMC=4)
Design

Line: 27

                      Assert.assertEquals("{\"t1\":null,\"t2\":null}", text);
    }

    public static class Model {

        private Type t1;
        private Type t2;

        public Type getT1() {

            

Reported by PMD.

Found 'DU'-anomaly for variable 'filter' (lines '18'-'25').
Error

Line: 18

                      model.t1 = Type.A;
        model.t2 = null;

        ValueFilter filter = new ValueFilter() {
            public Object process(Object object, String name, Object value) {
                return null;
            }
        };
        String text = JSON.toJSONString(model, filter, SerializerFeature.WriteMapNullValue);

            

Reported by PMD.

Found 'DU'-anomaly for variable 'filter' (lines '18'-'25').
Error

Line: 18

                      model.t1 = Type.A;
        model.t2 = null;

        ValueFilter filter = new ValueFilter() {
            public Object process(Object object, String name, Object value) {
                return null;
            }
        };
        String text = JSON.toJSONString(model, filter, SerializerFeature.WriteMapNullValue);

            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/serializer/filters/ValueFilterTest_field_int.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 12

              
public class ValueFilterTest_field_int extends TestCase {

    public void test_valuefilter() throws Exception {
        ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("id")) {
                    return "AAA";

            

Reported by PMD.

Position literals first in String comparisons
Design

Line: 16

                      ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("id")) {
                    return "AAA";
                }

                return value;
            }

            

Reported by PMD.

Position literals first in String comparisons
Design

Line: 16

                      ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("id")) {
                    return "AAA";
                }

                return value;
            }

            

Reported by PMD.

Found 'DU'-anomaly for variable 'filter' (lines '13'-'30').
Error

Line: 13

              public class ValueFilterTest_field_int extends TestCase {

    public void test_valuefilter() throws Exception {
        ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("id")) {
                    return "AAA";
                }

            

Reported by PMD.

Found 'DU'-anomaly for variable 'filter' (lines '13'-'30').
Error

Line: 13

              public class ValueFilterTest_field_int extends TestCase {

    public void test_valuefilter() throws Exception {
        ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("id")) {
                    return "AAA";
                }

            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/serializer/ParserConfigTest.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 12

              
public class ParserConfigTest extends TestCase {

    public void test_0() throws Exception {
        ParserConfig config = new ParserConfig();
        config.getDeserializers();
    }
    
    

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 12

              
public class ParserConfigTest extends TestCase {

    public void test_0() throws Exception {
        ParserConfig config = new ParserConfig();
        config.getDeserializers();
    }
    
    

            

Reported by PMD.

JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 18

                  }
    
    
    public void test_1() throws Exception {
        ParserConfig config = new ParserConfig(Thread.currentThread().getContextClassLoader());
        
        Model model = JSON.parseObject("{\"value\":123}", Model.class, config);
        Assert.assertEquals(123, model.value);
    }

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 19

                  
    
    public void test_1() throws Exception {
        ParserConfig config = new ParserConfig(Thread.currentThread().getContextClassLoader());
        
        Model model = JSON.parseObject("{\"value\":123}", Model.class, config);
        Assert.assertEquals(123, model.value);
    }
    

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 26

                  }
    
    public static class Model {
        public int value;
    }
}

            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/serializer/filters/ValueFilterTest_IntegerKey.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 15

              
public class ValueFilterTest_IntegerKey extends TestCase {

    public void test_namefilter() throws Exception {
        ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("1001")) {
                    return "wenshao";

            

Reported by PMD.

Position literals first in String comparisons
Design

Line: 19

                      ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("1001")) {
                    return "wenshao";
                }

                return value;
            }

            

Reported by PMD.

Position literals first in String comparisons
Design

Line: 19

                      ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("1001")) {
                    return "wenshao";
                }

                return value;
            }

            

Reported by PMD.

Found 'DU'-anomaly for variable 'filter' (lines '16'-'35').
Error

Line: 16

              public class ValueFilterTest_IntegerKey extends TestCase {

    public void test_namefilter() throws Exception {
        ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("1001")) {
                    return "wenshao";
                }

            

Reported by PMD.

Found 'DU'-anomaly for variable 'filter' (lines '16'-'35').
Error

Line: 16

              public class ValueFilterTest_IntegerKey extends TestCase {

    public void test_namefilter() throws Exception {
        ValueFilter filter = new ValueFilter() {

            public Object process(Object source, String name, Object value) {
                if (name.equals("1001")) {
                    return "wenshao";
                }

            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/serializer/URLTest.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 13

              
public class URLTest extends TestCase {

    public void test_file() throws Exception {
        URL url = URI.create("http://www.alibaba.com/").toURL();

        String text = JSON.toJSONString(url);

        Assert.assertEquals(JSON.toJSONString(url.toString()), text);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 14

              public class URLTest extends TestCase {

    public void test_file() throws Exception {
        URL url = URI.create("http://www.alibaba.com/").toURL();

        String text = JSON.toJSONString(url);

        Assert.assertEquals(JSON.toJSONString(url.toString()), text);


            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 18

              
        String text = JSON.toJSONString(url);

        Assert.assertEquals(JSON.toJSONString(url.toString()), text);

        URL url2 = JSON.parseObject(text, URL.class);
        Assert.assertEquals(url.toString(), url2.toString());
    }
}

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 21

                      Assert.assertEquals(JSON.toJSONString(url.toString()), text);

        URL url2 = JSON.parseObject(text, URL.class);
        Assert.assertEquals(url.toString(), url2.toString());
    }
}

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 21

                      Assert.assertEquals(JSON.toJSONString(url.toString()), text);

        URL url2 = JSON.parseObject(text, URL.class);
        Assert.assertEquals(url.toString(), url2.toString());
    }
}

            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/parser/deser/TestNull.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 15

              
public class TestNull extends TestCase {

    public void test_byte() throws Exception {
        DefaultJSONParser parser = new DefaultJSONParser("null", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);

        Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));
    }
    

            

Reported by PMD.

The String literal 'null' appears 4 times in this file; the first occurrence is on line 16
Error

Line: 16

              public class TestNull extends TestCase {

    public void test_byte() throws Exception {
        DefaultJSONParser parser = new DefaultJSONParser("null", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);

        Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));
    }
    
    public void test_char() throws Exception {

            

Reported by PMD.

JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 21

                      Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));
    }
    
    public void test_char() throws Exception {
        DefaultJSONParser parser = new DefaultJSONParser("null", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);
        
        Assert.assertNull(new CharacterCodec().deserialze(parser, null, null));
    }
    

            

Reported by PMD.

JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 27

                      Assert.assertNull(new CharacterCodec().deserialze(parser, null, null));
    }
    
    public void test_short() throws Exception {
        DefaultJSONParser parser = new DefaultJSONParser("null", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);
        
        Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));
    }
    

            

Reported by PMD.

JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 33

                      Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));
    }
    
    public void test_null() throws Exception {
        DefaultJSONParser parser = new DefaultJSONParser("null", ParserConfig.getGlobalInstance(), JSON.DEFAULT_PARSER_FEATURE);
        
        Assert.assertNull(new NumberDeserializer().deserialze(parser, null, null));
    }
}

            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest16.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 12

               * Created by wenshao on 29/01/2017.
 */
public class DenyTest16 extends TestCase {
    public void test_deny() throws Exception {
        JSONObject object = new JSONObject();
        object.put("@type", "com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase");

        Throwable error = null;
        try {

            

Reported by PMD.

Avoid catching generic exceptions such as NullPointerException, RuntimeException, Exception in try-catch block
Design

Line: 19

                      Throwable error = null;
        try {
            TypeUtils.castToJavaBean(object, Object.class);
        } catch (Exception ex) {
            error = ex;
        }
        assertNotNull(error);
    }


            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 22

                      } catch (Exception ex) {
            error = ex;
        }
        assertNotNull(error);
    }

    public static class Model {
        public Throwable value;
    }

            

Reported by PMD.

Avoid unused imports such as 'com.alibaba.fastjson.JSON'
Design

Line: 3

              package com.alibaba.json.bvt.parser.deser.deny;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.util.TypeUtils;
import junit.framework.TestCase;

/**
 * Created by wenshao on 29/01/2017.

            

Reported by PMD.

Found 'DD'-anomaly for variable 'error' (lines '16'-'20').
Error

Line: 16

                      JSONObject object = new JSONObject();
        object.put("@type", "com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase");

        Throwable error = null;
        try {
            TypeUtils.castToJavaBean(object, Object.class);
        } catch (Exception ex) {
            error = ex;
        }

            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/serializer/filters/PropertyPrefFilterTest_IntegerKey.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 16

              
public class PropertyPrefFilterTest_IntegerKey extends TestCase {

    public void test_namefilter() throws Exception {
        PropertyPreFilter filter = new PropertyPreFilter() {

            public boolean apply(JSONSerializer serializer, Object object, String name) {
                return name.equals("1001");
            }

            

Reported by PMD.

Position literals first in String comparisons
Design

Line: 20

                      PropertyPreFilter filter = new PropertyPreFilter() {

            public boolean apply(JSONSerializer serializer, Object object, String name) {
                return name.equals("1001");
            }

        };



            

Reported by PMD.

Position literals first in String comparisons
Design

Line: 20

                      PropertyPreFilter filter = new PropertyPreFilter() {

            public boolean apply(JSONSerializer serializer, Object object, String name) {
                return name.equals("1001");
            }

        };



            

Reported by PMD.

Found 'DU'-anomaly for variable 'filter' (lines '17'-'33').
Error

Line: 17

              public class PropertyPrefFilterTest_IntegerKey extends TestCase {

    public void test_namefilter() throws Exception {
        PropertyPreFilter filter = new PropertyPreFilter() {

            public boolean apply(JSONSerializer serializer, Object object, String name) {
                return name.equals("1001");
            }


            

Reported by PMD.

Found 'DU'-anomaly for variable 'filter' (lines '17'-'33').
Error

Line: 17

              public class PropertyPrefFilterTest_IntegerKey extends TestCase {

    public void test_namefilter() throws Exception {
        PropertyPreFilter filter = new PropertyPreFilter() {

            public boolean apply(JSONSerializer serializer, Object object, String name) {
                return name.equals("1001");
            }


            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/parser/deser/SortedSetFieldTest.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 13

              
public class SortedSetFieldTest extends TestCase {

    public void test_null() throws Exception {
        Entity value = JSON.parseObject("{value:null}", Entity.class);
        Assert.assertNull(value.getValue());
    }

    public void test_empty() throws Exception {

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 15

              
    public void test_null() throws Exception {
        Entity value = JSON.parseObject("{value:null}", Entity.class);
        Assert.assertNull(value.getValue());
    }

    public void test_empty() throws Exception {
        Entity value = JSON.parseObject("{value:[]}", Entity.class);
        Assert.assertEquals(0, value.getValue().size());

            

Reported by PMD.

JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 18

                      Assert.assertNull(value.getValue());
    }

    public void test_empty() throws Exception {
        Entity value = JSON.parseObject("{value:[]}", Entity.class);
        Assert.assertEquals(0, value.getValue().size());
    }

    private static class Entity {

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 20

              
    public void test_empty() throws Exception {
        Entity value = JSON.parseObject("{value:[]}", Entity.class);
        Assert.assertEquals(0, value.getValue().size());
    }

    private static class Entity {

        private SortedSet value;

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 20

              
    public void test_empty() throws Exception {
        Entity value = JSON.parseObject("{value:[]}", Entity.class);
        Assert.assertEquals(0, value.getValue().size());
    }

    private static class Entity {

        private SortedSet value;

            

Reported by PMD.

src/test/java/com/alibaba/json/bvt/serializer/StringArraySerializerTest.java
5 issues
JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 12

              
public class StringArraySerializerTest extends TestCase {

    public void test_0() throws Exception {
        SerializeWriter out = new SerializeWriter(1);

        JSONSerializer.write(out, new String[] { "a12", "b34" });

        Assert.assertEquals("[\"a12\",\"b34\"]", out.toString());

            

Reported by PMD.

The String literal 'a12' appears 4 times in this file; the first occurrence is on line 15
Error

Line: 15

                  public void test_0() throws Exception {
        SerializeWriter out = new SerializeWriter(1);

        JSONSerializer.write(out, new String[] { "a12", "b34" });

        Assert.assertEquals("[\"a12\",\"b34\"]", out.toString());
    }

    public void test_1() throws Exception {

            

Reported by PMD.

JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 20

                      Assert.assertEquals("[\"a12\",\"b34\"]", out.toString());
    }

    public void test_1() throws Exception {
        SerializeWriter out = new SerializeWriter(1);

        JSONSerializer.write(out, new String[] { "a12", "\na\nb\nc\nd\"'", "b34" });

        Assert.assertEquals("[\"a12\",\"\\na\\nb\\nc\\nd\\\"'\",\"b34\"]", out.toString());

            

Reported by PMD.

JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 28

                      Assert.assertEquals("[\"a12\",\"\\na\\nb\\nc\\nd\\\"'\",\"b34\"]", out.toString());
    }

    public void test_2() throws Exception {
        SerializeWriter out = new SerializeWriter(1);

        JSONSerializer.write(out, new String[] { "a12", null });

        Assert.assertEquals("[\"a12\",null]", out.toString());

            

Reported by PMD.

JUnit 4 tests that execute tests should use the @Test annotation, JUnit 5 tests should use @Test, @RepeatedTest, @TestFactory, @TestTemplate or @ParameterizedTest
Design

Line: 36

                      Assert.assertEquals("[\"a12\",null]", out.toString());
    }

    public void test_3() throws Exception {
        SerializeWriter out = new SerializeWriter(1024);

        JSONSerializer.write(out, new String[] { "a12", null });

        Assert.assertEquals("[\"a12\",null]", out.toString());

            

Reported by PMD.