/project-control

A tool to assess the effort spent to develop a software project and its readiness

Primary LanguageTypeScript

What is this

A tool to assess the effort spent to develop software project and its readiness.

Analyzes and graphically represents

  1. Commit count per developer per week
  2. Churn (lines changed) per developer per week
  3. Owned code per developer per week
  4. Rework code done by developers

DEMO site credentials

Credentials: admin/admin

Building project

Build (with tests)

./gradlew clean syncNpm build

Build and run (without tests)

./gradlew clean syncNpm build -x test bootRun

Build monolith JAR

./gradlew clean syncNpm -x test bootJar

Build docker

./gradlew clean syncNpm syncJar buildImage

Running project

  1. Ensure you have Java 11 installed
  2. Start Neo4j database i.e. using docker (ready to use sample deployment is in docker-compose.yml)
  3. Do Build and run (without tests) to start application
  4. Open UI at http://localhost:8080
  5. Login with admin/admin credentials

login with admin/admin

  1. Click on Add Project Button (Open Projects page from menu if necessary)

Click on Add Project Button

  1. Fill in new project to analyze details, click Add button when done

Fill in new project to analyze details and then Add

  1. Start project analysis - click Restart analysis button

Click Restart analysis button

  1. Wait for analysis to be finished

Click Wait for analysis to be finished

  1. Create new user from aliases - open User mappings

Click User mappings

  1. Create new user from aliases - Create new user

Click Create new user

  1. Create new user from aliases - merge aliases to user

Click Merge aliases to user

  1. See the reports

Click Reports

Exclusion/Inclusion rule examples

Inclusion:

package com.project_control.rules

import  com.valb3r.projectcontrol.domain.rules.RuleContext

dialect  "mvel"


rule "Only .java files"
    no-loop
    when
       $c: RuleContext(path matches '.+\\.java')
    then
       $c.include = true;
       update($c)
end

Exclusion:

package com.project_control.rules

import  com.valb3r.projectcontrol.domain.rules.RuleContext

dialect  "mvel"


rule "Not in resources files"
    no-loop
    when
       $c: RuleContext(path matches '.+/resources/.+')
    then
       $c.exclude = true;
       update($c)
end