/// <summary> /// /// </summary> /// <param name="LanguageID"></param> /// <param name="load_files_options"></param> public CSyntacticUnitsInfoProvider(LANGUAGES LanguageID, CLoadFilesOptions load_files_options) : base(load_files_options) { m_Extension = CAvailableExtentions.GetExtention(LanguageID); m_SynUnitsCollection = new CSyntacticUnitsCollection(); m_CountOfSyntacticUnits = 0; }
/// <summary> /// Получить набор синтаксических единиц для заданного файла /// </summary> /// <param name="filename"></param> protected override void LoadOneFile(string filename) { CTokenizerParms args = new CTokenizerParms(filename, m_LoadOptions.FileEncoding, new CSourceFileID()); CSyntacticUnitsCollection current_collection = m_Extension.Syntacticize(args); m_CountOfSyntacticUnits += current_collection.Size(); //Interlocked.Add(ref m_CountOfSyntacticUnits, current_collection.Size()); m_SynUnitsCollection.AddRange(current_collection); }
/// <summary> /// Получить синтаксические характеристики кода /// </summary> /// <returns></returns> public virtual CSyntacticInfo Calculate() { m_SynUnitsCollection = new CSyntacticUnitsCollection(); m_CountOfSyntacticUnits = 0; ProcessLoad(); calc_metrics(); save(); return(info); }
public void SyntacticizeTest2() { string filename = Path.GetFullPath("UnitTestSampleFile2.cs"); Assert.IsTrue(File.Exists(filename)); CCsICloneExtension target = new CCsICloneExtension(); CTokenizerParms args = new CTokenizerParms(filename, new CSourceFileID()); CSyntacticUnitsCollection actual = target.Syntacticize(args); Assert.AreEqual(12, actual.Size()); Assert.AreEqual(37, actual[0].Size()); }
/// <summary> /// Представить исходный код, содержащийся в файле, в виде набора синтаксических единиц /// </summary> /// <param name="args"></param> /// <returns></returns> public override CSyntacticUnitsCollection Syntacticize(CTokenizerParms args) { CSyntacticUnitsCollection syntactic_collection = new CSyntacticUnitsCollection(); Parser parser = new Parser(new Scanner(args.GetPath()), string.Empty); CounterCollection counters = parser.Parse(); if (parser.errors.count > 0) { //throw new System.Exception(args.GetPath() + " parse error"); } else { SyntUnitCreator synt_creator = new SyntUnitCreator(args); foreach (MethodBlock mb in counters.MethodCounters) { syntactic_collection.Add(synt_creator.FromMethodBlock(mb)); } } return(syntactic_collection); }