問題タブ [compilationunit]
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.
java - Eclipse抽象構文ツリーの差分
Eclipseで次のコードを考えます。
Eclipse Compare API(org.eclipse.compare)をどのように使用してASTの違いを見つけますか?(そして、これはプラグインの外で行うことができますか?)
私は次のAPIを見ています
http://kickjava.com/src/org/eclipse/compare/structuremergeviewer/Differencer.java.htm http://kickjava.com/src/org/eclipse/jdt/internal/ui/compare/JavaStructureCreator.java.htm http://kickjava.com/src/org/eclipse/compare/CompareUI.java.htm
誰でもサンプルコード(またはAPI-ただし、コードが推奨されます)を指すことができます。
java - Ant タスクとしての Eclipse Java コンパイラの警告
eclipse Java Compiler Warnings を Ant タスクとして (つまり、Eclipse なしで) (理想的には Ant プラグインとして) 利用できるようにしたいのですが、Eclipse 警告が表示された場合はクルーズ コントロール Ant タスクを失敗させたいと考えています。以下の警告について
静的メンバーへの非静的アクセス
コンストラクター名を持つメソッド
serialVersionUID のない直列化可能なクラス
割り当ては効果がありません
最終的に正常に完了しません
文字列連結での char 配列の使用
隠しキャッチブロック
vararg 引数の不正確な型一致
ヌルポインタアクセス
型パラメーターが別の型を隠している
メソッドはパッケージの可視メソッドをオーバーライドしません
インターフェイス メソッドが保護された 'Object' メソッドと競合しています
ローカル変数は読み取られません
未使用のローカルまたはプライベート メンバー
未チェックのジェネリック型操作
raw 型の使用
final 型バインドで宣言されたジェネリック型パラメーター
注釈はスーパーインターフェースとして使用されます
これは、Eclipse抽象構文ツリーを使用する必要があり、Eclipseコンパイルユニットを作成する必要があることを意味すると思います。
質問は次のとおりです。 (1) これは行われましたか? (2) そうでない場合 - 与えられた
object - どのように (コード例で) この CompilationUnit から警告を取得しますか?
(私はPMD、checkstyleなどについて知っています-これらのどれもコーディングスタイルのEclipse設定と正確に一致しません.Eclipseコーディングスタイルと正確に一致するantタスクが必要です)
java - Eclipse の CompilationUnit からバイトコードを生成する
私はEclipse プラグイン プロジェクトに取り組んでいません。ただし、org.eclipse.jdt.core.dom.CompilationUnit のインスタンスを生成する外部ライブラリを使用します。そこから Java バイトコードを生成する方法はありますか?
いくつかの検索により、CompilationUnit は通常、Eclipse プロジェクトのカスタム ビルダーを登録してから Eclipse に呼び出させることによって構築されることが明らかになりました...しかし、それをスタンドアロン アプリケーションに活用する方法が見つかりませんでした。
delegates - IEditorActionDelegateからIResourceを取得するにはどうすればよいですか
私は、CompilationUnitEditorのコンテキストメニューから起動するIEditorActionDelegateを作成しました。そこから、選択したテキストの開始行にマーカーを作成します。ITextSelectionとIEditorPartオブジェクトがあります。それらからIResourceを取得して、resource.createMarker()を呼び出すにはどうすればよいですか?
ありがとう
package - エイダ、私の荷物をチェックして。(「コンパイル単位が必要」?)
import ステートメントの直後に始まる「コンパイル単位が必要です」を除いて、他のすべてのコンパイル時エラーを取り除きました。パッケージを作成する必要があると思いますか?もしそうなら、どうすればいいですか?私はすべて同じ .ADB ファイルに住んでいるいくつかの機能を持っています。
編集:だから私はそれを試してみました...
私のパッケージをチェックしてください:
しかし、MyPackage を見ると gcc は悲鳴を上げます。
マキシマス・グラシマス
eclipse - ASTParser.createASTs()から返されたCompilationUnitインスタンスでNullPointerExceptionが発生するのはなぜですか
多数のソースファイルを解析する必要があるEclipseJDTプラグインに取り組んでいるので、バッチメソッドASTParser.createASTs()を使用したいと考えています。解析はエラーなしで実行されますが、生成されるCompilationUnitインスタンス内では、多くのorg.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding
インスタンスのscope
フィールドがに設定されていnull
ます。このnullへの設定は、プラグインのコードに関係のないワーカースレッドで呼び出されるメソッドで発生しています(つまり、プラグインのクラスはメソッド呼び出しスタックCompilationUnitDeclaration.cleanUp()
に表示されません)。cleanUp()
私の解析コードは次のようになります(すべてrawSources
同じプロジェクト内にあります):
または、この方法で解析を実行できますが、そのような問題は発生しません。
この問題は、HeliosとIndigo(最新のリリースビルド)の両方で発生します。Eclipse Bugzillaにバグを報告しましたが、これを回避する方法を誰かが知っている場合、またはAPIを間違って使用している場合は、ご協力いただければ幸いです。
バイロン
c++ - Can inline member functions differing across compilation units break binary compatibility?
I have a lot of code in a big project that has two general types of code, some that is done in a nice C++ style and has been code reviewed by an expert in C++ and some that is not and has not. The code that is not has lots of for loops and unchecked array (heap) accesses consisting of both reads and writes. Fortunately, all these accesses to the heap are done through a class. For argument's sake, let's call it CArray
.
CArray
is defined entirely inside header files since it's templated. It is roughly defined as follows (only showing relevant portions):
(Please assume that the constructor, destructor, copy constructor, assignment operator and the corresponding rvalue reference versions are done right. Basically assume that the user of the class everything they need to use this class properly.
Now the question is, if I have some compilation units (.cpp
files) that define CARRAY_BOUNDARY_DEBUGGING
and then include this class (the ones needing code improvement/review), but others that do not (the ones that are rock solid):
Is this guaranteed to be OK and not introduce problems since the class if often passed via copy, reference, and rvalue refrence (C++11 only) over compilation unit boundaries by C++03? C++11?
Is there a better way to try to do this?
Edit: clarification. I know that non-inline
functions must obey the one definition rule as stated in section 3.2 of the C++03 standard, but this is inline. Does the ODR still apply or is something else in effect here? Also the C++03 standard states "An inline function shall be defined in every translation unit in which it is used."
java - Eclipseは.javaファイルからCompilationUnitを作成します
.java ファイルを CompilationUnit にロードするにはどうすればよいですか? たとえば、現在のプロジェクトに A.java ファイルがあるとします。それを CompilationUnit にロードしてから、ASTParser に渡したいと思います。プレーンテキストとしてロードすることはオプションではありません。その場合、AST でバインド情報を取得できないように思われるからです。
c++ - (実行時間)>>>(コンパイル時間)の場合、複数のコンパイルユニットはまだ価値がありますか?
私の理解によると、複数のコンパイルユニットを備えたプログラムを作成する主な利点は、コンポーネントの再利用性と、小さな変更を組み込む場合のコンパイル時間の短縮です。
また、(おそらく間違って)これに関連するペナルティがあると思います。独自のコンパイル単位で定義された関数は「インライン」として宣言できません。
[このキーワードは実際にはコンパイラーにインライン展開関数を強制しないことを認識していますが、コンパイラーに最適化の柔軟性を与えるため、可能な限り含める価値があると理解しています。]
ここまでは順調ですね?
私の本当の質問は、プログラムが複雑なモデリングの問題を解決しているときに、費用便益分析が依然として複数のコンパイルユニットを優先するかどうかであり、有用な出力を生成するために、クラスター上でメインループを数か月繰り返す必要があります。
マルチコンパイルユニットプログラムのコンパイルには数分かかりますが、単一コンパイルユニットとして再構成された同じプログラムのコンパイルには数時間かかります...単一コンパイルユニットがすべての関数をインラインとして宣言し、最適化の機会が増える場合、余分なコンパイル時間を補うよりも、実行時間が数パーセント減少する可能性があることを期待するのは合理的だと思います。
このような状況に適した経験則はありますか、それとも状況に大きく依存しますか?
gwt - GWT コンパイラ - コンパイル ユニットとインターフェイス
この質問は、別の質問に対して受け取った回答に基づいています: https://stackoverflow.com/a/3060233/323357
私の理解では、インターフェイスを使用してサービスで戻り値の型とパラメーターの型を宣言すると、コンパイラーは複数のコンパイル ユニットを生成する必要があり、コンパイル時間と生成されるファイルのサイズが増加します。
これは事実ではないと思いますが、最新バージョンの gwt コンパイラ (2.4 - 2.5) には、不要なコンパイル ユニットを検出する方法があります...
ローカル変数とパラメータの場合?
/li>最終メンバー向け?
/li>リターンタイプ?
/li>サービスで?
/li>