タグ付けされた質問 「compiler-warnings」

コードまたは構成の潜在的な問題を示すコンパイラーによって発行されたメッセージ。

20
コンパイラの警告を常に有効にする必要があるのはなぜですか?
CおよびC ++プログラムをコンパイルするとき、「コンパイラの警告を常に有効にする」必要があるとよく耳にします。なぜこれが必要なのですか?それ、どうやったら出来るの? 「警告をエラーとして扱う」べきだとも時々聞いています。したほうがいい?それ、どうやったら出来るの?

4
「android:allowBackup」とは何ですか?
以来新しいADTプレビュー版(バージョン21) 、彼らは私に(アプリケーションタグで)マニフェストファイルに次の事を伝え、新たな糸くずの警告があります。 android:allowBackupを明示的にtrueまたはfalseに設定する必要があります(デフォルトではtrueであり、アプリケーションのデータにセキュリティ上の影響がある可能性があります) では、公式ウェブサイト、彼らが書きました: いくつかの新しいチェック:アプリがバックアップを許可するかどうか、およびラベルチェックを明示的に決定する必要があります。ライブラリパスを設定するための新しいコマンドラインフラグがあります。編集中の増分lint分析に対する多くの改善。 この警告は何ですか?バックアップ機能とは何ですか?どのように使用しますか? また、警告がセキュリティに影響することを警告するのはなぜですか?この機能を無効にすることの欠点と利点は何ですか? マニフェストのバックアップには2つの概念があります。 「android:allowBackup」は、次に示すように、adbを介してバックアップと復元を許可します。 アプリケーションがバックアップおよび復元インフラストラクチャに参加できるようにするかどうか。この属性がfalseに設定されている場合、アプリケーションのバックアップまたは復元は、すべてのアプリケーションデータがadb経由で保存されるシステム全体のバックアップによっても実行されません。この属性のデフォルト値はtrueです。 これは、ADBを介してアプリをバックアップし、アプリのプライベートデータをPCに取り込むことができるため、セキュリティの問題と見なされます。 ただし、ほとんどのユーザーはadbが何であるかを知らないため、問題ではないと思います。知っていれば、デバイスのルート権限を取得する方法も知っています。ADB機能は、デバイスでデバッグ機能が有効になっている場合にのみ機能します。これには、ユーザーがそれを有効にする必要があります。 したがって、デバイスをPCに接続してデバッグ機能を有効にするユーザーのみが影響を受けます。PCにADBツールを使用する悪意のあるアプリがある場合、アプリがプライベートストレージデータを読み取る可能性があるため、これは問題となる可能性があります。 Googleは、ADBを介したアプリのバックアップと復元を許可するために、デフォルトで無効になっている機能を開発者カテゴリに追加するだけでよいと思います。 「android:backupAgent」は、こことここに示されているように、クラウドのバックアップと復元機能の使用を許可します。 実装するクラスの名前は、アプリケーションのバックアップエージェントであり、BackupAgentのサブクラスです。属性値は完全修飾クラス名( "com.example.project.MyBackupAgent"など)である必要があります。ただし、省略形として、名前の最初の文字がピリオド(たとえば、「。MyBackupAgent」)の場合、要素で指定されたパッケージ名に追加されます。デフォルトはありません。名前を指定する必要があります。 これはセキュリティの問題ではありません。


4
Rustで未使用のコード警告を無効にする方法は?
struct SemanticDirection; fn main() {} warning: struct is never used: `SemanticDirection` --> src/main.rs:1:1 | 1 | struct SemanticDirection; | ^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: #[warn(dead_code)] on by default 私はこれらの警告を深刻なもののために再びオンにしますが、私は言語をいじくり回しているだけであり、これが私をコウモリに駆り立てています。 #[allow(dead_code)]コードに追加してみましたが、うまくいきませんでした。

9
数行のコードでGCC警告を無効にする方法
Visual C ++では、を使用できます#pragma warning (disable: ...)。また、GCCではファイルごとのコンパイラフラグを上書きできることもわかりました。これを「次の行」に、またはGCCを使用してコードの領域の周りにプッシュ/ポップセマンティクスで行うにはどうすればよいですか?


7
GCCのすべての警告を(文字通り)オンにする方法は?
文字通り、GCCが提供するすべての警告を有効にしたいと思います。(それは簡単だと思います...) あなた-Wallはトリックをするかもしれないと思うでしょうが、いいえ!まだ必要-Wextraです。 あなた-Wextraはトリックをするかもしれないと思うでしょうが、いいえ!これによって、ここにリストされているすべての警告(たとえば、-Wshadow)が有効になるわけではありません。そして、このリストが包括的であるかどうかはまだわかりません。 GCCにすべての警告を有効にするように指示するにはどうすればよいですか(if、and、およびnoです!)。

