public function build($alternativeHost = null)
    {
        // Crawl directory and parse all files
        $finder = Util::finder($this->directories, []);
        foreach ($finder as $file) {
            $this->analysis->addAnalysis($this->analyser->fromFile($file->getPathname()));
        }

        // Set alternative host
        $this->analysis->alternativeHost = $alternativeHost;

        // Post processing
        $this->analysis->process($this->processors);

        // Validation (Generate notices & warnings)
        $this->analysis->validate();

        return $this;
    }