mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 10:49:34 +02:00
GP-5171: Generating pypredef files for PyDev. Fixing PyDev
errors/warnings in PyGhidra.
This commit is contained in:
parent
e66bbc5231
commit
56d6af4531
16 changed files with 108 additions and 92 deletions
|
@ -56,6 +56,16 @@ class GhidraBuiltinsBuilder {
|
|||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
File pypredefDir = new File(doclet.getDestDir().getParentFile(), "pypredef");
|
||||
File pypredefFile = new File(pypredefDir, "ghidra.ghidra_builtins.pypredef");
|
||||
pypredefDir.mkdirs();
|
||||
try (PrintWriter printer = new PrintWriter(new FileWriter(pypredefFile))) {
|
||||
process(printer);
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,20 +15,10 @@
|
|||
*/
|
||||
package ghidra.doclets.typestubs;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.PackageElement;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.*;
|
||||
|
||||
/**
|
||||
* {@link PythonTypeStubElement} for a package<p/>
|
||||
|
@ -105,6 +95,16 @@ final class PythonTypeStubPackage extends PythonTypeStubElement<PackageElement>
|
|||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
File pypredefDir = new File(doclet.getDestDir().getParentFile(), "pypredef");
|
||||
File pypredefFile = new File(pypredefDir, packageName + ".pypredef");
|
||||
pypredefDir.mkdirs();
|
||||
try (PrintWriter printer = new PrintWriter(new FileWriter(pypredefFile))) {
|
||||
process(printer, "");
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,27 +16,12 @@
|
|||
package ghidra.doclets.typestubs;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.ExecutableElement;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.TypeParameterElement;
|
||||
import javax.lang.model.element.VariableElement;
|
||||
import javax.lang.model.type.DeclaredType;
|
||||
import javax.lang.model.type.TypeKind;
|
||||
import javax.lang.model.type.TypeMirror;
|
||||
import javax.lang.model.element.*;
|
||||
import javax.lang.model.type.*;
|
||||
|
||||
import com.sun.source.doctree.DocTree;
|
||||
|
||||
|
@ -278,12 +263,11 @@ class PythonTypeStubType extends PythonTypeStubElement<TypeElement> {
|
|||
for (PythonTypeStubNestedType nested : getNestedTypes()) {
|
||||
nested.process(printer, indent);
|
||||
}
|
||||
printClassLiteralField(printer, indent);
|
||||
for (VariableElement field : getFields()) {
|
||||
printField(field, printer, indent, isStatic(field));
|
||||
}
|
||||
if (!getFields().isEmpty()) {
|
||||
printer.println();
|
||||
}
|
||||
printer.println();
|
||||
ListIterator<PythonTypeStubMethod> methodIterator = getMethods().listIterator();
|
||||
while (methodIterator.hasNext()) {
|
||||
PythonTypeStubMethod method = methodIterator.next();
|
||||
|
@ -342,6 +326,17 @@ class PythonTypeStubType extends PythonTypeStubElement<TypeElement> {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the class literal field to the provided printer
|
||||
*
|
||||
* @param printer the printer
|
||||
* @param indent the indentation
|
||||
*/
|
||||
void printClassLiteralField(PrintWriter printer, String indent) {
|
||||
printer.print(indent);
|
||||
printer.println("class_: " + applyClassVar(Class.class.getName()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps the provided type in typing.ClassVar
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue