Skip to content

Commit 9ff4890

Browse files
authored
Merge pull request #16 from Siquan-lab/master
ai review test
2 parents ffb7bac + 280457d commit 9ff4890

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
// src/main/java/com/example/BuggyCalculator.java
2+
package net.lvsq.jgossip;
3+
4+
import java.io.FileWriter;
5+
import java.io.IOException;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import java.util.logging.Level;
9+
import java.util.logging.Logger;
10+
11+
public class BuggyCalculator {
12+
13+
private static final Logger logger = Logger.getLogger(BuggyCalculator.class.getName());
14+
15+
public double divide(int numerator, int denominator) {
16+
// 潜在 Bug 1: 除以零未处理
17+
// 潜在 Bug 2: 返回 double,但参数是 int,可能导致精度问题(如果结果需要精确)
18+
return numerator / denominator;
19+
}
20+
21+
public int multiply(int a, int b) {
22+
// 潜在 Bug 3: 整数溢出未检查
23+
return a * b;
24+
}
25+
26+
public String concatenateStrings(String s1, String s2) {
27+
// 潜在 Bug 4: 频繁创建 String 对象,性能差(应使用 StringBuilder/StringBuffer)
28+
String result = "";
29+
result = result + s1;
30+
result = result + s2;
31+
return result;
32+
}
33+
34+
public void processData(List<String> data) {
35+
// 潜在 Bug 5: 迭代过程中修改集合(ConcurrentModificationException)
36+
for (String item : data) {
37+
if (item.equals("remove")) {
38+
data.remove(item);
39+
}
40+
}
41+
}
42+
43+
public void writeToFile(String filename, String content) throws IOException {
44+
// 潜在 Bug 6: 资源未关闭(try-with-resources 缺失)
45+
// 潜在 Bug 7: 异常处理过于宽泛,直接抛出,没有日志记录或更细致处理
46+
FileWriter writer = null;
47+
try {
48+
writer = new FileWriter(filename);
49+
writer.write(content);
50+
} finally {
51+
if (writer != null) {
52+
writer.close(); // 即使写入失败,也应尝试关闭
53+
}
54+
}
55+
}
56+
57+
public boolean checkPermission(String userRole) {
58+
// 潜在 Bug 8: 硬编码权限逻辑,不易维护和扩展
59+
if (userRole == "admin") { // 潜在 Bug 9: 字符串比较使用 == (应使用 .equals())
60+
return true;
61+
} else if (userRole.equals("guest")) {
62+
return false;
63+
} else {
64+
return false;
65+
}
66+
}
67+
68+
// 潜在 Bug 10: 未使用的私有方法
69+
private void unusedPrivateMethod() {
70+
System.out.println("This method is never called.");
71+
}
72+
73+
public static void main(String[] args) {
74+
BuggyCalculator calculator = new BuggyCalculator();
75+
76+
// 测试除法
77+
System.out.println("Division: " + calculator.divide(10, 2));
78+
// System.out.println("Division by zero: " + calculator.divide(10, 0)); // 会导致运行时错误
79+
80+
// 测试乘法
81+
System.out.println("Multiplication: " + calculator.multiply(Integer.MAX_VALUE, 2)); // 溢出
82+
83+
// 测试字符串连接
84+
System.out.println("Concatenation: " + calculator.concatenateStrings("Hello", "World"));
85+
86+
// 测试列表处理
87+
List<String> myData = new ArrayList<>();
88+
myData.add("item1");
89+
myData.add("remove");
90+
myData.add("item2");
91+
myData.add("remove");
92+
System.out.println("Original list: " + myData);
93+
calculator.processData(myData); // 可能会抛出 ConcurrentModificationException
94+
System.out.println("Processed list: " + myData);
95+
96+
// 测试文件写入
97+
try {
98+
calculator.writeToFile("test.txt", "This is a test file content.");
99+
System.out.println("File written successfully.");
100+
} catch (IOException e) {
101+
logger.log(Level.SEVERE, "Error writing to file", e); // 简单的日志记录
102+
}
103+
104+
// 测试权限检查
105+
System.out.println("Admin permission: " + calculator.checkPermission("admin"));
106+
System.out.println("Guest permission: " + calculator.checkPermission("guest"));
107+
System.out.println("Unknown role permission: " + calculator.checkPermission("developer"));
108+
}
109+
}

0 commit comments

Comments
 (0)