Giana.Api
0.0.2
See the version list below for details.
dotnet add package Giana.Api --version 0.0.2
NuGet\Install-Package Giana.Api -Version 0.0.2
<PackageReference Include="Giana.Api" Version="0.0.2" />
paket add Giana.Api --version 0.0.2
#r "nuget: Giana.Api, 0.0.2"
// Install Giana.Api as a Cake Addin #addin nuget:?package=Giana.Api&version=0.0.2 // Install Giana.Api as a Cake Tool #tool nuget:?package=Giana.Api&version=0.0.2
giana
giana stands of GIt ANAlysis. Giana uses git log
to extract and process the data.
giana is written in C# and includes:
- A command line tool (
Giana.App.Cmd.exe
) - A public API (Giana.Api nuget package) that you can use in a C# project
Key feature
Giana analyzers calculate coupling and cohesion between files. It quickly becomes clear where the software design needs to be improved. Filters allow you to analyze specific areas of your source code.
Example
Imagine a repository where you defined an IConfig
interface for various supported devices:
Shared\Config\IConfig.cs
Devices\Mouse\MouseConfig.cs
Devices\Keyboard\KeyboardConfig.cs
Devices\Speaker\SpeakerConfig.cs
An analysis after some time might look like this.
file-ranking A file-ranking analysis across the entire repository shows this result:
Name | Changes |
---|---|
Devices\Keyboard\KeyboardConfig.cs | 153 |
Devices\Mouse\MouseConfig.cs | 132 |
Devices\Speaker\SpeakerConfig.cs | 121 |
Shared\Config\IConfig.cs | 105 |
... | ... |
The device configuration files were the most frequently changed in the repository.
file-coupling
A file-coupling analysis which includes Shared\Config\*
and Devices\*
shows this result:
Name1 | Name2 | Changes |
---|---|---|
Devices\Speaker\SpeakerConfig.cs | Devices\Mouse\MouseConfig.cs | 108 |
Devices\Keyboard\KeyboardConfig.cs | Devices\Speaker\SpeakerConfig.cs | 98 |
Devices\Keyboard\KeyboardConfig.cs | Devices\Mouse\MouseConfig.cs | 95 |
Shared\Config\IConfig.cs | Devices\Mouse\MouseConfig.cs | 91 |
Shared\Config\IConfig.cs | Devices\Speaker\SpeakerConfig.cs | 88 |
Shared\Config\IConfig.cs | Devices\Keyboard\KeyboardConfig.cs | 82 |
... | ... | ... |
The implementations have a strong coupling with each other and with the interface.
This simple analysis reveals a weak point: the three device implementations and the interface are highly coupled and have a high volatility. Was this shared interface a good choice? If a forth device implementation was added, things would get even worse.
Where to get giana
- Giana.API Nuget: https://www.nuget.org/packages/Giana.Api
- Source code: https://github.com/mrstefangrimm/giana
- Command-line tool: Currently you have to get the source code and build it yourself
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Giana.Api:
Package | Downloads |
---|---|
Giana.App
C# Application API for Git Analysis (giana) |
GitHub repositories
This package is not used by any popular GitHub repositories.