11
プロパティのゲッターとセッター
この単純なクラスでは、コンパイラの警告が表示されます x独自のセッター/ゲッター内で変更/アクセスを試みる そして私がこのようにそれを使うとき: var p: point = Point() p.x = 12 EXC_BAD_ACCESSを取得します。明示的なバッキングivarなしでこれを行うにはどうすればよいですか? class Point { var x: Int { set { x = newValue * 2 //Error } get { return x / 2 //Error } } // ... }

4
Objective-Cの暗黙的な変換は整数精度「NSUInteger」(別名「unsigned long」)を「int」警告に失います
私はいくつかの演習を進めており、次のような警告が表示されます: 暗黙的な変換で整数の精度が失われます: 'NSUInteger'(別名 'unsigned long')から 'int' #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSArray *myColors; int i; int count; myColors = @[@"Red", @"Green", @"Blue", @"Yellow"]; count = myColors.count; // <<< issue warning here for (i = 0; i < count; i++) NSLog (@"Element %i …

7
i =(i、++ i、1)+ 1;とは 行う?
未定義の動作とシーケンスポイントに関するこの回答を読んだ後、小さなプログラムを書きました。 #include <stdio.h> int main(void) { int i = 5; i = (i, ++i, 1) + 1; printf("%d\n", i); return 0; } 出力は2です。ああ、私は減少が来るのを見ませんでした!ここで何が起きてるの? また、上記のコードをコンパイルしているときに、次の警告が表示されました。 px.c:5:8:警告:コンマ式の左側のオペランドは効果がありません [-Wunused-value] i = (i, ++i, 1) + 1; ^ どうして?しかし、おそらくそれは私の最初の質問の答えによって自動的に答えられます。

5
g ++-再注文のポイントは何ですか?
g ++ -Wallオプションには-Wreorderが含まれます。このオプションの機能を以下に説明します。なぜ誰かが気にするのか私には明らかではありません(特に-Wallでデフォルトでこれをオンにするのに十分です)。 -再注文(C ++のみ) コードで指定されたメンバー初期化子の順序が異なる場合に警告する それらが実行されなければならない順序と一致します。例えば: struct A { int i; int j; A():j(0)、i(1){} }; コンパイラーは、iおよびjのメンバー初期化子を次のように再配置します。 メンバーの宣言順序を一致させ、それに警告を発します 効果。この警告は-Wallによって有効になります。

3
ReSharper / C#で「デリゲート減算の結果は予測できません」?
myDelegate -= eventHandlerReSharper(バージョン6)の問題を使用する場合: デリゲートの減算の結果は予測できません この背後にある合理的な理由は、ここでJetBrainsによって説明されています。説明は理にかなっており、それを読んだ後、私は-デリゲートでの私の使用をすべて疑っています。 それでは、 ReSharperを不機嫌にすることなく、自動以外のイベントを作成できますか? または、これを実装するためのより良いおよび/または「正しい」方法はありますか? または、ReSharperを無視できますか? 簡略化したコードは次のとおりです。 public delegate void MyHandler (object sender); MyHandler _myEvent; public event MyHandler MyEvent { add { _myEvent += value; DoSomethingElse(); } remove { _myEvent -= value; // <-- ReSharper warning here } }

10
カスタムコンパイラの警告
.NetでObsoleteAtributeを使用すると、オブジェクト/メソッド/プロパティが廃止され、他のものを使用する必要があることを通知するコンパイラ警告が表示されます。私は現在、元従業員コードの多くのリファクタリングを必要とするプロジェクトに取り組んでいます。書き込むメッセージを与えるコンパイラ警告を生成するメソッドまたはプロパティをマークするために使用できるカスタム属性を書きたいのですが。このようなもの [MyAttribute("This code sux and should be looked at")] public void DoEverything() { } <MyAttribute("This code sux and should be looked at")> Public Sub DoEverything() End Sub これにより、「このコードはSUXであり、確認する必要がある」というコンパイラ警告を生成します。カスタム属性を作成する方法を知っていますが、問題は、Visual Studioでコンパイラの警告を生成する方法です。

3
単一ファイルのコンパイルフラグを上書きする
プロジェクトをコンパイルするためにフラグのグローバルセットを使用したいと思います。つまり、最上位のCMakeLists.txtファイルで次のように指定しました。 ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x ) ただし、サブディレクトリ内の特定のファイル(たとえば、 "foo.cpp"としましょう)については、コンパイルフラグを切り替えて-Weffc ++(変更できない商用ライブラリが含まれている)を適用しないようにします。-Wallのみを使用するように状況を簡略化するために、私は次のことを試みました。 SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) 、動作しませんでした。私も試しました SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall ) ADD_EXECUTABLE( foo foo.cpp ) そして ADD_EXECUTABLE( foo foo.cpp ) SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall ) 、どちらも機能しませんでした。 最後に、私はこの定義を削除してみました: REMOVE_DEFINITIONS( -Weffc++ ) ADD_EXECUTABLE( …

8
Java Class.cast()とキャスト演算子
Cスタイルのキャストオペレーターの弊害についてC ++の時代に教えられた私は、Java 5でメソッドjava.lang.Classが取得されたことを最初に知って嬉しく思いましたcast。 ようやく、キャスティングを処理するオブジェクト指向の方法があると思いました。 結局のところ、C ++ Class.castとは異なりstatic_castます。もっと似ていreinterpret_castます。予想される場合はコンパイルエラーを生成せず、代わりに実行時まで延期します。以下は、さまざまな動作を示す簡単なテストケースです。 package test; import static org.junit.Assert.assertTrue; import org.junit.Test; public class TestCast { static final class Foo { } static class Bar { } static final class BarSubclass extends Bar { } @Test public void test ( ) { final Foo foo = new Foo( …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.