Tabnine Logo
CFG$Block.successors
Code IndexAdd Tabnine to your IDE (free)

How to use
successors
method
in
org.sonar.java.cfg.CFG$Block

Best Java code snippets using org.sonar.java.cfg.CFG$Block.successors (Showing top 20 results out of 315)

  • Add the Codota plugin to your IDE and get smart completions
private void myMethod () {
List l =
  • Codota Iconnew ArrayList()
  • Codota Iconnew LinkedList()
  • Smart code suggestions by Tabnine
}
origin: SonarSource/sonar-java

private void analyzeCFG(Map<CFG.Block, Set<Symbol>> in, Map<CFG.Block, Set<Symbol>> kill, Map<CFG.Block, Set<Symbol>> gen) {
 Deque<CFG.Block> workList = new LinkedList<>();
 workList.addAll(cfg.reversedBlocks());
 while (!workList.isEmpty()) {
  CFG.Block block = workList.removeFirst();
  Set<Symbol> blockOut = out.computeIfAbsent(block, k -> new HashSet<>());
  block.successors().stream().map(in::get).filter(Objects::nonNull).forEach(blockOut::addAll);
  block.exceptions().stream().map(in::get).filter(Objects::nonNull).forEach(blockOut::addAll);
  // in = gen and (out - kill)
  Set<Symbol> newIn = new HashSet<>(gen.get(block));
  newIn.addAll(Sets.difference(blockOut, kill.get(block)));
  if (newIn.equals(in.get(block))) {
   continue;
  }
  in.put(block, newIn);
  block.predecessors().forEach(workList::addLast);
 }
}
origin: org.sonarsource.java/java-frontend

private void analyzeCFG(Map<CFG.Block, Set<Symbol>> in, Map<CFG.Block, Set<Symbol>> kill, Map<CFG.Block, Set<Symbol>> gen) {
 Deque<CFG.Block> workList = new LinkedList<>();
 workList.addAll(cfg.reversedBlocks());
 while (!workList.isEmpty()) {
  CFG.Block block = workList.removeFirst();
  Set<Symbol> blockOut = out.computeIfAbsent(block, k -> new HashSet<>());
  block.successors().stream().map(in::get).filter(Objects::nonNull).forEach(blockOut::addAll);
  block.exceptions().stream().map(in::get).filter(Objects::nonNull).forEach(blockOut::addAll);
  // in = gen and (out - kill)
  Set<Symbol> newIn = new HashSet<>(gen.get(block));
  newIn.addAll(Sets.difference(blockOut, kill.get(block)));
  if (newIn.equals(in.get(block))) {
   continue;
  }
  in.put(block, newIn);
  block.predecessors().forEach(workList::addLast);
 }
}
origin: org.sonarsource.java/java-squid

private void analyzeCFG(Map<CFG.Block, Set<Symbol>> in, Map<CFG.Block, Set<Symbol>> kill, Map<CFG.Block, Set<Symbol>> gen) {
 Deque<CFG.Block> workList = new LinkedList<>();
 workList.addAll(cfg.reversedBlocks());
 while (!workList.isEmpty()) {
  CFG.Block block = workList.removeFirst();
  Set<Symbol> blockOut = out.get(block);
  if (blockOut == null) {
   blockOut = new HashSet<>();
   out.put(block, blockOut);
  }
  for (CFG.Block successor : block.successors()) {
   Set<Symbol> inOfSuccessor = in.get(successor);
   if (inOfSuccessor != null) {
    blockOut.addAll(inOfSuccessor);
   }
  }
  // in = gen and (out - kill)
  Set<Symbol> newIn = new HashSet<>(gen.get(block));
  newIn.addAll(Sets.difference(blockOut, kill.get(block)));
  if (newIn.equals(in.get(block))) {
   continue;
  }
  in.put(block, newIn);
  for (CFG.Block predecessor : block.predecessors()) {
   workList.addLast(predecessor);
  }
 }
}
origin: org.sonarsource.java/java-squid

