फ्लाईचेक में विशिष्ट चेतावनी को अक्षम करें (विशेष रूप से "मुख्य फ़ाइल में एक बार #pragma")


11

मैं C ++ विकास के लिए फ्लाईचेक का उपयोग कर रहा हूं, और निम्नलिखित चेतावनी प्राप्त करें:

#pragma once in main file

मुख्य फ़ाइल में शामिल सभी हेडर में। जाले खोजते हुए, मुझे यह आभास मिलता है कि फ्लाईकेक के लिए जीसीसी और क्लैंग (दोनों एक ही चेतावनी देते हैं) के साथ कुछ करना है।

मैं इस चेतावनी से छुटकारा पाना चाहूंगा। क्या मै कुछ कर सकता हुं?


यह पता लगाना आसान होगा कि अगर हम पहले इसे पुन: पेश कर सकते हैं तो इस चेतावनी को कैसे दबाएं । क्या आप एक उदाहरण फ़ाइल या फाइलें दे सकते हैं जो समस्या को प्रदर्शित करती हैं, जबकि अभी भी उतनी ही सरल है जितनी आप उन्हें बना सकते हैं?
बेन लिब्रिट

मेरा आपके जैसा सवाल है, मेरा जवाब है
प्रादा औमर

जवाबों:


2

क्लैंग के पास इस चेतावनी को निष्क्रिय करने का एक विकल्प है। निम्नलिखित को मेरे विन्यास में जोड़ने से मेरे लिए समस्या तय हो गई।

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

दुर्भाग्य से, मुझे नहीं पता कि क्या समान विकल्प gcc के लिए मौजूद है।


0

वर्तमान में जीसीसी के पास इस चेतावनी को दबाने का कोई तरीका नहीं है। और फ्लाइचेक के पास अपने इंटर्न को छूने के बिना त्रुटियों को अनदेखा करने का कोई तरीका नहीं है।

यहाँ एक हैक है जो gcc के लिए काम करता है:

; 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))

पूर्णता के लिए, क्लैग के लिए @ grepcake का उत्तर :

; ignore clang "#pragma once" warning
(with-eval-after-load "flycheck"
  (setq flycheck-clang-warnings `(,@flycheck-clang-warnings
                                  "no-pragma-once-outside-header")))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.