Giana.Api 0.0.2

There is a newer version of this package available.
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                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Giana.Api" Version="0.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Giana.Api --version 0.0.2                
#r "nuget: Giana.Api, 0.0.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// 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

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.