問題タブ [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.
static-analysis - Code Contracts 静的チェッカーは、算術境界をチェックできるようにする必要がありますか?
( MSDN フォーラムにも投稿されていますが、私が見る限り、トラフィックはそれほど多くありません。)
Assert
との例を提供しようとしていますAssume
。これが私が持っているコードです:
(もちろん、既存の参照の代わりに null 参照を渡すことができるというビジネスRandom
は、純粋に教育的なものです。)
firstRoll
チェッカーがそれを知っていて、secondRoll
それぞれが範囲内[1, 6]
にある場合、合計が範囲内にあると判断できると思っていました[2, 12]
。
これは無茶な希望ですか?何が起こるかを正確に把握するのはトリッキーなビジネスだと思います...しかし、チェッカーが十分にスマートであることを望んでいました:)
これが現在サポートされていない場合、近い将来サポートされる可能性があるかどうかを知っている人はいますか?
編集:静的チェッカーの算術演算には非常に複雑なオプションがあることがわかりました。「高度な」テキスト ボックスを使用して、Visual Studio からそれらを試すことができますが、私が知る限り、それらが何をするかについての適切な説明はありません。
.net - ビルド中に静的コード分析を抑制するにはどうすればよいですか?
15 のプロジェクトを含むソリューションがあり、そのすべてでコード分析が有効になっています。
ソリューションのビルドには 60 秒以上かかります。これは、座って待っていると非常に長い時間です。
コード分析を無効にすると、10 秒でビルドされます。
アドホック ベースでコード分析を無効にできるようにしたいと考えています。それでも、チェックイン前にビルドするときにコード分析が必要であり、コード分析を有効にしてビルドサーバー (Cruise Control) を引き続き実行したい.
エラー/警告が発生した場合にソース コードに直接ジャンプできるように、Visual Studio 内からコード分析を実行することをお勧めします。
formatting - JSLint インデント警告をオフにするには?
JSLintは次の形式の警告を多数生成することがわかりました。
JSLint オプションのドキュメントではindent
、インデントの各レベルのスペースの量を表す数値を認識するオプションについて説明しています。このオプションを使用すると、インデントのレベルごとに 2 つのスペースを使用するなどのことができます。JavaScript ファイルの先頭に次のように記述します。
わかりました。現在、JSLint は各レベルのインデントでどれだけインデントするかを認識していますが、JSLint は各行のインデント レベルを決定するためにハードコードされているようです。
JSLint が規定する方法とは異なる方法でコードをインデントしたいとします。JSLintオプションでこれを行うことはできますか? そうでない場合、少なくともインデントの警告をオフにすることはできますか? 私は試した:
しかし、それによってインデント警告が省略されることはありませんでした。JSLint エラーが発生しました。
perl - Perl の静的解析呼び出しグラフを作成するにはどうすればよいですか?
私は適度に複雑な Perl プログラムに取り組んでいます。開発の一環として、変更とテストを行う必要があります。特定の環境の制約により、このプログラムを頻繁に実行することは、簡単に実行できるオプションではありません。
私が欲しいのは、Perl 用の静的コールグラフ ジェネレーターです。すべてのエッジ ケースをカバーする必要はありません (たとえば、変数を関数に再定義する、または eval でその逆を行う)。
(はい、Devel::DprofPP にはランタイム コールグラフ生成機能があることは知っていますが、ランタイムがすべての関数を呼び出すことが保証されているわけではありません。各関数を確認できる必要があります。)
language-agnostic - 高レベル/セマンティック最適化
私はコンパイラーを書いています、そして私は最適化に関するリソースを探しています。私はマシンコードにコンパイルしているので、実行時に何でも問題外です。
私が最近探していたのは、コードの最適化を減らし、セマンティック/高レベルの最適化を増やすことです。例えば:
これらの関数が完全にインライン化されていても、最終的にはインライン化できないOSメモリ関数を呼び出す可能性があります。特別な場合のルールをコンパイラーに組み込むことなく、そのステートメントを完全に排除できるようにしたいと思います(結局のところ、これmalloc
は単なる別の関数です)。
もう一つの例:
b
この状況では、の容量をに初期化できるようにしたいと思いますstr.Length + 2
(メモリを無駄にすることなく、結果を正確に保持するのに十分です)。
正直なところ、どこから始めればいいのかわからないので、どこかで始めたいと思っていました。同様の分野で行われた作業はありますか?一般的な意味でこのようなものを実装しているコンパイラはありますか?
perl - Perlモジュールファイルからすべての変数、モジュール、および関数名を抽出するためのツールはありますか?
これが重複している場合は、お詫び申し上げます。検索する適切な用語がわからない場合があります。
私は、より大きなアプリケーションのフラグメントであるPerlモジュールファイル(.pm)を分析する任務を負っています。コードを調べて、すべての変数名、モジュール名、関数呼び出しを引き出すツール、アプリ、またはスクリプトはありますか?さらに良いのは、それがこのファイル内で宣言されているのか、それとも外部のものであるのかを識別するものです。
そのようなツールは存在しますか?取得するファイルは1つだけなので、これは実行できるものではありません。基本的な静的分析だけだと思います。
cocoa - Core Foundation オブジェクトのガベージ コレクション
このコードで静的アナライザーを実行します。
次の警告が表示されます。
関数 'CFPreferencesCopyAppValue' への呼び出しは、+1 保持カウント (所有参照) を持つ Core Foundation オブジェクトを返します。Core Foundation オブジェクトは、自動的にガベージ コレクションされません。
これは、そのような醜いもので修正する必要がある警告ですか:
それとも、コピーされたオブジェクトが無料でブリッジされていることを考えると、これは単なる誤検知ですか?
java - Javaは依存関係を最小化する
依存するjarが多数あるJavaコードの小さな部分がある状況があります。ただし、これらのjar内の依存関係は非常に浅いです。ほとんどの場合、それは単一のインターフェースのjarにのみ依存します。
アプリケーションですべてのjarを配布するのではなく、実際に使用するjar内の特定のクラスファイルを配布したいと思います。この理由は、スペースを節約するためです(このコードはアプレットに存在します)。
これを自動的に行うためのツールや方法を知っている人はいますか?すべての依存関係が静的であると仮定すると、これは完全に可能であるように思われます。何か案は?
static-analysis - FindBugs のバグ履歴を維持する
FindBugs は、バグのデータ マイニングを行う方法を提供します。これは、さまざまなリビジョンのバグの傾向を把握するのに役立つため、興味深いものです。私がやりたいことは次のとおりです。
バージョン管理にコミットするたびに、FindBugs が実行され、レポートが生成されます。これらすべてのレポートからデータを取得し、傾向を示すレポートを生成することは可能ですか? 誰かが似たようなことをしましたか?