KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > edu > umd > cs > findbugs > detect > FindFloatMath


1 /*
2  * FindBugs - Find bugs in Java programs
3  * Copyright (C) 2003-2005 University of Maryland
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

19
20 package edu.umd.cs.findbugs.detect;
21
22
23 import edu.umd.cs.findbugs.*;
24
25 public class FindFloatMath extends BytecodeScanningDetector implements StatelessDetector {
26     private BugReporter bugReporter;
27
28     public FindFloatMath(BugReporter bugReporter) {
29         this.bugReporter = bugReporter;
30     }
31
32
33
34     @Override JavaDoc
35          public void sawOpcode(int seen) {
36         switch (seen) {
37         case FMUL:
38         case FDIV:
39             if (getFullyQualifiedMethodName().indexOf("float") == -1
40                     && getFullyQualifiedMethodName().indexOf("Float") == -1
41                     && getFullyQualifiedMethodName().indexOf("FLOAT") == -1)
42                 bugReporter.reportBug(new BugInstance(this, "FL_MATH_USING_FLOAT_PRECISION",
43                         LOW_PRIORITY)
44                         .addClassAndMethod(this)
45                         .addSourceLine(this));
46             break;
47         case FCMPG:
48         case FCMPL:
49             break;
50         case FADD:
51         case FSUB:
52         case FREM:
53             if (getFullyQualifiedMethodName().indexOf("float") == -1
54                     && getFullyQualifiedMethodName().indexOf("Float") == -1
55                     && getFullyQualifiedMethodName().indexOf("FLOAT") == -1)
56
57                 bugReporter.reportBug(new BugInstance(this, "FL_MATH_USING_FLOAT_PRECISION",
58                         NORMAL_PRIORITY)
59                         .addClassAndMethod(this)
60                         .addSourceLine(this));
61             break;
62         default:
63             break;
64         }
65     }
66 }
67
Popular Tags