23.04.2017, 00:46
(
Последний раз редактировалось Dayvison_; 24.04.2017 в 14:07.
)
Sу estava pensando mesmo aqui, o quгo ъtil seria uma avaliaзгo do seu script pawn com "code coverage", para criar esta ferramenta eu me basearia nos mйtodos, formas de uso, configuraзхes etc... de Coverage.py
Os passos para atingir este resultado seria o mesmo, porйm em pawn atualmente nгo existem mйtodos para fazer um trace do cуdigo pawn linha por linha, entгo isto й o que precisa ser feito, porйm neste passo eu me perdi totalmente nгo consegui imaginar um mйtodo para qual, alguйm tem uma ideia uma luz?
@Edit tive uma ideia que parece funcional, porйm nгo viбvel com um servidor em produзгo
Programa para compilar o cуdigo
A ferramenta basicamente faria isto:
Os passos para atingir este resultado seria o mesmo, porйm em pawn atualmente nгo existem mйtodos para fazer um trace do cуdigo pawn linha por linha, entгo isto й o que precisa ser feito, porйm neste passo eu me perdi totalmente nгo consegui imaginar um mйtodo para qual, alguйm tem uma ideia uma luz?
@Edit tive uma ideia que parece funcional, porйm nгo viбvel com um servidor em produзгo
Programa para compilar o cуdigo
- compila primeiramente com -l ativo
- apуs percorre todas linhas inserindo em cada linha valida para o run time o seguinte trecho:
PHP код:coverageExec(__line);
- As linhas invбlidas seriam definidas como executada pelo prуpio programa
- O cуdigo de exemplo basicamente seria este
PHP код:main()
{coverageExec(__line);
if(true) coverageExec(__line);
{ coverageExec(__line);
coverageExec(__line); print("example-1");
} coverageExec(__line);
else coverageExec(__line);
{ coverageExec(__line);
coverageExec(__line); print("example-2");
} coverageExec(__line);
coverageExec(__line);}
A ferramenta basicamente faria isto:
- Temos o seguinte cуdigo
PHP код:main()
{
if(true)
{
print("example-1");
}
else
{
print("example-2");
}
}
- Logo ele teria 63.63 % de cobertura, jб que a condicional if nunca permitiria que o else seja executado, tendo uma saida como:
> = executado
! = perdido
PHP код:> main()
> {
> if(true)
> {
> print("example-1");
> }
! else
! {
! print("example-2");
! }
> }