Package org.sonar.api.resources

Examples of org.sonar.api.resources.Directory


    this.duplicateIncludeRule = DuplicatedIncludeCheck.getActiveRule(checkFactory);
  }

  public void addFile(File sonarFile, Collection<CxxPreprocessor.Include> includedFiles) {
    //Store the directory and file
    Directory sonarDir = sonarFile.getParent();
    packagesGraph.addVertex(sonarDir);
    directoryFiles.put(sonarDir, sonarFile);

    //Build the dependency graph
    for (CxxPreprocessor.Include include : includedFiles) {
      File includedFile = File.fromIOFile(new java.io.File(include.getPath()), project);
      if (includedFile == null) {
        CxxUtils.LOG.warn("Unable to find resource '" + include.getPath() + "' to create a dependency with '" + sonarFile.getKey() + "'");
      }
      else if (filesGraph.hasEdge(sonarFile, includedFile)) {
        FileEdge fileEdge = filesGraph.getEdge(sonarFile, includedFile);
        Issuable issuable = perspectives.as(Issuable.class, sonarFile);
        if ((issuable != null) && (duplicateIncludeRule != null)) {
          Issue issue = issuable.newIssueBuilder()
              .ruleKey(duplicateIncludeRule.getRule().ruleKey())
              .line(include.getLine())
              .message("Remove duplicated include, \"" + includedFile.getLongName() + "\" is already included at line " + fileEdge.getLine() + ".")
              .build();
          if (issuable.addIssue(issue))
            violationsCount++;
        }
        else {
          CxxUtils.LOG.warn("Already created edge from '" + sonarFile.getKey() + "' (line " + include.getLine() + ") to '" + includedFile.getKey() + "'" +
              ", previous edge from line " + fileEdge.getLine());
        }
      }
      else {
        //Add the dependency in the files graph
        FileEdge fileEdge = new FileEdge(sonarFile, includedFile, include.getLine());
        filesGraph.addEdge(fileEdge);

        //Add the dependency in the packages graph, if the directories are different
        Directory includedDir = includedFile.getParent();
        if (!sonarDir.equals(includedDir)) {
          DirectoryEdge edge = packagesGraph.getEdge(sonarDir, includedDir);
          if (edge == null) {
            edge = new DirectoryEdge(sonarDir, includedDir);
            packagesGraph.addEdge(edge);
View Full Code Here


  private void saveViolations(Set<Edge> feedbackEdges, DirectedGraph<Directory, DirectoryEdge> packagesGraph) {
    ActiveRule cycleBetweenPackagesRule = CycleBetweenPackagesCheck.getActiveRule(checkFactory);
    if (cycleBetweenPackagesRule != null) {
      for (Edge feedbackEdge : feedbackEdges) {
        Directory fromPackage = (Directory) feedbackEdge.getFrom();
        Directory toPackage = (Directory) feedbackEdge.getTo();
        DirectoryEdge edge = packagesGraph.getEdge(fromPackage, toPackage);
        for (FileEdge subEdge : edge.getRootEdges()) {
          Resource fromFile = subEdge.getFrom();
          Resource toFile = subEdge.getTo();
          Issuable issuable = perspectives.as(Issuable.class, fromFile);
View Full Code Here

  @Test
  public void shouldCreateUID() {
    Project project = new Project("my_project");
    assertThat(ComponentKeys.createEffectiveKey(project, project)).isEqualTo("my_project");

    Directory dir = Directory.create("src/org/foo", "org/foo");
    assertThat(ComponentKeys.createEffectiveKey(project, dir)).isEqualTo("my_project:src/org/foo");

    Library library = new Library("junit:junit", "4.7");
    assertThat(ComponentKeys.createEffectiveKey(project, library)).isEqualTo("junit:junit");
View Full Code Here

    File fromResource = getFile(dep.from());
    File toResource = getFile(dep.to());
    if (sonarIndex.getEdge(fromResource, toResource) != null) {
      throw new IllegalStateException("Dependency between " + dep.from() + " and " + dep.to() + " was already saved.");
    }
    Directory fromParent = fromResource.getParent();
    Directory toParent = toResource.getParent();
    Dependency parentDep = null;
    if (!fromParent.equals(toParent)) {
      parentDep = sonarIndex.getEdge(fromParent, toParent);
      if (parentDep != null) {
        parentDep.setWeight(parentDep.getWeight() + 1);
View Full Code Here

    assertThat(decorator.shouldComputeVariation(new File("foo/bar.c"))).isFalse();
  }

  @Test
  public void shouldCompareAndSaveVariation() {
    Resource dir = new Directory("org/foo");

    PastMeasuresLoader pastMeasuresLoader = mock(PastMeasuresLoader.class);
    PastSnapshot pastSnapshot1 = new PastSnapshot("days", new Date()).setIndex(1);
    PastSnapshot pastSnapshot3 = new PastSnapshot("days", new Date()).setIndex(3);
View Full Code Here

    rule2.setId(2);

    when(ruleFinder.findByKey(rule1.ruleKey())).thenReturn(rule1);
    when(ruleFinder.findByKey(rule2.ruleKey())).thenReturn(rule2);

    Resource dir = new Directory("org/foo");

    PastMeasuresLoader pastMeasuresLoader = mock(PastMeasuresLoader.class);
    PastSnapshot pastSnapshot1 = new PastSnapshot("days", new Date()).setIndex(1);

    // first past analysis
View Full Code Here

  @Test
  public void shouldIncrementParentWeight() {

    File foo = File.create("src1/Foo.java");
    File bar = File.create("src2/Bar.java");
    Directory src1 = Directory.create("src1");
    Directory src2 = Directory.create("src2");
    when(sensorContext.getResource(foo)).thenReturn(foo);
    when(sensorContext.getResource(bar)).thenReturn(bar);
    Dependency parentDep = new Dependency(src1, src2).setWeight(4);
    when(sonarIndex.getEdge(src1, src2)).thenReturn(parentDep);
View Full Code Here

  }

  @Test
  public void directoryCountsForOne() {
    DirectoriesDecorator decorator = new DirectoriesDecorator();
    Resource directory = new Directory("org/foo");
    DecoratorContext context = mock(DecoratorContext.class);
    decorator.decorate(directory, context);
    verify(context).saveMeasure(CoreMetrics.DIRECTORIES, 1.0);
  }
View Full Code Here

    DecoratorContext context = mock(DecoratorContext.class);
    when(context.getMeasure(CoreMetrics.LINES)).thenReturn(new Measure(CoreMetrics.LINES, 1400.0));
    when(context.getMeasure(CoreMetrics.COVERAGE)).thenReturn(new Measure(CoreMetrics.LINES, 90.0));

    TendencyDecorator decorator = new TendencyDecorator(timeMachine, query, analyser);
    decorator.decorate(new Directory("org/foo"), context);

    verify(analyser).analyseLevel(Arrays.asList(1200.0, 1300.0, 1150.0, 1400.0));
    verify(analyser).analyseLevel(Arrays.asList(80.5, 79.6, 90.0));
  }
View Full Code Here

      new Object[] {date("2009-12-02"), CoreMetrics.LINES, 1300.0}
    ));

    DecoratorContext context = mock(DecoratorContext.class);
    TendencyDecorator decorator = new TendencyDecorator(timeMachine, query, analyser);
    decorator.decorate(new Directory("org/foo"), context);

    verify(analyser, never()).analyseLevel(anyList());
  }
View Full Code Here

TOP

Related Classes of org.sonar.api.resources.Directory

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.