0.1.96 • Published 6 months ago

data-clumps-npm v0.1.96

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

Important Notice: Project Partially Discontinued

Attention Users: This project, Cerberus Data Clumps Detection and Refactoring (CDCD-R), will be partially discontinued due to significant performance improvements in our new project: Data Clumps Doctor.


Why the Change?

While CDCD-R served as a valuable proof of concept for analyzing Java files with Antlr4 within the web, our new project offers a more robust and efficient solution. The new project has shown speed increases of up to 98% in parsing files, making it a superior choice for your data clump detection and refactoring needs.

What Does This Mean for Current Users?

  • Existing features and functionalities in CDCD-R will remain available, but future updates and enhancements will be limited.
  • We strongly recommend transitioning to PMD Data Clumps for improved performance and continued support.

For more details, please visit the PMD Data Clumps GitHub Repository.

About

A library to parse files and folders to check for data clumps and refactor them.

Dataset

We're excited to share our public Data-Clumps Dataset with you. We invite you to explore it and consider contributing to our growing repository. By uploading your analyzed data, you can help enrich our dataset and support the broader community in their software analysis endeavors. Together, we can enhance our understanding of data-clumps and their impact on software development.

Demo

https://fireboltcasters.github.io/data-clumps/

Reporting Format

In our endeavor to ensure precision and standardization in reporting data clumps, we utilize the following specification: Data-Clumps-Type-Context.

Visualizer

Our tool offers a unique visualizer tool to make the analysis and refactoring of data clumps more intuitive and accessible. Our data clumps visualizer provides a comprehensive overview of your code's data clumps, allowing you to easily pinpoint areas for improvement.

You can access our visualizer here: Data Clumps Visualizer

Installation & Usage

You can either choose to run it via command-line (cli) or inside your project via imports.

Via CLI

You can simply call the detection via command line.

npx data-clumps <PATH_TO_PROJECT>

Inside your Project

npm install data-clumps

Have a look at the development example in development.ts

import {SoftwareProject} from "data-clumps";

async function main(){
  console.log("1. Create empty project");
  let project: SoftwareProject = new SoftwareProject(["java"]);
  console.log("2. Add files to project");
  // for all files from your project
  let virtualPathToFile = "/myExampleProject/src/HelloWorld.java";
    let fileContent = "public class HelloWorld{ ... }";
    project.addFileContent(virtualPathToFile, fileContent);
  
  console.log("3. Let the file be parsed");
  await project.parseSoftwareProject();
  
  console.log(4. Detect Data-Clumps");
  let dataClumpsContext = await project.detectDataClumps()
  
  console.log("5. Detected Data-Clumps");
  console.log(dataClumpsContext);
}

main();

Roadmap

  • Integrate website-to-gif: https://github.com/PabloLec/website-to-gif
  • Visualization extracted to: A library to visualize data clumps which is used in data-clumps-visualizer.
  • Support cli
    • Improve options and add documentation
  • Parser
    • Support Java
      • Integrated Antlr4
      • Converting of JavaCST to JavaAST
      • Creating Data Clumps AST
      • Find minimum of LCSD found files
      • Investigate why more files than LCSD have been found
      • Support anonymous classes
      • Support Generics
      • Implement Java Refactor Interface
    • Support TypeScript
    • Support JavaScript
    • Support Python
    • Support C#
    • Support C++
  • Refactoring
    • Support Java

Roadmap - Future improvements

License

All Rights Reserved.

Copyright (c) 2023 Nils Baumgartner

No part of this software may be reproduced, distributed, or transmitted in any form or by any means, including photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the copyright holder, except in the case of brief quotations embodied in critical reviews and certain other noncommercial uses permitted by copyright law.

For permission requests, please contact the copyright holder at nilsbaumgartner1994@gmail.com

Contributors

The FireboltCasters