問題タブ [code-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.
code-analysis - どの重複検出しきい値を使用していますか?
重複は悪であり、避けるべきであることに全員が同意します (同じことを繰り返すなという原則)。そのためには、Simian (多言語) やClone Detective (Visual Studio アドイン) などの静的解析コードを使用する必要があります。
Ayende の神戸に関する投稿を読んだところ、彼は次のように言っています。
神戸の8.5%はコピペコード。これは、感度を高く設定した場合です。しきい値を 3 に設定すると、私がよく行うように、12.5% まで上がります。
閾値としての 3 は非常に低いと思います。私の会社では、高品質のコード分析をサービスとして提供しています。重複のデフォルトのしきい値は 20 に設定されており、多くの重複があります。3にしてしまうと、お客様が修正など考えられないなんて想像もできません。
Kobe に関する Ayende の意見は理解できます。これは公式のサンプルであり、「Web 2.0 アプリケーションおよびサービスの計画、設計、および実装をガイドすることを目的としている」として販売されています。そのため、品質への期待は高いです。
しかし、あなたのプロジェクトでは、重複のためにどのような最小しきい値を使用していますか?
関連する質問 :コードの重複をどれだけ熱心に排除しますか?
c# - String.ToUpperInvariant() による文字列の正規化
現在、正規化されたバージョンの文字列を SQL Server データベースに小文字で保存しています。たとえば、Users テーブルには、UserName フィールドと LoweredUserName フィールドがあります。コンテキストに応じて、T-SQL の LOWER() 関数または C# の String.ToLower() メソッドを使用して、小文字バージョンのユーザー名を生成し、LoweredUserName フィールドに入力します。Microsoft のガイドラインとVisual Studio のコード分析規則 CA1308によると、ToLower() の代わりに C# の String.ToUpperInvariant() を使用する必要があります。Microsoft によると、これはパフォーマンスとグローバリゼーションの問題の両方です。大文字への変換は安全ですが、小文字への変換は情報の損失を引き起こす可能性があります (たとえば、トルコ語の 'I' 問題)。
文字列の正規化に ToUpperInvariant を使用するようになった場合、データベース スキーマも変更する必要があります。これは、スキーマがMicrosoft の ASP.NET メンバーシップフレームワーク (この関連する質問を参照) に基づいているためです。これは、文字列を小文字に正規化します。
Microsoft は、C# で大文字の正規化を使用するように指示しているのに、Membership テーブルとプロシージャの独自のコードで小文字の正規化を使用していると矛盾していませんか? すべてを大文字の正規化に切り替えるか、小文字の正規化を使用し続ける必要がありますか?
python - Cプロジェクトのすべての変数のタイプを特定する
一部のCソースコードが変数の命名規則に準拠していることを確認するプログラムを作成しようとしています。これを行うには、ソースコードを分析し、すべてのローカル変数とグローバル変数のタイプを特定する必要があります。
最終結果はほぼ確実にPythonプログラムになりますが、コードを分析するためのツールは、Pythonモジュールか、解析しやすいレポートを生成するアプリケーションのいずれかです。あるいは(これについては以下で詳しく説明します)、コンパイラーから情報を抽出する方法(レポートなど)である可能性があります。それが役立つ場合は、おそらく、KeilARMコンパイラになります。
私はctagsを試してきましたが、これはすべてのtypedefやマクロ定義などを見つけるのに非常に便利ですが、特に定義が複数の行にまたがっている場合は、変数のタイプを直接見つける方法はありません(そうならないことを願っています!)。
例としては、次のものがあります。
などなどなど
また、それらがローカル変数であるかグローバル/ファイルスコープ変数(ctagsで実行可能)であるかを識別する必要があります。ローカルである場合は、宣言されている関数の名前が理想的です。
また、関数でも同様のことを行いたいと思います。戻り型、静的かどうか、すべての引数の型と名前を識別します。
残念ながら、これはC構文ではかなり困難です。これは、パラメーターの順序にある程度の柔軟性があり、パラメーター間に許可される空白の量に多くの柔軟性があるためです。いくつかの凝った正規表現を使って作業をしましたが、適用できるさまざまな状況が非常に多く、正規表現がすぐに管理できなくなるため、理想からはほど遠いものです。コンパイラーが(動作するために!)これを実行できる必要があると思わずにはいられないので、この情報を抽出できるかどうか疑問に思いました。Keilコンパイラは、コンパイルされたソースファイルごとに「.crf」ファイルを生成するようで、これにはそのファイルで宣言されたすべての変数が含まれているように見えますが、これはバイナリ形式であり、私はできます。このファイルを解析する方法に関する情報を見つけてください。あるいは、ctagsから情報を取得する方法が最適です。
誰もがこれで提供できるどんな助けでもありがたいです。
ありがとう、
アル
c# - C#コード分析は保護された静的s_Fooを嫌います(CA1709、CA1707)
私は通常、フィールドの前とメンバーのm_
前にを追加します。private
s_
static
次のようなコードで
VS2008のコード分析によって次の警告が表示されます。
CA1709
:Microsoft.Naming:メンバー名「Bar.s_Random」の「s」の大文字と小文字を「S」に変更して修正します。CA1707
:Microsoft.Naming:メンバー名'Bar.s_Random'から下線を削除します。
この問題を解決するにはどうすればよいですか?単に削除する必要がありs_
ますか?または、この警告のグローバル抑制を追加しますか?
編集:私の会社にはコーディング標準がないので、コード用にそれらを定義するのは私次第です。(ええ、私は知っています...)
一般的に削除する必要があると思わs_
れる場合は、公式の情報源を提供していただければ幸いです。
c# - C#コールグラフ生成ツール
(ほとんど文書化されていない)C#コードの山が山積みになっているので、飛び込んでリファクタリングを開始する前に、その構造を視覚化したいと思います。私は過去に(他の言語で)コールグラフを生成するツールを使ってこれを行いました。
C#での構造の発見を容易にするための優れたツールをお勧めしますか?
アップデート
私が(チューブを通して)ここで言及したツールに加えて、人々は.NETReflectorとCLRProfilerがこの機能を持っていると言います。これらの経験はありますか?
web-applications - 影響分析でお気に入りのツールは何ですか
影響分析でお気に入りのツールは何ですか?
特に、コード参照が少なくとも 4 つの言語 (java、jsp、速度テンプレート、javascript、html、および不吉な xml) である可能性があることを考慮すると、IDE が常に役立つとは限らない Web アプリケーションのコンテキストでは。
これまでのところ私は管理しfind
てgrep
いますが、他に良いものはありますか?
python - 必要な Python の最低バージョンを決定するツールは?
Pythonスクリプトを見て(または実行して)、各行(または関数)に必要なPythonのバージョンを判断する、Pylintに似たものはありますか?
たとえば、理論上の使用法:
そのようなことは可能ですか?最も簡単な方法は、すべての Python バージョンをディスクに保存し、それぞれのバージョンでスクリプトを実行して、どのようなエラーが発生するかを確認することだと思います..
sql - Oracle デッドロック検出ツール
Oracle クエリと PL/SQL プロシージャ (トリガー、制約など) の静的アナライザーを探しています。これは、DB スキームを渡し、潜在的なデッドロックを指摘するツールです。JavaのFindBugsと同じです。
そのようなツールが存在しない場合、あなたはそれを持ちたいですか?
performance - コードを効率的に分析していますか?
コードの効率を判断するために、どのような種類のツールを使用していますか? 統計的に有意な数のテストを実行する自家製アプリケーションを使用していますか、それとも商用製品を使用していますか? 自分の知識を使ってコードの特定の領域をテストしたり、コードの弱点を分析するツールを使用したりしますか?