Tôi thấy rằng một số loại làm sạch mã và tái cấu trúc được thực hiện RẤT khó khăn bởi sự khó khăn của việc thêm một đơn vị vào các điều khoản sử dụng của một dự án lớn.Thêm đơn vị vào các mệnh đề sử dụng của tất cả các đơn vị trong một dự án?
Tôi muốn thêm đơn vị vào mệnh đề giao diện sử dụng của tất cả các đơn vị .pas delphi trong một dự án duy nhất và điều đó có nghĩa là thực hiện thủ công việc đó ở hơn 500 địa điểm. Mỗi lần tôi tái cấu trúc một đơn vị khổng lồ và chia nó thành một đơn vị, tôi có thể tìm kiếm và thay thế bằng cách sử dụng một cái gì đó như "notepad ++" để thay đổi "MyOldUnit" thành "MyOldUnit, MyNewUnit", nhưng đôi khi, điều đó không an toàn . Nó cũng bỏ lỡ các trường hợp mà "MyOldUnit" là điều cuối cùng trong mệnh đề uses ("sử dụng MyOldUnit;").
Dù sao, tìm kiếm và thay thế trong tệp là hoạt động kinh doanh nguy hiểm. Nếu không có công cụ như vậy tồn tại, tôi đang dự tính viết một, bằng cách sử dụng phân tích cú pháp Castalia delphi. Tôi đã kiểm tra GExperts, Castalia, ModelMakerCodeExplorer và không ai trong số họ có một cách để chèn hàng loạt các đơn vị vào tất cả các mệnh đề sử dụng trong một dự án. Tôi hy vọng một công cụ để làm điều này tồn tại. Thứ hai, trong nhiều trường hợp, tôi đang di chuyển một chức năng từ một đơn vị mà nó không thuộc về một đơn vị khác, nhưng điều này có nghĩa là tôi cần thêm đơn vị đó vào 30% đơn vị của dự án, nhưng không phải đơn vị khác 70 % nơi nó đã được thêm. Điều đó có nghĩa là một cách tiếp cận phân tích cú pháp là bắt buộc, không phải là một cách tiếp cận regex.
Có (rất cũ) 'JclUsesWizard' trong JCL \ chuyên gia \ useswizard, có lẽ nó có thể phục vụ bạn như là một điểm khởi đầu. –
Bạn không cần một trình phân tích cú pháp thực để làm điều này. Chỉ cần một kịch bản dựa trên regex khó chịu bằng cách sử dụng Perl hoặc Python hoặc bất cứ điều gì bạn thích cho kịch bản regex. Bạn sẽ cần một trình phân tích cú pháp thực nếu bạn muốn một cái gì đó mạnh mẽ, nhưng đối với một ứng dụng một shot đến cơ sở mã của riêng bạn, bạn không. –
Bạn đã thử CnPack chưa? – kobik