flycheck'te belirli uyarıyı devre dışı bırak (özellikle “#pragma ana dosyada bir kez”)


11

Flycheck C ++ geliştirme için kullanıyorum ve aşağıdaki uyarıyı alıyorum:

#pragma once in main file

Bir ana dosyaya dahil olan tüm başlıklarda. Weblerde arama yaparken, bunun gcc ve clang'ın (her ikisi de aynı uyarıyı verir) flymake için nasıl derlediğiyle ilgili bir izlenim ediniyorum.

Bu uyarıdan kurtulmak istiyorum. Yapabileceğim bir şey var mı?


Öncelikle yeniden üretebilirsek , bu uyarıyı nasıl bastıracağımızı bulmak daha kolay olacaktır . Bir örnek dosya veya sorunu ortaya koyabildiğiniz kadar basit olsa da, sorunu gösteren dosyalar verebilir misiniz?
Ben Liblit

Sizinkine benzer bir sorum var, bir cevabım var .
Pradana Aumars

Yanıtlar:


2

Clang'ın bu uyarıyı devre dışı bırakma seçeneği vardır. Aşağıdaki ayarları yapılandırmama eklemek benim için sorunu çözdü.

(with-eval-after-load "flycheck"
    (setq flycheck-clang-warnings `(,@flycheck-clang-warnings
                                    "no-pragma-once-outside-header")))

Ne yazık ki, gcc için benzer bir seçenek olup olmadığını bilmiyorum.


0

Şu anda GCC'nin bu uyarıyı bastırmanın bir yolu yoktur. Ve sinek kontrolünün içlerine dokunmadan hataları görmezden gelmenin bir yolu yoktur.

İşte gcc için çalışan bir kesmek:

; ignore gcc "#pragma once" warning
(with-eval-after-load "flycheck"
  (eval-when-compile (require 'flycheck))  ; for flycheck-error struct
  (defun my-filter-pragma-once-in-main (orig-fun errors)
    (dolist (err errors)
      (-when-let (msg (flycheck-error-message err))
        (setf (flycheck-error-message err)
              (if (string-match-p "#pragma once in main file" msg) nil msg))))
    (funcall orig-fun errors))
  (advice-add 'flycheck-sanitize-errors :around #'my-filter-pragma-once-in-main))

Tamamlayıcı olmak üzere grepcake cevabı @ clang:

; ignore clang "#pragma once" warning
(with-eval-after-load "flycheck"
  (setq flycheck-clang-warnings `(,@flycheck-clang-warnings
                                  "no-pragma-once-outside-header")))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.