programPosition = node.programPoint;
programState = node.programState;
if (programPosition.block.successors().isEmpty()) {
 checkerDispatcher.executeCheckEndOfExecutionPath(constraintManager);
 LOG.debug("End of potential path reached!");
origin: org.sonarsource.java/java-frontend

@CheckForNull
private static Set<Block> localSuccessors(CFG.Block block, Map<Tree, CFGLoop> container) {
 if (isStarting(block)) {
  CFGLoop loop = container.get(block.terminator());
  if (loop == null) {
   loop = create(block, container);
  }
  Set<Block> loopSuccessors = new HashSet<>(loop.successors);
  if (block.trueBlock() == null) {
   // Special case where no condition is given in FOR loop: only one successor specified
   return null;
  } else {
   loopSuccessors.add(block.falseBlock());
  }
  return loopSuccessors;
 }
 return block.successors();
}
origin: org.sonarsource.java/java-checks

private void checkBlock(Block block) {
 Block successorWithoutJump = block.successorWithoutJump();
 Tree terminator = block.terminator();
 if (terminator != null
  && successorWithoutJump != null
  && terminator.is(Tree.Kind.CONTINUE_STATEMENT, Tree.Kind.RETURN_STATEMENT)
  && !isReturnWithExpression(terminator)
  && !isSwitchCaseChild(terminator)) {
  successorWithoutJump = nonEmptySuccessor(successorWithoutJump);
  Block successor = nonEmptySuccessor(block.successors().iterator().next());
  if (successorWithoutJump.equals(successor)) {
   reportIssue(terminator, "Remove this redundant jump.");
  }
 }
}
origin: SonarSource/sonar-java

@CheckForNull
private static Set<Block> localSuccessors(CFG.Block block, Map<Tree, CFGLoop> container) {
 if (isStarting(block)) {
  CFGLoop loop = container.get(block.terminator());
  if (loop == null) {
   loop = create(block, container);
  }
  Set<Block> loopSuccessors = new HashSet<>(loop.successors);
  if (block.trueBlock() == null) {
   // Special case where no condition is given in FOR loop: only one successor specified
   return null;
  } else {
   loopSuccessors.add(block.falseBlock());
  }
  return loopSuccessors;
 }
 return block.successors();
}
origin: org.sonarsource.java/java-checks

@Override
public void visitNode(Tree tree) {
 SwitchStatementTree switchStatementTree = (SwitchStatementTree) tree;
 List<CaseGroupTree> caseGroupTrees = switchStatementTree.cases();
 CFG cfg = CFG.buildCFG(Collections.singletonList(tree), true);
 Set<CFG.Block> switchSuccessors = cfg.entryBlock().successors();
 Map<CFG.Block, CaseGroupTree> cfgBlockToCaseGroupMap = createMapping(switchSuccessors, caseGroupTrees);
 switchSuccessors.stream()
  .filter(cfgBlockToCaseGroupMap.keySet()::contains)
  .flatMap(cfgBlock -> getForbiddenCaseGroupPredecessors(cfgBlock, cfgBlockToCaseGroupMap))
  .map(CaseGroupTree::labels)
  .map(caseGroupLabels -> caseGroupLabels.get(caseGroupLabels.size() - 1))
  .forEach(label -> reportIssue(label, "End this switch case with an unconditional break, return or throw statement."));
}
origin: org.sonarsource.java/java-frontend

private static boolean isDirectFlowSuccessorOf(CFG.Block successor, CFG.Block block) {
 return successor != block.exitBlock() || (block.successors().size() == 1 && successor.isMethodExitBlock());
}
origin: SonarSource/sonar-java

@Override
public void visitNode(Tree tree) {
 SwitchStatementTree switchStatementTree = (SwitchStatementTree) tree;
 List<CaseGroupTree> caseGroupTrees = switchStatementTree.cases();
 CFG cfg = CFG.buildCFG(Collections.singletonList(tree), true);
 Set<CFG.Block> switchSuccessors = cfg.entryBlock().successors();
 Map<CFG.Block, CaseGroupTree> cfgBlockToCaseGroupMap = createMapping(switchSuccessors, caseGroupTrees);
 switchSuccessors.stream()
  .filter(cfgBlockToCaseGroupMap.keySet()::contains)
  .flatMap(cfgBlock -> getForbiddenCaseGroupPredecessors(cfgBlock, cfgBlockToCaseGroupMap))
  .map(CaseGroupTree::labels)
  .map(caseGroupLabels -> caseGroupLabels.get(caseGroupLabels.size() - 1))
  .forEach(label -> reportIssue(label, "End this switch case with an unconditional break, return or throw statement."));
}
origin: org.sonarsource.java/java-frontend

public boolean isMethodExitBlock() {
 return successors().isEmpty();
}
origin: SonarSource/sonar-java

private static boolean isDirectFlowSuccessorOf(CFG.Block successor, CFG.Block block) {
 return successor != block.exitBlock() || (block.successors().size() == 1 && successor.isMethodExitBlock());
}
origin: SonarSource/sonar-java

public boolean isMethodExitBlock() {
 return successors().isEmpty();
}
origin: SonarSource/sonar-java

private void checkBlock(Block block) {
 Block successorWithoutJump = block.successorWithoutJump();
 Tree terminator = block.terminator();
 if (terminator != null
  && successorWithoutJump != null
  && terminator.is(Tree.Kind.CONTINUE_STATEMENT, Tree.Kind.RETURN_STATEMENT)
  && !isReturnWithExpression(terminator)
  && !isSwitchCaseChild(terminator)) {
  successorWithoutJump = nonEmptySuccessor(successorWithoutJump);
  Block successor = nonEmptySuccessor(block.successors().iterator().next());
  if (successorWithoutJump.equals(successor)) {
   reportIssue(terminator, "Remove this redundant jump.");
  }
 }
}
origin: org.sonarsource.java/java-checks

 private static Block nonEmptySuccessor(Block initialBlock) {
  Block result = initialBlock;
  while (result.elements().isEmpty() && result.successors().size() == 1) {
   result = result.successors().iterator().next();
  }
  return result;
 }
}
origin: org.sonarsource.java/java-frontend

