Skip to content

CLI

1. Versionamento

Versão Data Descrição Autor(es)
0.1 23/05/2023 Criação do documento Jonathan e Marcos
0.2 26/05/2023 Revisão do documento Paulo Batista
0.3 09/07/2023 Adição de comando do parser Luis Marques

2. Manual de Uso da CLI

2.1 O que é o microsserviço CLI

Esse microsserviço dentro do produto MeasureSoftGram se trata da interface de linha de comandos, que utiliza o pacote de cálculos da Core por trás dos panos, para gerar análises de qualidade dos repositórios. Se trata de um pacote Pypi totalmente independente, que tem como foco a utilização local (sem necessidade de internet).

2.2 Como executar a CLI

Para iniciar a utilização da CLI, baixe o pacote do repositório Pypi.

pip install msgram

Agora todas as funcionalidades disponíveis da CLI do MeasureSoftGram estão disponíveis pelo seguinte comando: msgram

msgram -h

msgram_help

2.3 Comandos existentes na CLI

Como demonstrado na foto anterior, a CLI do MeasureSoftGram possui três comandos:

2.3.1 msgram init

Responsável por inicializar os arquivos e pastas de configuração que são utilizados nos comandos seguintes. O arquivo msgram.json de configuração das entidades é criado nessa etapa.

msgram init -h

msgram_init

Exemplo de configuração de qualidade gerado pelo init:

{
    "characteristics": [
        {
            "key": "reliability",
            "weight": 50,
            "subcharacteristics": [
                {
                    "key": "testing_status",
                    "weight": 100,
                    "measures": [
                        {
                            "key": "passed_tests",
                            "weight": 33,
                            "min_threshold": 0,
                            "max_threshold": 1,
                        },
                        {
                            "key": "test_builds",
                            "weight": 33,
                            "min_threshold": 0,
                            "max_threshold": 300000,
                        },
                        {
                            "key": "test_coverage",
                            "weight": 34,
                            "min_threshold": 60,
                            "max_threshold": 100,
                        },
                    ],
                }
            ],
        },
        {
            "key": "maintainability",
            "weight": 50,
            "subcharacteristics": [
                {
                    "key": "modifiability",
                    "weight": 100,
                    "measures": [
                        {
                            "key": "non_complex_file_density",
                            "weight": 33,
                            "min_threshold": 0,
                            "max_threshold": 10,
                        },
                        {
                            "key": "commented_file_density",
                            "weight": 33,
                            "min_threshold": 10,
                            "max_threshold": 30,
                        },
                        {
                            "key": "duplication_absense",
                            "weight": 34,
                            "min_threshold": 0,
                            "max_threshold": 5,
                        },
                    ],
                }
            ],
        }
2.3.1.1 thresholds

Através do arquivo de configuração é possível modificar os valores de referência mínimo e máximo das medidas do modelo, permitindo a personalização das variáveis de acordo com a preferência dos usuários.

Para modificar os thresholds basta adicionar a chave thresholds no json de configuração demonstrado acima e passando como valor o nome dos thresholds que deseja modificar e seus respectivos valores como mostrado abaixo.

{
"key": "duplication_absense",
"weight": 34,
"min_threshold": 0,
"max_threshold": 5,
}

````

**OBS:**

1. Caso o valor não for passado o msgram irá utilizar os valores padrões.

2. O threshold nimo não pode ser maior, ou igual, o threshold máximo.

3. Os valores nimos e máximos também são utilizados para interpolação, portanto alguns são limitados entre 0 e 100 e outros são fixos.

3. Segue os valores padrões de cada threshold:

```json
   {
        "min_complex_files_density": 0, #is complex if file cyclomatic complexity divided by number of functions is greater than max
        "max_complex_files_density": 10,
        "min_comment_density": 10, #considers the files with comment density between min and max for the measure
        "max_comment_density": 30,
        "min_duplicated_lines": 0, #is duplicated if file is over max
        "max_duplicated_lines": 5.0,
        "min_passed_tests": 0, #only used for interpolation, do not modify
        "max_passed_tests": 1,
        "min_fast_test_time": 0, #the test is fast if time is bellow max
        "max_fast_test_time": 300000,
        "min_coverage": 60, #consider files with coverage above min for the measure
        "max_coverage": 100
    }
````

#### 2.3.2 msgram extract

<p align="justify" style="text-indent: 20px">
    Responsável por extrair os dados advindos dos analisadores de código (parsers). Até a versão 1.0.0, o MeasureSoftGram suporta as seguintes entidades:
</p>

??? info "Características disponíveis"

    - Reliability
    - Maintainability

??? info "Subcaracterísticas disponíveis"

    - testing_status
    - modifiability

??? info "Medidas disponíveis" - passed_tests - tests_build - test_coverage - non_complex_file_density - commented_file_density - duplication_absense

??? info "Métricas disponíveis" - tests [sonarqube] - tests_failures [sonarqube] - test_errors [sonarqube] - test_execution_time [sonarqube] - coverage [sonarqube] - functions [sonarqube] - complexity [sonarqube] - comment_lines_density [sonarqube] - duplicated_lines_density [sonarqube]

```sh
msgram extract -h

msgram_extract

2.3.3 msgram calculate

Responsável por calcular, através do msgram-core (versão empacotada dos cálculos), a qualidade dos arquivos extraídos. Também, por esse comando o MeasureSoftGram extrai os dados (CSV ou JSON) calculados.

msgram calculate -h

msgram_calculate