Skip to content

Conversation

leohmoreira
Copy link

A transformação proposta está baseada na apresentação que fiz sobre detecção de código morto.
Tive que fazer algumas adaptações porque achei que tentar implementar o conceito de 'label' seria muito custoso.
A abordagem seguida foi:

  1. verificar todas as atribuições feitas; (LeftHandSide operator Expression)
  2. essa atribuição só será válida se o LeftHandSide estiver sendo atribuído a outra variável, ou seja, ela deve estar no lado direito de alguma atribuição;
  3. Restringi o lado direito da atribuição a variáveis e chamada de métodos com uma única variável como parâmetro;
  4. PostfixExpressions também são verificadas, por exemplo, x++ e y--;

Problemas enfrentados:

  1. Como não consegui adicionar // no começo da linha, usei a expressão "eliminado" para mostrar que a linha tem que ser removida;
  2. A verificação se a variável é usada é feita em toda compilation unit. O ideal seria fazer apenas para o trecho de código a partir da atribuição, mas não tenho idéia de como fazer isso;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant