問題タブ [static-analysis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
actionscript-3 - 静的 Actionscript コード分析の可能性
asp.net-mvc - ASP.NET MVC アプリケーションの静的分析用のツールを作成した人はいますか?
ASP.NET MVC アプリケーションの静的分析を行うツールを作成した人はいますか?
免責事項: 私が本当に望んでいるのは静的分析かどうかはわかりません。それは私が思いついた最も近い用語でした。
私が望むのは、すべてのコントローラー、アクションの表形式のリストを取得し、GET または POST に応答するかどうか、キャッシュ設定などを表示することです。
これを続けて、すべてのアクションがルートから実際にアクセスできるかどうかなど、より高度な問題に進むことができると確信しています。
誰もこれを行っていない場合、それは人々が役に立つと思うものですか? 他に何をすべきですか?
c - これは本当にバッファオーバーフローですか?
私たちが使用している静的解析ツールは、次のような C コードに重大なバッファ オーバーフローとしてフラグを立てています。
ツールのエラー メッセージは次のとおりです。 バッファ オーバーフロー(範囲外の配列インデックス): 配列 'buf' のサイズは 1 です。配列 'buf' は 0..64 インデックスを使用する可能性があります。
これは合法ですか?文字配列を空の文字列に代入すると、実際にその長さが 1 バイトに短縮されるのchar buf [] = "";
でしょうか?
objective-c - Objective C のコードリンティング
ObjectiveC 用のコードリンティング ツールはありますか?
python - 「厳密に使用する」Pythonコンパイラが必要ですか?
Python 用の静的解析ツールは存在しますが、コンパイル時のチェックは、Python が採用しているランタイム バインディングの哲学とは正反対の傾向があります。標準の Python インタープリターを静的分析ツールでラップして、「 use strict 」のような制約を強制することは可能ですが、そのようなものが広く採用されているとは思えません。
「厳密な使用」の動作を不要または特に望ましくないものにするPythonについて何かありますか?
あるいは、Perl が広く採用されているにもかかわらず、"use strict" 動作は Perl では不要ですか?
注: 「必要」とは、「実質的に必要」という意味であり、厳密には必要ではありません。明らかに「use strict」なしで Perl を書くことはできますが、(私が見た限りでは) ほとんどの Perl プログラマーはそれを使用しています。
注: Python インタープリター ラッパーは、「use strict」のような制約を必要とする必要はありません。通常のインタープリターでは無視される「use strict」と同様の疑似プラグマを使用できます。言語レベルの機能を追加することについて話しているのではありません。
更新: コメントごとに Perl で "use strict" が何をするかを説明します。(公式ドキュメントへのリンクは最初の段落にあります。)
「use strict」ディレクティブには 3 つの異なるコンポーネントがあり、そのうち 2 つだけが本当に興味深いものです。
use strict vars: プログラム内のレキシカル スコープ変数の使用を静的にチェックします。
global
(Python では、基本的にスコープとスコープしかないことに注意してくださいlocal
)。多くの Python リンターは、この種のものをチェックします。それができる唯一の静的分析であるため、リンターは、あなたが単純な字句スコープを使用していると想定し、その意味で間違っているように見えることについては、あなたが黙るように言うまで警告します。すなわち名前空間で特別なことをしていない場合、これはタイプミスをチェックするのに役立ちます。
use strict refs: シンボリック名前空間の逆参照を防ぎます。Python に最も近いものは、 and を使用
locals()
しglobals()
てシンボリック バインディングと識別子の検索を行うことです。use strict sub: Python には実際の類似物はありません。
c++ - C++ 静的コード分析ツールは価値がありますか?
私たちの経営陣は最近、C++静的解析ツールを販売している何人かの人々と話をしています。もちろん、営業担当者は大量のバグを見つけると言っていますが、私は懐疑的です.
そのようなツールは現実の世界でどのように機能しますか? 彼らは本当のバグを見つけますか? それらは、より多くのジュニア プログラマーの学習に役立ちますか?
彼らは苦労する価値がありますか?
code-analysis - .NET 3.5 SP1 に依存するコードを見つける
ある種のコード分析を実行して、.NET 3.5 SP1 ではコンパイルされるが 3.5 RTM ではコンパイルされないコードを見つける方法はありますか?
FxCop は、SP1 で導入されたアセンブリに対して機能しますが、新しいメソッドとプロパティを単に呼び出すコードの場合、その使用法は検出されません。
c - 変数を宣言する場所をスプリントに無視させるにはどうすればよいですか?
変数を宣言する場所をスプリントに無視させる方法を知っていますか?
古い学校の c では、すべての関数の最初に変数を宣言するように指示されていますが、私は悪い人なので、変数を使用する場所の近くで宣言するのが好きです。良い例は int i; です。for(i=0;...) の直前。
非常に簡単な例を見てみましょう
ここで、splint とほとんどの古い c コンパイラは int i; を移動したいと考えています。1 行上げるか、宣言と for ループを {} で囲みます。
さて、質問ですが、このチェックをオフにするにはどうすればよいですか? しかし、良い他のチェックを続けますか?
ありがとうヨハン
注 1: 私はすでに gcc 警告 (以下を参照) を防御の最初の行として使用し、valgrind を 2 番目の行として使用しています。しかし、私の愚かさを制御できるもののリストに添え木を追加することを考えています;-)しかし、このチェックはただ面倒です.
私が使用する gcc 警告: -Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror
注 2: 私は、その悪い動作から生じる潜在的な移植性の問題について知っています。しかし、読みやすさが向上すると思います。別名、この型オフ宣言を検索するために上下にジャンプする必要がないことは、より価値があります (これについては別のスレッドで説明します)。
更新: もう少し情報を追加します。上記のコードを main.c というファイルに入れました。使用されているプラットフォームは Ubuntu 8.04 で、エディターとして gvim を使用しています。これは、実行したときの splint からの出力です。
これにより、以前は考えもしなかった 2 つの疑問が生じます。
「現在の値と冗長」、現在の値は?
警告ではなく解析エラーなのはなぜですか?
更新::この問題をサポートするためにスプリントにパッチを適用する可能性があります。これはまだ試していませんが、解決策だと思います。
.net - 特定のメソッド/タイプを非推奨にする
一部のメンバー (または型) を使用しないようにするために、それらを廃止済みとしてマークする方法があります (将来的には完全に削除することもあります)。
しかし、コンパイルされたサードパーティ アセンブリのメンバー (または型) を非推奨にする方法はありますか? または、少なくとも、それらが使用されていることを確認する (または警告を発行する) ためですか?