Tôi đang tạo thủ công mã mới. Tôi muốn chắc chắn rằng tôi không để đá nào bị lật đổ.Làm thế nào để tạo ra độ bao phủ mã tốt của logic dấu chấm động?
Có bất kỳ điều gì cụ thể mà tôi có thể làm ngoài việc chỉ định Hợp đồng mã để hướng dẫn Pex để nó tạo ra mức độ phù hợp tốt trong mã số lượng lớn không?
Hãy thử tìm kiếm http://research.microsoft.com/en-us/projects/pex/pexconcepts.pdf cho từ khóa 'float' để biết một số thông tin cơ bản.
hạn chế số học qua số dấu chấm động được xấp xỉ bằng một bản dịch để số hữu tỉ, và kỹ thuật tìm kiếm heuristic được sử dụng bên ngoài của Z3 để tìm giải pháp gần đúng cho những hạn chế dấu chấm động.
... và cũng ...
Lý tượng trưng. Pex sử dụng trình giải quyết ràng buộc tự động để xác định các giá trị nào có liên quan cho thử nghiệm và mã đang được thử nghiệm. Tuy nhiên, khả năng của người giải quyết hạn chế là, và sẽ luôn bị hạn chế. Đặc biệt, Z3 không thể lý giải chính xác về số học dấu phẩy động.
Ngoài ra, bạn có biết một công cụ trong .NET phù hợp hơn với nhiệm vụ tìm bất thường số dưới .NET không? Tôi biết về http://fscheck.codeplex.com/ nhưng nó không thực hiện lý luận tượng trưng.
Tránh các điều kiện liên quan đến '==' cho 'float'. Sử dụng '<' or '>' để thay thế. Nếu bạn phải sử dụng '==' thì sử dụng biểu thức 'Math.Abs (giá trị - đích)
@JesseChisholm Tôi biết các công cụ phân tích tĩnh cho phép bạn tìm các lỗi mã hóa như vậy. Tôi không chắc làm thế nào điều này sẽ giúp với câu hỏi. – GregC
@GregC, tôi không chắc chắn tôi hiểu những gì bạn đang yêu cầu. Bạn muốn biết (A) liệu các câu lệnh điều kiện có chứa các số dấu phẩy động sử dụng một phép khoan epsilon hay (B) các thuật toán của bạn ổn định về số hoặc (C) đơn giản là một đề xuất cho một công cụ bảo hiểm mã? Hay cái gì khác? –