Class SymbolUtils

java.lang.Object
org.sonar.python.semantic.SymbolUtils

public class SymbolUtils extends Object
  • Method Details

    • getModuleFileName

      public static String getModuleFileName(String fileName)
    • fullyQualifiedModuleName

      public static String fullyQualifiedModuleName(String packageName, String fileName)
    • assignmentsLhs

      public static List<Expression> assignmentsLhs(AssignmentStatement assignmentStatement)
    • boundNamesFromExpression

      public static List<Name> boundNamesFromExpression(@CheckForNull Tree tree)
    • pythonPackageName

      public static String pythonPackageName(File file, List<String> packageRoots, String projectBaseDirAbsolutePath)
      Computes the Python package name for a file using package roots.

      If the file is under one of the provided package roots, computes the package name by converting the relative path from the root to the file's parent directory into a dotted package name. This supports PEP 420 namespace packages (directories without __init__.py).

      If the file is not under any package root, falls back to the legacy behavior of walking up the directory tree and checking for __init__.py files.

      Parameters:
      file - the Python source file
      packageRoots - list of absolute paths to package root directories
      projectBaseDirAbsolutePath - the project base directory absolute path (used for fallback)
      Returns:
      the dotted package name, or empty string if not in a package
    • pythonPackageName

      public static String pythonPackageName(File file, String projectBaseDirAbsolutePath)
      Computes the Python package name for a file using legacy __init__.py detection only. This method is kept for backward compatibility.
      Parameters:
      file - the Python source file
      projectBaseDirAbsolutePath - the project base directory absolute path
      Returns:
      the dotted package name, or empty string if not in a package
    • pathOf

      @CheckForNull public static Path pathOf(PythonFile pythonFile)
    • firstParameterOffset

      public static int firstParameterOffset(FunctionSymbol functionSymbol, boolean isStaticCall)
      Returns:
      the offset between parameter position and argument position: 0 if there is no implicit first parameter (self, cls, etc...) 1 if there is an implicit first parameter -1 if unknown (intent is not clear from context)
    • getOverriddenMethod

      public static Optional<FunctionSymbol> getOverriddenMethod(FunctionSymbol functionSymbol)
    • getOverriddenMethods

      public static List<FunctionSymbol> getOverriddenMethods(FunctionSymbol functionSymbol)
    • getFunctionSymbols

      public static List<FunctionSymbol> getFunctionSymbols(@Nullable Symbol symbol)
    • getFirstAlternativeIfEqualArgumentNames

      public static Optional<FunctionSymbol> getFirstAlternativeIfEqualArgumentNames(List<FunctionSymbol> alternatives)
    • isEqualParameterCountAndNames

      public static boolean isEqualParameterCountAndNames(List<FunctionSymbol> alternatives)
    • canBeAnOverridingMethod

      public static boolean canBeAnOverridingMethod(@Nullable FunctionSymbol functionSymbol)
    • typeshedSymbolWithFQN

      public static Symbol typeshedSymbolWithFQN(String fullyQualifiedName)
    • flattenAmbiguousSymbols

      public static Set<Symbol> flattenAmbiguousSymbols(Set<Symbol> symbols)
    • isPrivateName

      public static boolean isPrivateName(String name)
    • qualifiedNameOrEmpty

      public static String qualifiedNameOrEmpty(CallExpression callExpression)
    • getPythonType

      public static PythonType getPythonType(SymbolV2 symbol)
    • symbolV2ToSymbolV1

      public static Optional<Symbol> symbolV2ToSymbolV1(SymbolV2 symbolV2)