14

時代遅れで痛みを伴うものですが、私は、大規模なプロジェクトで VB6 を積極的に使用し続けている会社で働いています。実際、18 か月前に 32k 識別子の制限に直面しました。

大規模なコード ベースをあきらめて、.NET ですべてを書き直すことを望まず、アプリケーションをメインの実行可能ファイルといくつかのサポート DLL ファイルに分割しました。今週も 32k の制限に達しました。

問題は、ソースが使用している一意の識別子の数を教えてくれるツールが見つからないことです。私たちの取り組みによって識別子の数がどの程度減少しているか、または限界に達する前にどれだけ限界に近づいているかを正確に測定する方法はありません。

プロジェクトのソースをスキャンし、正確な指標と統計を返すツールを知っている人はいますか?

4

6 に答える 6

1

AxToolsのCodeSmartはとても良いです。(ソース:axtools.com
代替テキスト

于 2009-04-17T13:15:00.660 に答える
0

チート-####固有の変数を含む未使用のクラスを作成します。Excelなどを使用して、アルファベット順の一意の変数名を生成します。制限に達したときにプロジェクトからクラスを削除するか、100個の一意の変数のブロックをコメントアウトします。

とにかく、サードパーティのツールよりもコンパイラ(変数の数が多すぎることを定義する)に頼りたいです。

(おやおや、necroに申し訳ありません-日付に気づいていませんでした)

于 2010-03-16T19:41:01.637 に答える
0

これは、VB6 コードから識別子を抽出したツールから取得できます。次に、リストを並べ替え、重複を排除し、リストのサイズを測定するだけです。ソース コードを言語トークン (「レックス」) に分割するソース コード検索エンジンがあり、これらのトークンの一部はまさにそれらの識別子です。これには、必要なデータが正確に含まれます。

しかし、問題を解決する別の方法があるかもしれません: めったに発生しない変数名を見つけて、それらを一連の標準名 (たとえば、「temp」) に置き換えます。したがって、「少数の参照」をソートできるように、各変数名の数を数えることが本当に必要です。同じレクサー データでこの情報を提供できます。

次に必要なのは、出現頻度の低い識別子の名前を標準セットの名前に変更するツールだけです。ある名前を別の名前に置き換える難読化ツールを提供しており、おそらくこれが可能です。

[2014 年 10 月更新]。この問題を抱えている人と長い会話をしただけです。ツールのベースとなるかなり概念的な答えがあることがわかりました。これはレジスタの色付けと呼ばれ、固定数のレジスタを任意の数のオペランドに割り当てます。これは、オペランドに対して「干渉グラフ」を計算することによって機能します。「干渉」しない 2 つのオペランドを同じレジスタに割り当てることができます。干渉グラフが十分に悪くない場合は、2^16 の使用可能な変数名を任意の数の識別子に割り当てるために使用できます。私の推測では、そうではありません。YMMV、そして誰かがそのようなツールを構築しなければならず、そのようなグラフを計算するための VB6 パーサーと機械が必要になる可能性があります。[私の経歴をチェックしてください]。

于 2009-08-12T04:10:07.320 に答える
-1

Compuware の DevPartnerには、そのようなコード分析があったようです。現在のバージョンがまだ Visual Basic 6.0 をサポートしているかどうかはわかりません。(ただし、少なくとも 14 日間の試用版が利用可能です)

于 2009-04-17T13:58:30.773 に答える