Skip to content

UniversidadeAberta/qualidade

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Qualidade.C

Verifica um programa em C existem erros de qualidade.

Projeto desenvolvido de forma aberta, no espaço café de informática (2012)

Contribuições de código:

  • José Coelho
  • António Dias

É tido em conta o seguinte:

  • Identificar apenas a primeira ocorrência de cada erro.
  • Eliminar falsos positivos em strings e comentários
  • Eliminar macros.

Erros identificados: #EQ1: funções com parâmetros no nome #EQ2: variáveis globais #EQ3: variáveis com nomes quase iguais #EQ4: nomes sem significado #EQ5: goto #EQ6: funções muito grandes #EQ7: funções com muitos argumentos #EQ8: indentação variável #EQ9: código repetido seguido #EQ10: código repetido não seguido #EQ11: system #EQ22: duas instruções na mesma linha #EQ23: Ciclos contendo apenas uma variável lógica como teste de paragem #EQ26: nomes muito longos

Funções gerais:

void AnaliseErrosQualidade(
    LinhaDeCodigo *lista,  
    LinhaDeCodigo *tipos, 
    ErroQualidade erros[MAX_ERROS]);
void AnalisaFicheiro(char *nome);

Erros de qualidade de código: void MostraErroQualidade( LinhaDeCodigo *lista, int numeroErro, ErroQualidade erro); void UtilizaInstrucao( LinhaDeCodigo *lista, ErroQualidade erros[MAX_ERROS], char *instrucao, int erro) void ElementosGlobais( LinhaDeCodigo *lista, ErroQualidade erros[MAX_ERROS], LinhaDeCodigo *tipos); void NomesQuaseIguais( LinhaDeCodigo *variaveis, ErroQualidade erros[MAX_ERROS]); void NomesMuitoLongos( LinhaDeCodigo *variaveis, ErroQualidade erros[MAX_ERROS]); LinhaDeCodigo *AdicionarVariaveisLocais( LinhaDeCodigo *lista, int i, LinhaDeCodigo **variaveis, int *chavetas); LinhaDeCodigo *ExtraiTestesDeParagem( LinhaDeCodigo *lista, LinhaDeCodigo *testesDeParagem); int NomeSemSignificado( char *texto, LinhaDeCodigo *testesDeParagem, Palavra **dicionario); void ElementosLocais( LinhaDeCodigo *lista, ErroQualidade erros[MAX_ERROS], LinhaDeCodigo *tipos); void DuasInstrucoes( LinhaDeCodigo *lista, ErroQualidade erros[MAX_ERROS]); void VerificaIndentacao( LinhaDeCodigo *lista, LinhaDeCodigo *original, ErroQualidade erros[MAX_ERROS]); void VerificaCodigoRepetido( LinhaDeCodigo *lista, ErroQualidade erros[MAX_ERROS]);

Funções auxiliares no processamento de código C:

int CaracterValido(char caracter);
void EspacosCodigo(LinhaDeCodigo *lista);
int Indentacao(char *texto, int tabSize);
void RemoverStrings(LinhaDeCodigo *lista);
void JuntarExpressoesInstrucoes(LinhaDeCodigo *lista);
void AdicionarBlocos(LinhaDeCodigo *lista);
void SepararInstrucoes(LinhaDeCodigo *lista);
LinhaDeCodigo *RemoverLinhasVazias(LinhaDeCodigo *lista);
LinhaDeCodigo *TiposValidos(LinhaDeCodigo *lista);
int DeclaracaoDeVariavel(char *texto,LinhaDeCodigo *tipos);
int ContaChavetas(char *texto, int parentisis);
int PrefixoIgual(char *nome1, char *nome2);
int ComecaCom(char *nome1, char *nome2);
int Instrucao(char *texto);

Funções da estrutura LinhaDeCodigo:

LinhaDeCodigo *LCAdiciona(LinhaDeCodigo *lista, char*texto, int linha);
LinhaDeCodigo *LCRemove(LinhaDeCodigo *lista);
LinhaDeCodigo *LCLiberta(LinhaDeCodigo *lista);
LinhaDeCodigo *LCInverte(LinhaDeCodigo *lista);
LinhaDeCodigo *LCCopia(LinhaDeCodigo *lista);
LinhaDeCodigo *LCPosicao(LinhaDeCodigo *lista,int i);

About

Programa para avaliar a qualidade de código de uma source em C

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages