Hệ thống nhúng sử dụng LINT


8

Tôi hiện đang phát triển các hệ thống nhúng bằng cách sử dụng một số trình biên dịch khác nhau, phổ biến nhất đến từ các hệ thống IAR.

Tình yêu phần cứng của tôi là những gì ổ đĩa làm hệ thống nhúng và phần sụn. Tuy nhiên tôi dường như thiếu khá nhiều trong công nghệ phần mềm.

Tôi đã đọc nhiều lần rằng một Lint tốt là vô giá đối với mã. Tôi muốn biết nếu có ai ở đây sử dụng Lint, đó là Lint, và nó giúp ích bao nhiêu trong việc phát hiện lỗi.

Câu trả lời:


4

Tôi đã sử dụng lint trong quá khứ, và tôi đã thấy nó hữu ích. Tuy nhiên, tôi đã phải ngừng sử dụng nó khi tôi chuyển sang một dự án lớn hơn không sử dụng nó. Điều đó gây khó khăn cho việc sử dụng lint, bởi vì cách mã được kết nối với nhau. Vấn đề lớn nhất với lint là cấu hình nó để loại bỏ các kết quả dương tính giả và không quan tâm. Có thể tốt hơn bây giờ khi họ đã thực hiện một bản phát hành khác trong năm qua.

Một công ty tôi làm việc cùng đã thực hiện dự án lớn đó và đưa nó thông qua công cụ giảm đau tĩnh của Coverity. Tuy nhiên, đó là một khoản tiền lớn để sử dụng, vì vậy nó không được khuyến nghị cho các công ty nhỏ.


Tôi đọc một cuốn sách mà tôi phải mong đợi để dành thời gian trước để khiến nó ngừng ném những thông tin sai lệch. Bạn đã chọn sử dụng loại xơ nào vào thời điểm đó?
Kortuk

Tại thời điểm đó là phiên bản 8.0.
Jay Atkinson

Bạn có biết những gì công ty làm ra nó, có rất nhiều chương trình Lint khác nhau ngoài kia. Tôi được bảo rằng nó được đặt tên là lint vì những mảnh nhỏ của lint nó thấy rằng trình biên dịch bị mất.
Kortuk

1
Xin lỗi, PC-LINT của Gimpel. Điều tuyệt vời là chúng ít nhất giúp bạn chế ngự một số đầu ra với một số bộ quy tắc được xác định trước dựa trên trình biên dịch và trình chỉnh sửa bạn sử dụng. Chúng có sẵn để tải xuống tại trang web của họ: gimpel.com
Jay Atkinson

Nếu cơ sở mã nguồn mới của bạn phát ra rất nhiều "dương tính giả" thì thật đáng buồn, thường là bị hỏng.
Tim Williscroft

6

Tôi chưa sử dụng lint, nhưng tôi thấy rằng các cảnh báo của GCC có thể phát hiện rất nhiều lỗi lập trình.

Đây là CFLAGS ưa thích của tôi

CFLAGS + = -Werror -W -Wall -ansi -pedantic -Wformat-nonliteral -Wcast-align -Wpulum-arith -Wbad-function-cast -Wmissing-prototypes -Wstrict-prototypes -Wmissing externs -Wshadow -Wconversion -Wwrite-chuỗi -Wno-convert -Wextra -Wstrict-aliasing -Wcast-Qual

Tôi cũng đã từng đi với Linus Torvalds ' Spzzy để phân tích tĩnh. Nhưng, tôi nghĩ những loại công cụ này hữu ích hơn cho các hệ thống lớn.


hầu hết các hệ thống tôi làm việc cùng nằm trong phạm vi 50k dòng mã.
Kortuk

3

Tôi phải thừa nhận, tôi đã không sử dụng nhiều với một số loại trong dự án vi điều khiển / vi xử lý.

Trong dự án nhúng hiện tại của tôi, sử dụng C ++ trên PC / 104 SBC dựa trên Linux, chúng tôi đã sử dụng cppcheck (cũng hoạt động với C!). Nó hoạt động khá tốt, mặc dù nó có vấn đề với các cây thừa kế lớp phức tạp. Và nó đã cung cấp một số giá trị - thật tốt khi kiểm tra các vị trí tiềm năng nơi có thể xảy ra rò rỉ bộ nhớ. Nhưng hầu hết những điều nó ghi nhận là theo phong cách - sử dụng preincrement thay vì postincrement trong for-loop, đại loại thế.

Tôi cũng đã sử dụng một lint trực tuyến cho Javascript khi phát triển ứng dụng cho hệ thống phần mềm doanh nghiệp. Nó hoàn toàn vô giá ở đó, vì không có công cụ sửa lỗi nào để kiểm tra lỗi cú pháp trong thiết lập đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.