Veo su punto y totalmente de acuerdo en que una herramienta de este tipo sería útil cuando se trabaja con código anterior. Desafortunadamente, no conozco ninguna herramienta existente (debería agregar una herramienta gratuita aquí, las herramientas de análisis estático deberían poder hacerlo fácilmente, pero no conozco ninguna herramienta gratuita de análisis de código estático) que sea capaz de hacerlo .
Pero supongo que podría escribir fácilmente una herramienta de este tipo en unos minutos. Una pequeña GUI con un memo y un botón debería ser suficiente. Luego solo copie las sugerencias del compilador en la nota y presione el botón. La herramienta luego analiza cada línea. Puede verificar fácilmente si la línea contiene la pista que está buscando y cada línea tiene la misma estructura, por lo que el análisis debe ser relativamente fácil. A continuación, puede extraer el nombre del archivo y el número de línea, abrir el archivo y eliminar la declaración de la variable. Esto puede ser un poco complicado en el caso de múltiples declaraciones de variables en una línea, pero creo que es factible.
No sé si eso es demasiado esfuerzo para usted en comparación con la tarea de eliminar todas las declaraciones de variables usted mismo. Pero me gustaría ver una herramienta así, así que siéntete libre de escribirlo :)
Espero que haya ayudado al menos un poco.
Bien, realmente no puedo ver ningún problema aquí. Para la parte de análisis:
function ParseHint (const HintText : String; out HintInfo : THintInfo) : Boolean;
var
I, J : Integer;
HintName : String;
begin
Result := False;
for I := 1 to Length (HintText) do
begin
if (HintText [I] = '(') then
begin
J := I + 1;
while (HintText [J] <> ')') do Inc (J);
HintInfo.LineNumber := StrToInt (MidStr (HintText, I+1, J-(I+1)));
HintInfo.SourceFile := MidStr (HintText, 12, I-12);
HintName := MidStr (HintText, J+3, 5);
if (HintName <> 'H2164') then Exit (False);
end;
if (HintText [I] = '''') then
begin
J := I + 1;
while (HintText [J] <> '''') do Inc (J);
HintInfo.VarName := MidStr (HintText, I+1, J-(I+1));
Exit (True);
end;
end;
end;
Bueno, leyendo el archivo de origen debe ser fácil, por lo que la única parte remaing es la eliminación de la variable de su línea de la declaración. Simplemente podemos buscar las ocurrencias de HintInfo.VarName en la línea y verificar si el carácter antes y después de la ocurrencia no son letras, sino solo '', ',' o ':'. Si este es el caso, podemos simplemente eliminarlo. Esto cubre todos estos casos:
var UnusedVar : Integer;
var
UnusedVar,
AnotherVar : Integer;
var
UnusedVar, AnotherVar : Integer;
Dime si estoy equivocado o si olvido algún caso, pero creo que esto iba a funcionar y woulde resolver el problema de la eliminación de las variables no utilizadas de los archivos fuente de Delphi usando el compilador generado consejos.
Unos minutos serán un error muy grande, porque este no es un problema trivial. –
Bueno, ¿quizás podrías señalar cuáles crees que serían los problemas? Para ser claros: no estoy hablando de encontrar variables no utilizadas, sino de interpretar las sugerencias del compilador de Delphi. – jpfollenius
Ok, la interpretación de consejos no debería ser tan difícil. Pero esa no es la parte principal del problema. Por favor, eche un vistazo a mi respuesta a continuación: –