tôi thấy quan điểm của bạn và hoàn toàn đồng ý rằng một công cụ như vậy sẽ có ích khi làm việc với mã di sản. Thật không may, tôi không biết bất kỳ công cụ hiện có nào (tôi nên thêm công cụ phần mềm miễn phí tại đây, các công cụ phân tích tĩnh nên tất nhiên có thể làm điều đó dễ dàng, nhưng tôi không biết bất kỳ công cụ phân tích mã tĩnh miễn phí nào) .
Nhưng tôi đoán bạn có thể dễ dàng viết một công cụ như vậy sau vài phút. Một GUI nhỏ với một bản ghi nhớ và một nút là đủ. Sau đó, chỉ cần sao chép các gợi ý trình biên dịch vào bản ghi nhớ và nhấn nút. Công cụ này sau đó phân tích mọi dòng. Nó có thể dễ dàng kiểm tra xem dòng có chứa gợi ý mà bạn đang tìm kiếm hay không và mỗi dòng đó có cấu trúc giống nhau, do đó việc phân tích cú pháp phải tương đối dễ dàng. Sau đó nó có thể trích xuất tên tệp và số dòng, mở tệp và xóa khai báo biến. Điều này có thể là một chút khó khăn trong trường hợp nhiều khai báo biến trong một dòng nhưng tôi nghĩ rằng nó là doable.
Tôi không biết liệu có quá nhiều nỗ lực cho bạn so với nhiệm vụ tự xóa tất cả các khai báo biến. Nhưng tôi muốn thấy một công cụ như vậy, vì vậy hãy thoải mái viết nó :)
Hy vọng rằng sẽ giúp ít nhất một chút.
OK, tôi thực sự không thể thấy bất kỳ vấn đề nào ở đây. Đối với phần phân tích cú pháp:
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;
Vâng, việc đọc tệp nguồn phải dễ dàng, vì vậy phần chỉ remaing là xóa biến khỏi dòng khai báo của nó. Chúng tôi chỉ đơn giản có thể tìm kiếm sự xuất hiện của HintInfo.VarName trong dòng và kiểm tra xem ký tự trước và sau sự xuất hiện không phải là chữ cái mà chỉ là '', ',' hay ':'. Nếu đây là trường hợp chúng tôi chỉ có thể loại bỏ nó. Điều này bao gồm tất cả những trường hợp này:
var UnusedVar : Integer;
var
UnusedVar,
AnotherVar : Integer;
var
UnusedVar, AnotherVar : Integer;
Nói cho tôi nếu tôi sai hoặc nếu tôi quên bất kỳ trường hợp nhưng tôi nghĩ rằng điều này sẽ làm việc và woulde giải quyết vấn đề loại bỏ các biến không sử dụng từ các tập tin nguồn delphi sử dụng trình biên dịch tạo gợi ý.
Một vài phút sẽ là một quan niệm sai lầm rất lớn, bởi vì đây không phải là vấn đề tầm thường. –
Vâng, có lẽ bạn có thể chỉ ra những gì bạn nghĩ rằng vấn đề sẽ là gì? Chỉ cần được rõ ràng: Tôi không nói về việc tìm các biến không sử dụng nhưng giải thích các gợi ý trình biên dịch Delphi. – jpfollenius
Ok, việc giải thích các gợi ý không quá khó. Nhưng đó không phải là phần chính của vấn đề. Xin hãy xem câu trả lời của tôi dưới đây: –