将由于控制结构类型而导致的代码复杂度逐行统计到 table 视图中
Get the count of code complexity due to type of control structures line by line into a table view
我使用 java swing 和 netbeans IDE 开发了一个桌面应用程序。它的目的是衡量由于控制结构的类型而导致的程序语句的复杂性。对于"if"、"for"、"while"、"catch"的程序语句,分别赋予权重1、2、2、1。此外,"n" 的权重分配给具有 "switch" 语句且案例数为 "n" 的程序语句。所有其他陈述的权重都为零。
我已经实现了上述问题的解决方案,我需要以表格形式展示其复杂性"of each program statement"。为此,我使用了一个 jTable,其列名为 "Line no"、"Program statement" 和 "Complexity count".
虽然我已经计算了复杂度的总数,但我不知道如何逐行获取计数并将其显示在jTable 中。应根据每个行号和语句显示与每个程序语句相关的复杂性计数。
这是我的代码。
https://github.com/nirmaniPathiranage/Complexity-measuring-tool/blob/master/src/spm/FilesDemo.java
我实现了从733行开始加载table数据的功能。 (对 jButton11 执行的操作)。
private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed{}
我希望在 table 视图中针对每个行号和程序语句输出每个程序语句的复杂性。
我好像想不通。任何帮助将不胜感激。
通过实现 jTable 来显示程序中每一行的复杂性,我可以看到一个可能的问题是事先不知道行数。但这也可以通过使用 ArrayList<> 和 TableModel 的天真方法轻松解决,如下所示。
//Names of the columns
String columns[] = {"Line no","Program statement","Complexity count"};
//Table model, initiate with 0 columns
DefaultTableModel tableModel = new DefaultTableModel(columns, 0);
JTable table = new JTable(tableModel);
为了让事情更清楚,实现一个 POJO class 以便在 table 行中显示的内容是理想的。
public class TableRow {
private int lineNo;
private String statement;
private int cmplxCount;
//You may implement the getters and setters as well
}
当程序遍历每一行计算复杂度时,请确保创建一个新的 TableRow 对象和必要的数据并将它们添加到 ArrayList
ArrayList<TableRow> list = new ArrayList<TableRow>();
//Create an object each time a line is iterated for complexity calculations.
TableRow newRow = new TableRow(4,"for-loop",1);
list.add(newRow);
迭代结束后,将ArrayList中的那些数据添加到一个Object数组中,传递给jTable。
for (int i = 0; i < list.size(); i++){
int lineNo= list.get(i).getLineNo();
String statment = list.get(i).getStatement();
int cmplxCount= list.get(i).getCmplxCount();
Object[] data = {lineNo, statement , cmplxCount};
tableModel.add(data);
}
我使用 java swing 和 netbeans IDE 开发了一个桌面应用程序。它的目的是衡量由于控制结构的类型而导致的程序语句的复杂性。对于"if"、"for"、"while"、"catch"的程序语句,分别赋予权重1、2、2、1。此外,"n" 的权重分配给具有 "switch" 语句且案例数为 "n" 的程序语句。所有其他陈述的权重都为零。
我已经实现了上述问题的解决方案,我需要以表格形式展示其复杂性"of each program statement"。为此,我使用了一个 jTable,其列名为 "Line no"、"Program statement" 和 "Complexity count".
虽然我已经计算了复杂度的总数,但我不知道如何逐行获取计数并将其显示在jTable 中。应根据每个行号和语句显示与每个程序语句相关的复杂性计数。
这是我的代码。 https://github.com/nirmaniPathiranage/Complexity-measuring-tool/blob/master/src/spm/FilesDemo.java
我实现了从733行开始加载table数据的功能。 (对 jButton11 执行的操作)。
private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed{}
我希望在 table 视图中针对每个行号和程序语句输出每个程序语句的复杂性。
我好像想不通。任何帮助将不胜感激。
通过实现 jTable 来显示程序中每一行的复杂性,我可以看到一个可能的问题是事先不知道行数。但这也可以通过使用 ArrayList<> 和 TableModel 的天真方法轻松解决,如下所示。
//Names of the columns
String columns[] = {"Line no","Program statement","Complexity count"};
//Table model, initiate with 0 columns
DefaultTableModel tableModel = new DefaultTableModel(columns, 0);
JTable table = new JTable(tableModel);
为了让事情更清楚,实现一个 POJO class 以便在 table 行中显示的内容是理想的。
public class TableRow {
private int lineNo;
private String statement;
private int cmplxCount;
//You may implement the getters and setters as well
}
当程序遍历每一行计算复杂度时,请确保创建一个新的 TableRow 对象和必要的数据并将它们添加到 ArrayList
ArrayList<TableRow> list = new ArrayList<TableRow>();
//Create an object each time a line is iterated for complexity calculations.
TableRow newRow = new TableRow(4,"for-loop",1);
list.add(newRow);
迭代结束后,将ArrayList中的那些数据添加到一个Object数组中,传递给jTable。
for (int i = 0; i < list.size(); i++){
int lineNo= list.get(i).getLineNo();
String statment = list.get(i).getStatement();
int cmplxCount= list.get(i).getCmplxCount();
Object[] data = {lineNo, statement , cmplxCount};
tableModel.add(data);
}