Skip to content

R package : assess & monitor programming projects with standardized metrics

License

Notifications You must be signed in to change notification settings

Clement-LVD/codexplor

Repository files navigation

codexplor

Lifecycle: experimental CRAN status

🧰🔧🔨 codexplor is a WIP 🧰🔧🔨

codexplor offers R functions dedicated to explore, analyze and monitor a programming project.

Given a programming project, codexplor compute standardized text mining metrics and dataviz’ about the project.

  • Get rid of global complexity with networks of internal dependencies,
  • Assess local complexity with
    • document-level (e.g., identify files with many functions defined in)
    • and function-level metrics (e.g., longest functions, those with numerous parameters or internal dependencies).

codexplor help me to figure out the big picture of a programming project faster, and to manage it more efficiently.

Installation

You can install the development version of codexplor with

devtools::install_github("clement-LVD/codexplor")

The default settings of codexplor are optimized for analyzing a project in R language. Supported languages are : R, Python


Example

1. Turn a programming project into a corpus. Given folder(s) and/or github repo(s) and programming language(s), codexplor::construct_corpus will return a list of dataframes : the programming project is turned into a text-mining corpus.

library(codexplor)
# Construct a corpus with local folder
corpus <- construct_corpus(folders = getwd(), languages = "R" )

This corpus of dataframes is a standardized way to analyze a programming project as a collection of documents and get insights on the functions and the files of the project, see the vignette of construct_corpus().


2. See a dataviz’ from a corpus.list. Given a corpus.list, look at the dataviz’ of an internal.dependencies network with codexplor::get_networkd3_from_igraph :

# Produce an interactive dataviz' with the network of internal.dependencies
dataviz <- get_networkd3_from_igraph(corpus$functions.network
, title_h1 = "codexplor. Graph of internal dependancies : functions network"
, subtitle_h2 = "Color and links = indegrees") 
# herafter an image (non-interactive) of the interactive dataviz ↓

These dataviz are useful for pinpointing where to start a polishing loop, identifying all the functions impacted by upcoming changes, […] or assessing the impact of a new dev loop on the project’s complexity.

Or look for a dataviz of the files with the following :

  get_networkd3_from_igraph(corpus$files.network)

See an example of a files network.


Vignettes

Features

Given programming project(s), codexplor::construct_corpus will compute several standardized metrics and answer a corpus.list of dataframes :

  • The functions data.frame give insights about each functions of the project(s), e.g., number of parameters, number of internal dependencies, length of the code.

  • The files data.frame give insights about each files, e.g., quantify number of functions within files and assess critical internal dependencies.

  • The files.network and functions.network are networks of internal dependencies within the project(s).

Computed Methods Level of insights
. Appreciate global complexity and reveal critical files, e.g., major internal dependancies, clusters of ‘difficult-to-read’ files
. Assess each file, e.g., length and files readability, number of functions within a file
. Assess each function, e.g., number of parameters or number of internal dependencies
. Assess each line, e.g., find the longest

Availables features :

      . . .

Planned features :

. .

Supported language(s) :

   

Other languages are planned.