Java 将由于控制结构类型而导致的代码复杂性计数逐行获取到表视图中

Java 将由于控制结构类型而导致的代码复杂性计数逐行获取到表视图中,java,swing,desktop-application,Java,Swing,Desktop Application,我已经使用NetbeansIDE使用JavaSwing开发了一个桌面应用程序。它的目的是测量由于控制结构类型而导致的程序语句的复杂性。对于带有“if”、“For”、“while”和“catch”的程序语句,将分别分配权重1、2、2和1。此外,为具有“n”个案例数的“switch”语句的程序语句分配权重“n”。所有其他语句的权重均为零 我已经实现了上述问题的解决方案,我需要以表格形式演示“每个程序语句”的复杂性。为此,我使用了一个jTable,列名为“行号”、“程序语句”和“复杂性计数” 虽然我已

我已经使用NetbeansIDE使用JavaSwing开发了一个桌面应用程序。它的目的是测量由于控制结构类型而导致的程序语句的复杂性。对于带有“if”、“For”、“while”和“catch”的程序语句,将分别分配权重1、2、2和1。此外,为具有“n”个案例数的“switch”语句的程序语句分配权重“n”。所有其他语句的权重均为零

我已经实现了上述问题的解决方案,我需要以表格形式演示“每个程序语句”的复杂性。为此,我使用了一个jTable,列名为“行号”、“程序语句”和“复杂性计数”

虽然我已经计算了复杂度的总数,但我不知道如何逐行计算并将其显示在jTable中。应根据每个行号和语句显示与每个程序语句相关的复杂度计数

这是我的密码。

我已经实现了从733行开始加载表数据的功能。(对jButton11执行的操作)

我期望在表视图中,针对每个行号和程序语句,输出每个程序语句的复杂性


我似乎无法理解这一点。如果有任何帮助,我们将不胜感激。

我可以看到,在实现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类,将内容显示在表行中

public class TableRow {
   private int lineNo;
   private String statement;
   private int cmplxCount;

   //You may implement the getters and setters as well
}
当程序迭代计算复杂性的每一行时,请确保创建一个新的TableRow对象和必要的数据,并将它们添加到ArrayList中

ArrayList list=new ArrayList();
//每次迭代一行以计算复杂性时,创建一个对象。
TableRow newRow=新的TableRow(4,“for循环”,1);
list.add(newRow);
迭代结束后,将ArrayList中的这些数据添加到对象数组中,并将它们传递到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);
}
for(int i=0;i
这是关于McCabe/圈复杂度的吗?您正在迭代代码行,对吗?确定这一行的复杂程度,这样你就可以把它加到总数中,对吗?所以我不知道记录行号/复杂度对列表有什么问题,所以可以在表中显示。到底是什么阻止了您这样做?我已经得到了代码的总复杂性,但我不知道如何将其加载到表视图中,以便逐行显示复杂性。能不能提供一些支持?我想,计算已经很准确了。这只是需要针对每个程序语句将计数加载到表中。(每行分别计数)“这是我的代码。[链接]”不。所有相关代码(a)都应包含在问题的此处。请添加MRE。非常感谢。现在只有我知道如何处理这个问题了。谢谢你,小伙子,这很有帮助。
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);
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);
}