HelloWorld的编译,部署,测试
- 运行build.xml前的目录结构:
|__calculator
|__HelloWorld
|__Ant
|__src
|__HelloWorld.java
|__build.xml
|__Junit
|__HelloWorld.java
|__HelloWorldTest.java
|__junit-4.9.jar
|__Calculator
|__...
|__README.md
- 运行build.xml后的目录结构:
|__calculator
|__HelloWorld
|__Ant
|__src
|__HelloWorld.java
|__build
|__classes
|__HelloWorld.class
|__build.xml
|__helloworld.jar
|__Junit
|__HelloWorld.java
|__HelloWorldTest.java
|__junit-4.9.jar
|__Calculator
|__...
|__README.md
- Junit测试后的目录结构:
|__calculator
|__HelloWorld
|__Ant
|__src
|__HelloWorld.java
|__build
|__classes
|__HelloWorld.class
|__build.xml
|__helloworld.jar
|__Junit
|__HelloWorld.java
|__HelloWorldTest.java
|__junit-4.9.jar
|__HelloWorld.class
|__HelloWorldTest.class
|__Calculator
|__...
|__README.md
Calculator(简单计算器)
要求
- 例图:
- 当点击含有加号的按钮时,则第一排第二个按钮的文本变为加号;
- 当点击“OK”按钮时,将算出12+2的结果并在第一排最后一个按钮显示;
- 减号,乘号,除号的功能类似。其中,数字可以自己输入,也可以固定不变。
实现
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.event.*;
public class Calculator extends JFrame{
public Calculator() {
JPanel panel = new JPanel(); // 面板容器
panel.setLayout(new GridLayout(2,5)); // 两行五列
// 初始化两个数,用文本框输入,输入居中
JTextField num1 = new JTextField("12");
num1.setHorizontalAlignment(JTextField.CENTER);
JTextField num2 = new JTextField("2");
num2.setHorizontalAlignment(JTextField.CENTER);
// 运算符
JTextField op = new JTextField("");
op.setHorizontalAlignment(JTextField.CENTER);
op.setEditable(false);
// 等于号
JTextField equal = new JTextField("=");
equal.setHorizontalAlignment(JTextField.CENTER);
equal.setEditable(false);
// 运算结果
JTextField res = new JTextField("");
res.setHorizontalAlignment(JTextField.CENTER);
res.setEditable(false);
// 加减乘除
JButton add = new JButton("+");
JButton sub = new JButton("-");
JButton mul = new JButton("*");
JButton div = new JButton("/");
// 计算
JButton ok = new JButton("ok");
// 依次将元素加入到面板容器中
panel.add(num1);
panel.add(op);
panel.add(num2);
panel.add(equal);
panel.add(res);
panel.add(add);
panel.add(sub);
panel.add(mul);
panel.add(div);
panel.add(ok);
// 将面板容器加入到窗口中
add(panel);
setBounds(800, 300, 600, 250); // 设置窗口尺寸和位置
setTitle("Easy Calculator"); // 设置标题
// 监听ok按钮,监听到则根据运算符进行计算
ActionListener okButton = new ActionListener() {
public void actionPerformed(ActionEvent e){
double n1 = Double.parseDouble(num1.getText());
double n2 = Double.parseDouble(num2.getText());
if(op.getText().equals("+")){
res.setText("" + (n1 + n2));
}
if(op.getText().equals("-")){
res.setText("" + (n1 - n2));
}
if(op.getText().equals("*")){
res.setText("" + (n1 * n2));
}
if(op.getText().equals("/")){
res.setText("" + (n1 / n2));
}
}
};
// 监听运算符按钮按钮,监听到则设置op
ActionListener opButton = new ActionListener() {
public void actionPerformed(ActionEvent e) {
op.setText(((JButton)e.getSource()).getText());
}
};
// 给按钮增加监听动作
add.addActionListener(opButton);
sub.addActionListener(opButton);
mul.addActionListener(opButton);
div.addActionListener(opButton);
ok.addActionListener(okButton);
// 显示窗口
setVisible(true);
// 退出窗口
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// 程序入口
public static void main(String[] args) {
new Calculator();
}
}
效果图
Calculator的编译,部署,测试
- 运行build.xml前的目录结构:
|__calculator
|__HelloWorld
|__...
|__Calculator
|__Ant
|__src
|__Calculator.java
|__build.xml
|__Junit
|__...
|__SonarQube
|__...
|__README.md
- 运行build.xml后的目录结构:
|__calculator
|__HelloWorld
|__...
|__Calculator
|__Ant
|__src
|__Calculator.java
|__build
|__classes
|__HelloWorld.class
|__build.xml
|__calculator.jar
|__Junit
|__...
|__SonarQube
|__...
|__README.md
- Junit测试前的目录结构:
|__calculator
|__HelloWorld
|__...
|__Calculator
|__Ant
|__...
|__Junit
|__Calculator.java
|__CalculatorTest.java
|__junit-4.9.jar
|__SonarQube
|__...
|__README.md
- Junit测试后的目录结构:
|__calculator
|__HelloWorld
|__...
|__Calculator
|__Ant
|__...
|__Junit
|__Calculator.java
|__CalculatorTest.java
|__junit-4.9.jar
|__Calculator.class
|__Calculator$1.class
|__Calculator$2.class
|__CalculatorTest.class
|__SonarQube
|__...
|__README.md
SonarQube
-
简介
Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。 -
用途
- 展示代码的复杂度分布。
- 展示源码中严重重复的地方。
- 可以很方便地统计并展示单元测试覆盖率。
- 可以通过 PMD,CheckStyle,Findbugs 等等代码规则检测工具规范代码编写。
- 展示注释量。
- 可以通过 PMD,CheckStyle,Findbugs 等等代码规则检测工具检测出潜在的 bug。
- 可以找出循环,展示包与包、类与类之间的相互依赖关系;可以检测自定义的架构规则;可以管理第三方的 jar 包;可以利用 LCOM4 检测单个任务规则的应用情况;检测耦合。
- 配置环境(在/etc/profile末尾添加以下路径,此时为临时路径,每次重新打开终端后若要使用都要先执行命令
source /etc/profile
)
export SONAR_HOME=/home/zhaowx9/桌面/sonar-3.7.4/bin/linux-x86-64
export SONAR_RUNNER_HOME=/home/zhaowx9/桌面/sonar-runner-2.4
export PATH=$SONAR_RUNNER_HOME/bin:$PATH
- 启动sonar服务
- 在任何目录下都可执行sonar-runner
使用SonarQube分析Calculator
- 目录结构
|__calculator
|__HelloWorld
|__...
|__Calculator
|__Ant
|__...
|__Junit
|__...
|__SonarQube
|__src
|__Calculator.java
|__sonar-project.properties
|__README.md
- sonar-project.properties
sonar.projectKey=src
sonar.projectName=src
sonar.projectVersion=1.0
sonar.projectEncoding=UTF-8
sonar.modules=java-module
java-module.sonar.projectName=Java Module
java-module.sonar.language=java
java-module.sonar.sources=.
java-module.sonar.projectBaseDir=src
- 开启sonar服务并sonar-runner
- 打开 http://localhost:9000/
- 查看src的代码情况
运行 BugRunner
- 进入文件夹 firstProject
- 执行命令
javac -classpath .:./../../gridworld.jar BugRunner.java
java -classpath .:./../../gridworld.jar BugRunner
- 运行结果