/** * Runs the analyzer on the given $files. * * @param array<AnalyzedFile> $files The files to process */ public function analyze($files) { $total_lines = 0; foreach ($files as $file) { if ($file->get_filetype() !== 'php') { continue; } $element = new FileElement($file); $visitor = new AnalyzerVisitor('CodeElementFactory', $element, $this->elements); $traverser = new PhpParser\NodeTraverser(); $traverser->addVisitor($visitor); $traverser->traverse($file->get_node_tree()); $this->elements['files']->add_child($visitor->get_root()); $total_lines += (int) $element->get_stat('line_count'); } $this->elements['totals']->add_stat('total_lines', $total_lines); }
public function __construct($settings, $records) { parent::__construct(array('title' => new FileString(32), 'attributes' => new FileShort(), 'version' => new FileShort(), 'creationTime' => new FileDate(), 'modificationTime' => new FileDate(), 'backupTime' => new FileDate(), 'modificationNumber' => new FileInt(), 'appInfoID' => new FileInt(), 'sortInfoID' => new FileInt(), 'prcType' => new FileString(4), 'creator' => new FileString(4), 'uniqueIDSeed' => new FileInt(), 'nextRecordListID' => new FileInt(), 'numberRecords' => new FileShort(), 'recordList' => new FileElement(), 'filler' => new FileShort(), 'records' => new FileElement())); //Set values from the info block foreach ($this->elements as $name => $val) { if ($settings->exists($name)) { $this->get($name)->set($settings->get($name)); } } $this->get('numberRecords')->set(sizeof($records)); $i = 0; foreach ($records as $record) { $offset = new FileInt(); $attr = new FileByte(); $uniqueID = new FileTri($i); $this->elements['recordList']->add('Rec' . $i, new FileElement(array('offset' => $offset, 'attribute' => $attr, 'uniqueID' => $uniqueID))); $this->elements['records']->add('Rec' . $i, $record); ++$i; } $this->updateOffsets($records); }
public function __construct($settings, $records) { parent::__construct(array("title" => new FileString(32), "attributes" => new FileShort(), "version" => new FileShort(), "creationTime" => new FileDate(), "modificationTime" => new FileDate(), "backupTime" => new FileDate(), "modificationNumber" => new FileInt(), "appInfoID" => new FileInt(), "sortInfoID" => new FileInt(), "prcType" => new FileString(4), "creator" => new FileString(4), "uniqueIDSeed" => new FileInt(), "nextRecordListID" => new FileInt(), "numberRecords" => new FileShort(), "recordList" => new FileElement(), "filler" => new FileShort(), "records" => new FileElement())); //Set values from the info block foreach ($this->elements as $name => $val) { if ($settings->exists($name)) { $this->get($name)->set($settings->get($name)); } } $this->get("numberRecords")->set(sizeof($records)); $i = 0; foreach ($records as $record) { $offset = new FileInt(); $attr = new FileByte(); $uniqueID = new FileTri($i); $this->elements["recordList"]->add("Rec" . $i, new FileElement(array("offset" => $offset, "attribute" => $attr, "uniqueID" => $uniqueID))); $this->elements["records"]->add("Rec" . $i, $record); $i++; } $this->updateOffsets($records); }
public function unserialize($data) { $this->elements->unserialize($data); }
/** * Finds an element inside this collection * * @param string name * @return io.collections.IOElement * @throws io.OperationNotSupportedException * @throws io.IOException */ public function findElement($name) { $qualified = $this->qualifiedName($name); if (!is_file($qualified)) { return NULL; } $found = new FileElement($qualified); $found->setOrigin($this); return $found; }