From 619845297d24eb625ec95e6ba7fa4815373591e1 Mon Sep 17 00:00:00 2001 From: Vincent Han Date: Fri, 25 Oct 2024 10:25:28 +0900 Subject: [PATCH] Fix rerun language handling Related to #15 Fix the issue where the `--rerun` option incorrectly defaults to Java language. * Update `CodeAnalystFactory.java` to throw an exception for unsupported languages. * Modify `JavaCodeAnalystImpl.java` to use the language type from the `parsedValue` object. * Update `CliParseProcessorForJava.java` to check for language mismatch and print an error message. * Update `CliParseProcessorForJavaScript.java` to check for language mismatch and print an error message. * Update `CliParseProcessorForCSharp.java` to check for language mismatch and print an error message. * Update `CliParseProcessorForPython.java` to check for language mismatch and print an error message. --- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/RedCA-Family/code-analyst/issues/15?shareId=XXXX-XXXX-XXXX-XXXX). --- .../com/samsungsds/analyst/code/api/CodeAnalystFactory.java | 4 +++- .../analyst/code/api/impl/JavaCodeAnalystImpl.java | 3 +-- .../analyst/code/main/cli/CliParseProcessorForCSharp.java | 4 ++++ .../analyst/code/main/cli/CliParseProcessorForJava.java | 6 +++++- .../code/main/cli/CliParseProcessorForJavaScript.java | 4 ++++ .../analyst/code/main/cli/CliParseProcessorForPython.java | 4 ++++ 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/samsungsds/analyst/code/api/CodeAnalystFactory.java b/src/main/java/com/samsungsds/analyst/code/api/CodeAnalystFactory.java index 2076084..80d46eb 100644 --- a/src/main/java/com/samsungsds/analyst/code/api/CodeAnalystFactory.java +++ b/src/main/java/com/samsungsds/analyst/code/api/CodeAnalystFactory.java @@ -32,8 +32,10 @@ public static CodeAnalyst create(Language language) { return new JavaScriptCodeAnalystImpl(); } else if (language == Language.CSHARP) { return new CSharpCodeAnalystImpl(); - } else { // Python + } else if (language == Language.PYTHON) { return new PythonCodeAnalystImpl(); + } else { + throw new IllegalArgumentException("Unsupported language: " + language); } } } diff --git a/src/main/java/com/samsungsds/analyst/code/api/impl/JavaCodeAnalystImpl.java b/src/main/java/com/samsungsds/analyst/code/api/impl/JavaCodeAnalystImpl.java index 4d64b95..338cc38 100644 --- a/src/main/java/com/samsungsds/analyst/code/api/impl/JavaCodeAnalystImpl.java +++ b/src/main/java/com/samsungsds/analyst/code/api/impl/JavaCodeAnalystImpl.java @@ -48,7 +48,7 @@ public String analyze(String where, ArgumentInfo argument, AbstractFileInfo targ System.out.println(" - with seperated output option"); } - CliParser cli = new CliParser(arguments, Language.JAVA); + CliParser cli = new CliParser(arguments, argument.getMode().getLanguageType()); cli.setInstanceKey(getUniqueId()); @@ -361,4 +361,3 @@ private String getModeParameter(AnalysisMode mode, boolean hasWebappAugument) { return parameter.toString(); } -} diff --git a/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForCSharp.java b/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForCSharp.java index fe4be9b..572552f 100644 --- a/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForCSharp.java +++ b/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForCSharp.java @@ -217,6 +217,10 @@ public boolean parseAndSaveParsedValue(CliParser cliParser, Options options, Str if (cmd.hasOption("r")) { getOptionsFromOutFile(parsedValue, cmd.getOptionValue("r")); + if (!parsedValue.getLanguage().equalsIgnoreCase("csharp") && !parsedValue.getLanguage().equalsIgnoreCase("c#")) { + System.out.println("Error: Language mismatch. Expected C# but found " + parsedValue.getLanguage()); + return false; + } } if (cmd.hasOption("catalog")) { diff --git a/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForJava.java b/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForJava.java index 6c4cbf9..979eab9 100644 --- a/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForJava.java +++ b/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForJava.java @@ -248,6 +248,10 @@ public boolean parseAndSaveParsedValue(CliParser cliParser, Options options, Str if (cmd.hasOption("r")) { getOptionsFromOutFile(parsedValue, cmd.getOptionValue("r")); + if (!parsedValue.getLanguage().equalsIgnoreCase("java")) { + System.out.println("Error: Language mismatch. Expected Java but found " + parsedValue.getLanguage()); + return false; + } } if (cmd.hasOption("catalog")) { @@ -278,6 +282,6 @@ public boolean parseAndSaveParsedValue(CliParser cliParser, Options options, Str @Override public String getModeErrorMessage() { return "'mode' option can only have 'code-size', 'duplication', 'complexity', 'sonarjava', 'pmd', 'findbugs', 'findsecbugs', " + - "'javascript'(sonarjs), 'css', 'html', 'dependency', 'unusedcode', 'ckmetrics', and 'checkstyle' (with or without '-')"; + "'javascript'(sonarjs), 'css', 'html', 'dependency', 'unusedcode', 'ckmetrics, and 'checkstyle' (with or without '-')"; } } diff --git a/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForJavaScript.java b/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForJavaScript.java index cc84348..8b42ddb 100644 --- a/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForJavaScript.java +++ b/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForJavaScript.java @@ -216,6 +216,10 @@ public boolean parseAndSaveParsedValue(CliParser cliParser, Options options, Str if (cmd.hasOption("r")) { getOptionsFromOutFile(parsedValue, cmd.getOptionValue("r")); + if (!parsedValue.getLanguage().equalsIgnoreCase("javascript")) { + System.out.println("Error: Language mismatch. Expected JavaScript but found " + parsedValue.getLanguage()); + return false; + } } if (cmd.hasOption("catalog")) { diff --git a/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForPython.java b/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForPython.java index 241cec2..cd93c05 100644 --- a/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForPython.java +++ b/src/main/java/com/samsungsds/analyst/code/main/cli/CliParseProcessorForPython.java @@ -216,6 +216,10 @@ public boolean parseAndSaveParsedValue(CliParser cliParser, Options options, Str if (cmd.hasOption("r")) { getOptionsFromOutFile(parsedValue, cmd.getOptionValue("r")); + if (!parsedValue.getLanguage().equalsIgnoreCase("python")) { + System.out.println("Error: Language mismatch. Expected Python but found " + parsedValue.getLanguage()); + return false; + } } if (cmd.hasOption("catalog")) {