;; Code audit: load everything with full safety, collect warnings (load "~/quicklisp/setup.lisp") (ql:register-local-projects) (ql:quickload :cl-tty :silent t) (ql:quickload :fiveam :silent t) ;; Redirect warnings into a collector (defvar *warnings* '()) (defvar *notes* '()) (defvar *style-warnings* '()) (setf sb-ext:*compiler-note-condition-handler* (lambda (c) (push (format nil "NOTE: ~a" c) *notes*) (muffle-warning c))) (setf sb-ext:*compiler-warning-condition-handler* (lambda (c) (etypecase c (sb-int:simple-style-warning (push (format nil "STYLE-WARNING: ~a" c) *style-warnings*)) (t (push (format nil "WARNING: ~a" c) *warnings*))) (muffle-warning c))) ;; Load all source files directly to catch per-file warnings (let ((files '("src/backend/classes.lisp" "src/backend/package.lisp" "src/backend/detection.lisp" "src/backend/simple.lisp" "src/backend/modern.lisp" "src/layout/layout.lisp" "src/components/dialog-package.lisp" "src/components/dialog.lisp" "src/components/dirty.lisp" "src/components/input-package.lisp" "src/components/input.lisp" "src/components/keybindings.lisp" "src/components/markdown-package.lisp" "src/components/markdown.lisp" "src/components/package.lisp" "src/components/render.lisp" "src/components/scrollbox.lisp" "src/components/slot-package.lisp" "src/components/slot.lisp" "src/components/tabbar.lisp" "src/components/text-input.lisp" "src/components/text.lisp" "src/components/textarea.lisp" "src/components/theme.lisp" "src/components/box.lisp" "src/rendering/framebuffer.lisp" "demo.lisp"))) (dolist (f files) (handler-bind ((warning #'muffle-warning)) (load f)))) ;; Also run the test files for good measure (dolist (f '("src/backend/tests.lisp" "src/backend/modern-tests.lisp" "src/layout/tests.lisp" "src/components/box-tests.lisp" "src/components/dirty-tests.lisp" "src/components/render-tests.lisp" "src/components/theme-tests.lisp" "src/components/input-tests.lisp" "tests/scrollbox-tabbar-tests.lisp" "tests/markdown-tests.lisp" "tests/dialog-tests.lisp" "tests/slot-tests.lisp" "tests/framebuffer-tests.lisp")) (load f)) (format t "~&=== COMPILER AUDIT RESULTS ===~%") (format t "WARNINGS (~d):~%" (length *warnings*)) (dolist (w (reverse *warnings*)) (format t " ~a~%" w)) (format t "STYLE-WARNINGS (~d):~%" (length *style-warnings*)) (dolist (w (reverse *style-warnings*)) (format t " ~a~%" w)) (format t "NOTES (~d):~%" (length *notes*)) (dolist (n (reverse *notes*)) (format t " ~a~%" n)) (unless *warnings* (format t "~&No compiler warnings.~%")) (unless *style-warnings* (format t "No style-warnings.~%")) (unless *notes* (format t "No notes.~%")) (format t "~&=== AUDIT COMPLETE ===~%") (uiop:quit 0)