From 636b2d4cd0c96f621b598b02467fe77b6afef769 Mon Sep 17 00:00:00 2001 From: Ayushi Amin Date: Thu, 16 Jan 2025 18:20:20 -0500 Subject: [PATCH 1/2] Added unlikely changes to MG --- docs/Design/SoftArchitecture/MG.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Design/SoftArchitecture/MG.tex b/docs/Design/SoftArchitecture/MG.tex index 5a61c01e..51e8b442 100644 --- a/docs/Design/SoftArchitecture/MG.tex +++ b/docs/Design/SoftArchitecture/MG.tex @@ -178,9 +178,9 @@ \subsection{Unlikely Changes} \label{SecUchange} decisions will be changed. \begin{description} -\item[\refstepcounter{ucnum} \uctheucnum \label{ucIO}:] Input/Output devices - (Input: File and/or Keyboard, Output: File, Memory, and/or Screen). -\item ... + \item[\refstepcounter{ucnum} \uctheucnum \label{ucPlatform}:] Transitioning from VS Code to another IDE. The plugin is tightly integrated with VS Code's API, making such a change complex. + \item[\refstepcounter{ucnum} \uctheucnum \label{ucCoreLogic}:] Fundamental changes to the core logic of code smell detection. The current architecture is designed around widely accepted principles of software quality. + \item[\refstepcounter{ucnum} \uctheucnum \label{ucPluginType}:] Changing from a plugin-based architecture to a standalone application. This would require rethinking the entire deployment and user interaction model. \end{description} \section{Module Hierarchy} \label{SecMH} From d36e7835b00ca98a52642b2eb04f526578d74ace Mon Sep 17 00:00:00 2001 From: Ayushi Amin Date: Thu, 16 Jan 2025 18:41:25 -0500 Subject: [PATCH 2/2] Added anticipated changes for MG --- docs/Design/SoftArchitecture/MG.tex | 56 +++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/docs/Design/SoftArchitecture/MG.tex b/docs/Design/SoftArchitecture/MG.tex index 51e8b442..c23fc6aa 100644 --- a/docs/Design/SoftArchitecture/MG.tex +++ b/docs/Design/SoftArchitecture/MG.tex @@ -157,12 +157,56 @@ \subsection{Anticipated Changes} \label{SecAchange} change. \begin{description} -\item[\refstepcounter{acnum} \actheacnum \label{acHardware}:] The specific - hardware on which the software is running. -\item[\refstepcounter{acnum} \actheacnum \label{acInput}:] The format of the - initial input data. -\item ... -\end{description} + \item[\refstepcounter{acnum} \actheacnum \label{acUserInterface}:] The user interface of the plugin. Enhancements may be required to improve usability or accommodate new features. Specific anticipated changes include: + \begin{itemize} + \item \textbf{Refactoring Suggestions Display}: Updates to how refactoring suggestions are presented, such as side-by-side views of original and refactored code. + \item \textbf{Theme Support}: Adding compatibility with various VS Code themes, including light and dark modes. + \item \textbf{Visual Indicators}: Implementing color-coded indicators to highlight the impact of energy savings for each refactoring suggestion. + \item \textbf{Interactive Elements}: Introducing interactive components like tooltips or progress indicators to guide users during the refactoring process. + \item \textbf{Customization Options}: Allowing users to configure UI elements, such as adjusting the sensitivity of code smell detection or selecting preferred refactoring styles. + \end{itemize} + + \item[\refstepcounter{acnum} \actheacnum \label{acVSCodePlugin}:] The VS Code plugin's + functionality. Future versions may expand to support more complex refactorings + or additional code smells that users can address with minimal setup. Changes + may involve adding more customizable user settings. + + \item[\refstepcounter{acnum} \actheacnum \label{acRefactorers}:] The refactorers responsible + for detecting and fixing specific code smells. As more code smells are identified + and refactoring techniques are developed, new modules may be added or existing + ones may evolve. For example: + \begin{itemize} + \item \textbf{Base Refactorer} \label{acBaseRefactorer}: Updates to the base refactorer module to + support new refactoring patterns or improved algorithms. + \item \textbf{Complex List Comprehension} \label{acComplexListComprehension}: Adding or modifying + the logic for simplifying complex list comprehensions. + \item \textbf{Long Element Chain} \label{acLongElementChain}: Refining the logic to handle longer + chains of elements and optimize their readability and performance. + \item \textbf{Long Lambda Function} \label{acLongLambdaFunction}: Improvements to better handle + long lambda functions, making them more efficient and readable. + \item \textbf{Long Message Chain} \label{acLongMessageChain}: Extending the module's ability + to identify and refactor long message chains. + \item \textbf{Member Ignoring Method} \label{acMemberIgnoringMethod}: Enhancements to the + module for detecting methods that ignore members, optimizing the code structure. + \item \textbf{Repeated Calls} \label{acRepeatedCalls}: Optimizing detection and handling + of repeated function calls to improve performance. + \item \textbf{String Concatenation in Loop} \label{acStringConcatenationInLoop}: Adjusting + the refactorer's logic to improve handling of string concatenation within loops. + \item \textbf{Long Parameter List} \label{acLongParameterList}: Future extensions to handle + complex parameter lists in a more structured manner, perhaps allowing for simplifications. + \end{itemize} + + \item[\refstepcounter{acnum} \actheacnum \label{acSmell}:] The core logic + for identifying specific code smells. As the system evolves, new code smells may be added to the system’s detection capabilities, necessitating changes to this module. + + \item[\refstepcounter{acnum} \actheacnum \label{acAnalyzer}:] The analyzers used to + gather metrics and assess code quality. + + \item[\refstepcounter{acnum} \actheacnum \label{acTesting}:] The testing module + responsible for ensuring the correct functionality of the refactorers. As new + features and code smells are added, this module may need updates to test these + changes thoroughly. +\end{description} \wss{Anticipated changes relate to changes that would be made in requirements, design or implementation choices. They are not related to changes that are made