redun-pendancy
is a tool for analyzing and managing dependencies in software projects.
It identifies issues, offers actionable recommendations, and simplifies project maintenance with an intuitive interface.
- Getting Started
- Preview
- Features
- Supported Files
- Planned Features
- Developer Reference
- Contributing
- License
-
Navigate to the releases section of this repository.
You can also find the latest release on the right-hand side of the repository page. -
Download the latest version of the
redun-pendancy
executable for your platform.
No installation is required, as the application is portable.
-
Drag & drop a supported file onto the executable or into the main window (after startup).
Alternatively, use the command line for a CLI-only experience(*):./redun-pendancy <project-file>
-
Click the Analyze button to detect issues and improvements.
-
Review the results:
- Check the "Suggestions section" for improvements.
- Inspect the "Actions section" for a list of actions to apply.
-
Click on the "Apply actions" to execute the selected actions.
-
Review the modified project file(s).
(To be enhanced in the future)
redun-pendancy
includes a suite of analyzers to handle various aspects of dependency management.
-
Bubble-Up Analyzer
- Detects dependencies shared across multiple projects.
- Suggests moving them up to common ancestors to reduce duplication.
-
Redundancy Analyzer
- Detects redundant dependencies that are indirectly included through others.
- Recommends removal with detailed reasoning and version considerations.
-
Unsorted Dependencies Analyzer
- Flags projects with unsorted dependencies.
- Recommends sorting based on dependency group (projects vs packages).
-
Unused Global Packages Analyzer
- Identifies global packages not referenced by any projects.
- Recommends their removal to simplify and maintain a clean setup.
- Upgrade Analyzer
- Highlights "skipped" (outdated) packages.
- Suggests dependency upgrades to stay up to date and ensure stability.
-
Dependency Tree
Visualize dependencies in a collapsible tree format. -
Search & Filter
Easily find specific packages in the dependency tree. -
Action Management
Apply analyzer suggested actions with just a few clicks. -
Dependency Information
View details about a selected dependency - version, framework & total references. -
Overview Report
Displays dependencies ordered by reference count, from most to least referenced.
(Might be enhanced in the future)
redun-pendancy
currently supports the following files:
.sln
(.NET solution files)
The following features are planned for future updates to redun-pendancy
:
- CLI mode
- Maven support (
pom.xml
) - NPM support (
package.json
) - Python support (
requirements.txt
) - Support for "Legacy .NET project files" (< Visual Studio 2017)
redun-pendancy
follows a modular & extensible architecture based on clearly defined components.
-
Package Info
Contains package details such as - name, version, framework, dependencies & type.
This is the core data structure used throughout the application. -
Project Handlers
Objects that load "project collections" and provide functionality to manage project dependencies. -
Project Readers
Objects that parse project files intoPackageInfo
instances. -
Package Loaders
Objects that parse package files to identify their dependencies. -
Package Container
Repository that handles registration & lookup ofPackageInfo
instances. -
Analyzers
Objects that examine projects & packages to generateProjectActions
and written suggestions. -
Project Actions - (Command pattern)
Executable tasks generated by analyzers. They contain the task's description, reasoning and execution logic.
Actions are applied by interacting with aProjectHandler
.
/analysis/
- Contains analysis specific data structures and helpers./actions/
- Contains the definition of executable project tasks./analyzers/
- Includes the implementation of available project analyzers.
/gui/
- Contains custom widgets and utility functions for Fyne./handlers/
– Includes project-specific handlers (e.g., .NET, Maven)./models/
– Defines core/main data models used across the application./helpers/
- Contains specialized collections and helpers for handling files, packages, and dependencies./utils/
– Contains general-purpose utilities, collections, and application helper functions.
Contributions to improve the tool or its documentation are welcome. Feel free to:
- Fork the repository.
- Make your changes.
- Submit a pull request.
This project is licensed under the MIT License.
For more details, open the LICENSE file in the repository.