From 8ee8648b2bdf1a4617e17bf2dfbd5f34c41248fd Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 18 Oct 2023 00:35:08 +0300 Subject: [PATCH] Class/method counter, kind of buggy, unpleased --- .../main/java/org/lumijiez/base/CodeFile.java | 2 + .../main/java/org/lumijiez/util/Utils.java | 43 ++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Lab3/src/main/java/org/lumijiez/base/CodeFile.java b/Lab3/src/main/java/org/lumijiez/base/CodeFile.java index 9e5703f..db20eec 100644 --- a/Lab3/src/main/java/org/lumijiez/base/CodeFile.java +++ b/Lab3/src/main/java/org/lumijiez/base/CodeFile.java @@ -16,6 +16,8 @@ public class CodeFile extends Document{ info.append("Extension: ").append(getExtension().toUpperCase()).append("
"); info.append("File size: ").append(getFilesizeKB()).append(" KB").append("
"); info.append("Lines: ").append(Utils.countLines(this)).append("
"); + info.append("Classes: ").append(Utils.countClasses(this)).append("
"); + info.append("Methods: ").append(Utils.countMethods(this)).append("
"); info.append("Created at: ").append(getCreatedTime()).append("
"); info.append("Modified at: ").append(getModificationTime()).append("
"); return info.toString(); diff --git a/Lab3/src/main/java/org/lumijiez/util/Utils.java b/Lab3/src/main/java/org/lumijiez/util/Utils.java index e51298a..2a6f6bc 100644 --- a/Lab3/src/main/java/org/lumijiez/util/Utils.java +++ b/Lab3/src/main/java/org/lumijiez/util/Utils.java @@ -45,7 +45,48 @@ public class Utils { } catch (IOException e) { throw new RuntimeException(e); } - } + public static int countClasses(Document doc) { + try { + int classCount = 0; + + BufferedReader reader = new BufferedReader(new FileReader(doc)); + String line; + + while ((line = reader.readLine()) != null) { + if (line.contains("class ")) { + classCount++; + } + } + reader.close(); + return classCount; + } catch (IOException e) { + e.printStackTrace(); + } + return 0; + } + + public static int countMethods(Document doc) { + try { + int methodCount = 0; + + BufferedReader reader = new BufferedReader(new FileReader(doc)); + String line; + + while ((line = reader.readLine()) != null) { + if (line.matches(".*\\b\\w+\\s+\\w+\\(.*\\)\\s*\\{.*")) { + methodCount++; + } else if (line.contains("def ")) { + methodCount++; + } + } + + reader.close(); + return methodCount; + } catch (IOException e) { + e.printStackTrace(); + } + return 0; + } }