private void collectWaysOut(Map<Tree, CFGLoop> container) {
 for (CFG.Block block : blocks) {
  if (isStarting(block)) {
   CFGLoop innerLoop = container.get(block.terminator());
   successors.addAll(innerLoop.successors());
  } else {
   successors.addAll(block.successors());
  }
 }
 successors.removeAll(blocks);
 successors.remove(startingBlock);
}
origin: SonarSource/sonar-java

private void collectWaysOut(Map<Tree, CFGLoop> container) {
 for (CFG.Block block : blocks) {
  if (isStarting(block)) {
   CFGLoop innerLoop = container.get(block.terminator());
   successors.addAll(innerLoop.successors());
  } else {
   successors.addAll(block.successors());
  }
 }
 successors.removeAll(blocks);
 successors.remove(startingBlock);
}
origin: SonarSource/sonar-java

private void initialize(CFG.Block block, Map<Tree, CFGLoop> container) {
 Block loopFirstBlock = block.trueBlock();
 if (loopFirstBlock == null) {
  // Special case where no condition is given in FOR loop: only one successor specified
  loopFirstBlock = block.successors().iterator().next();
 }
 collectBlocks(loopFirstBlock, container);
 successors.addAll(block.successors());
 successors.remove(block.falseBlock());
 collectWaysOut(container);
}
origin: SonarSource/sonar-java

 private static Block nonEmptySuccessor(Block initialBlock) {
  Block result = initialBlock;
  while (result.elements().isEmpty() && result.successors().size() == 1) {
   result = result.successors().iterator().next();
  }
  return result;
 }
}
origin: org.sonarsource.java/java-frontend

private void initialize(CFG.Block block, Map<Tree, CFGLoop> container) {
 Block loopFirstBlock = block.trueBlock();
 if (loopFirstBlock == null) {
  // Special case where no condition is given in FOR loop: only one successor specified
  loopFirstBlock = block.successors().iterator().next();
 }
 collectBlocks(loopFirstBlock, container);
 successors.addAll(block.successors());
 successors.remove(block.falseBlock());
 collectWaysOut(container);
}
org.sonar.java.cfgCFG$Blocksuccessors

Popular methods of CFG$Block

  • elements
  • predecessors
  • terminator
  • <init>
  • addExitSuccessor
  • addFalseSuccessor
  • addSuccessor
  • addTrueSuccessor
  • exitBlock
  • falseBlock
  • id
  • isFinallyBlock
  • id,
  • isFinallyBlock,
  • isInactive,
  • trueBlock,
  • caseGroup,
  • exceptions,
  • isCatchBlock,
  • isMethodExitBlock,
  • setCaseGroup

Popular in Java

  • Making http post requests using okhttp
  • scheduleAtFixedRate (Timer)
  • runOnUiThread (Activity)
  • getSharedPreferences (Context)
  • ServerSocket (java.net)
    This class represents a server-side socket that waits for incoming client connections. A ServerSocke
  • Charset (java.nio.charset)
    A charset is a named mapping between Unicode characters and byte sequences. Every Charset can decode
  • Permission (java.security)
    Legacy security code; do not use.
  • DateFormat (java.text)
    Formats or parses dates and times.This class provides factories for obtaining instances configured f
  • HashSet (java.util)
    HashSet is an implementation of a Set. All optional operations (adding and removing) are supported.
  • BlockingQueue (java.util.concurrent)
    A java.util.Queue that additionally supports operations that wait for the queue to become non-empty
  • Top 17 Free Sublime Text Plugins
Tabnine Logo
  • Products

    Search for Java codeSearch for JavaScript code
  • IDE Plugins

    IntelliJ IDEAWebStormVisual StudioAndroid StudioEclipseVisual Studio CodePyCharmSublime TextPhpStormVimAtomGoLandRubyMineEmacsJupyter NotebookJupyter LabRiderDataGripAppCode
  • Company

    About UsContact UsCareers
  • Resources

    FAQBlogTabnine AcademyStudentsTerms of usePrivacy policyJava Code IndexJavascript Code Index
Get Tabnine for your IDE now