/*
 * $Id$
 *
 * Copyright 2006, The jCoderZ.org Project. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *    * Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 *    * Redistributions in binary form must reproduce the above
 *      copyright notice, this list of conditions and the following
 *      disclaimer in the documentation and/or other materials
 *      provided with the distribution.
 *    * Neither the name of the jCoderZ.org Project nor the names of
 *      its contributors may be used to endorse or promote products
 *      derived from this software without specific prior written
 *      permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.jcoderz.phoenix.report.samples;

import java.awt.Color;

/**
 * Simple class to demonstrate some Findbugs finder.
 * 
 * @author Andreas
 *
 */
public class FindbugsFindings
{
    private static String sLock = "LOCK";

    /**
     * Method to demonstrate the finder that detects calls to equals
     * with different classes. 
     */
    public void compareWithEquals ()
    {
        final String foo = "FOO";
        final Color bar = Color.GREEN;
        
        if (foo.equals(bar))
        {
            throw new RuntimeException(
                    "Ups, this should never happen, JDK bug?");
        }

        synchronized (sLock) 
        {
            // a test
        }

    }
    
    
    public void noInfinitLoop ()
    {
        final int offset = 5;
        final int current = 10;
        final int start = current - offset;    
        final int end = current + offset;
        
        for (int i = start; i <= end; i++)
        {
            System.out.println("At " + i);
        }
    }
}

/*
 * $Id$
 *
 * Copyright 2006, The jCoderZ.org Project. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *    * Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 *    * Redistributions in binary form must reproduce the above
 *      copyright notice, this list of conditions and the following
 *      disclaimer in the documentation and/or other materials
 *      provided with the distribution.
 *    * Neither the name of the jCoderZ.org Project nor the names of
 *      its contributors may be used to endorse or promote products
 *      derived from this software without specific prior written
 *      permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.jcoderz.phoenix.report.samples;

import java.awt.Color;

/**
 * Simple class to demonstrate some Findbugs finder.
 *
 * @author Andreas
 *
 */
public class FindbugsFindings
{
    private static String sLock = "LOCK";

    /**
     * Method to demonstrate the finder that detects calls to equals
     * with different classes.
     */
    public void compareWithEquals ()
    {
        final String foo = "FOO";
        final Color bar = Color.GREEN;

        if (foo.equals(bar))
        {
            throw new RuntimeException(
                    "Ups, this should never happen, JDK bug?");
        }

        synchronized (sLock)
        {
            // a test
        }

    }


    public void noInfinitLoop ()
    {
        final int offset = 5;
        final int current = 10;
        final int start = current - offset;
        final int end = current + offset;

        for (int i = start; i <= end; i++)
        {
            System.out.println("At " + i);
        }
    }

    public void couldBeStaticInnerClass (final String test)
    {
        final Runnable go = new Runnable()
        {
            public void run ()
            {
                System.out.println("Input was " + test);
            }
        };
        new Thread(go).run();
    }
}

Test for code that is falsely flagged as SIC_INNER_SHOULD_BE_STATIC_ANON