def analyze(folder, file):
    resultsMetrics = defaultdict(list)  # erasing for the next file

    outputFile = open(folder + "/" + CONSTS.PUPPETEER_OUT_FILE, 'a+')
    print("folder: ", folder)
    print("file: ", file)

    puppetFileCount = FileOperations.countPuppetFiles(file)
    # print("puppetFileCount: ", puppetFileCount)
    resultsMetrics[file].append(puppetFileCount)

    outputFile.write(CONSTS.PUPPET_FILE_COUNT + str(puppetFileCount) + "\n")
    Utilities.myPrint(CONSTS.PUPPET_FILE_COUNT + str(puppetFileCount))

    metricsResults = SizeMetrics.collectSizeMetrics(file, outputFile)

    for i in metricsResults:
        resultsMetrics[file].append(i)

    # puppetFileCount, totalClasses,totalDefines,totalFiles,totalPackages,totalServices,totalExecs,totalLOC
    # print("RESULTS: ", resultsMetrics)

    CONSTS.smellsResults = {}  # erasing for the next file
    SmellDectector.detectSmells(file, outputFile)

    # print("CONSTS.smellsResults: ", CONSTS.smellsResults)
    # print("\n\n")

    outputFile.close()
    return resultsMetrics, CONSTS.smellsResults
Пример #2
0
def detectMissingModules(folder, outputFile):
    #print("%s" % (inspect.stack()[0][3]))
    classNamesSet = set()
    includeClassSet = set()
    for abspath, dirs, files in os.walk(folder):
        for file in files:
            #print(file)
            if file.endswith(".pp") and not os.path.islink(os.path.join(abspath, file)):
                #print(file)
                fileObj = SourceModel.SM_File.SM_File(os.path.join(abspath, file))
                classNames, fileIncludes = detectMissingClassesByInclude(fileObj, outputFile)
                #print("Classes: %s" % ','.join(n for n in classNames))
                classNamesSet = classNamesSet.union(classNames)
                #print("Union with %s: %s" % (','.join(n for n in classNames), ','.join(n for n in classNamesSet)))
                includeClassSet = includeClassSet.union(fileIncludes)
    #print("%s: Classes: %s" % (inspect.stack()[0][3], ','.join(n for n in classNamesSet)))
    #print("%s: Class includes: %s" % (inspect.stack()[0][3], ','.join(i for i in includeClassSet)))
    missingDependencySet = includeClassSet.difference(classNamesSet)
    #print(includeClassSet)
    #print(classNamesSet)
    #print(missingDependencySet)
    Utilities.myPrint("Missing dependency set: %s" % ','.join(c for c in missingDependencySet))
    #for md in missingDependencySet:
        #Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_MIS_DEP, CONSTS.FILE_RES)
    with open('missDependencies.puppeteer.txt', 'a+') as f:
        for md in missingDependencySet:
            f.write("%s\n" % md)
            Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_MIS_DEP, CONSTS.FILE_RES)
Пример #3
0
 def getServiceResourceList(self):
     compiledRE = re.compile(SMCONSTS.SERVICE_REGEX)
     serviceResourceList = []
     for match in (compiledRE.findall(self.fileText)):
         serviceResourceText = self.extractResourceText(match)
         Utilities.myPrint("Extracted service declaration: " + serviceResourceText)
         serviceResourceObj = SourceModel.SM_ServiceResource.SM_ServiceResource(serviceResourceText)
         serviceResourceList.append(serviceResourceObj)
     return serviceResourceList
Пример #4
0
 def getPackageResourceList(self):
     compiledRE = re.compile(SMCONSTS.PACKAGE_REGEX)
     packageResourceList = []
     for match in (compiledRE.findall(self.fileText)):
         packageResourceText = self.extractResourceText(match)
         Utilities.myPrint("Extracted package declaration: " + packageResourceText)
         packageResourceObj = SourceModel.SM_PackageResource.SM_PackageResource(packageResourceText)
         packageResourceList.append(packageResourceObj)
     return packageResourceList
Пример #5
0
 def getDefineDeclarationList(self):
     compiledRE = re.compile(SMCONSTS.DEFINE_REGEX)
     defineList = []
     for match in compiledRE.findall(self.fileText):
         defineText, s, e = self.extractElementText(match)
         Utilities.myPrint("Extracted define declaration: " + defineText)
         defineObj = SourceModel.SM_Define.SM_Define(defineText)
         defineList.append(defineObj)
     return defineList
Пример #6
0
 def getNodeDeclarations(self):
     compiledRE = re.compile(SMCONSTS.NODE_REGEX)
     nodeResourceList = []
     for match in (compiledRE.findall(self.fileText)):
         nodeResourceText = self.extractResourceText(match)
         Utilities.myPrint("Extracted node declaration: " + nodeResourceText)
         nodeResourceObj = SourceModel.SM_Node.SM_Node(nodeResourceText)
         nodeResourceList.append(nodeResourceObj)
     return nodeResourceList
Пример #7
0
 def getFileResourceList(self):
     compiledRE = re.compile(SMCONSTS.FILE_REGEX)
     fileResourceList = []
     for match in (compiledRE.findall(self.fileText)):
         fileResourceText = self.extractResourceText(match)
         Utilities.myPrint("Extracted file declaration: " + fileResourceText)
         fileResourceObj = SourceModel.SM_FileResource.SM_FileResource(fileResourceText)
         fileResourceList.append(fileResourceObj)
     return fileResourceList
Пример #8
0
 def getDefineDeclarationList(self):
     compiledRE = re.compile(SMCONSTS.DEFINE_REGEX)
     defineList = []
     for match in compiledRE.findall(self.fileText):
         defineText, s, e = self.extractElementText(match)
         Utilities.myPrint("Extracted define declaration: " + defineText)
         defineObj = SourceModel.SM_Define.SM_Define(defineText)
         defineList.append(defineObj)
     return defineList
Пример #9
0
 def getNodeDeclarations(self):
     compiledRE = re.compile(SMCONSTS.NODE_REGEX)
     nodeResourceList = []
     for match in (compiledRE.findall(self.fileText)):
         nodeResourceText = self.extractResourceText(match)
         Utilities.myPrint("Extracted node declaration: " +
                           nodeResourceText)
         nodeResourceObj = SourceModel.SM_Node.SM_Node(nodeResourceText)
         nodeResourceList.append(nodeResourceObj)
     return nodeResourceList
Пример #10
0
 def getFileResourceList(self):
     compiledRE = re.compile(SMCONSTS.FILE_REGEX)
     fileResourceList = []
     for match in (compiledRE.findall(self.fileText)):
         fileResourceText = self.extractResourceText(match)
         Utilities.myPrint("Extracted file declaration: " +
                           fileResourceText)
         fileResourceObj = SourceModel.SM_FileResource.SM_FileResource(
             fileResourceText)
         fileResourceList.append(fileResourceObj)
     return fileResourceList
Пример #11
0
 def getPackageResourceList(self):
     compiledRE = re.compile(SMCONSTS.PACKAGE_REGEX)
     packageResourceList = []
     for match in (compiledRE.findall(self.fileText)):
         packageResourceText = self.extractResourceText(match)
         Utilities.myPrint("Extracted package declaration: " +
                           packageResourceText)
         packageResourceObj = SourceModel.SM_PackageResource.SM_PackageResource(
             packageResourceText)
         packageResourceList.append(packageResourceObj)
     return packageResourceList
Пример #12
0
 def getServiceResourceList(self):
     compiledRE = re.compile(SMCONSTS.SERVICE_REGEX)
     serviceResourceList = []
     for match in (compiledRE.findall(self.fileText)):
         serviceResourceText = self.extractResourceText(match)
         Utilities.myPrint("Extracted service declaration: " +
                           serviceResourceText)
         serviceResourceObj = SourceModel.SM_ServiceResource.SM_ServiceResource(
             serviceResourceText)
         serviceResourceList.append(serviceResourceObj)
     return serviceResourceList
Пример #13
0
 def getClassDeclarationList(self):
     compiledRE = re.compile(SMCONSTS.CLASS_REGEX)
     compiledClassNameRE = re.compile(SMCONSTS.CLASS_NAME_REGEX)
     classList = []
     for match in compiledRE.findall(self.fileText):
         className = compiledClassNameRE.findall(match)[0]
         #print("Class name: %s" % (className))
         classText = self.extractResourceText(match)
         Utilities.myPrint("Extracted class declaration: " + classText)
         classObj = SourceModel.SM_Class.SM_Class(classText, className)
         classList.append(classObj)
     return classList
Пример #14
0
 def getClassDeclarationList(self):
     compiledRE = re.compile(SMCONSTS.CLASS_REGEX)
     compiledClassNameRE = re.compile(SMCONSTS.CLASS_NAME_REGEX)
     classList = []
     for match in compiledRE.findall(self.fileText):
         className = compiledClassNameRE.findall(match)[0]
         #print("Class name: %s" % (className))
         classText = self.extractResourceText(match)
         Utilities.myPrint("Extracted class declaration: " + classText)
         classObj = SourceModel.SM_Class.SM_Class(classText, className)
         classList.append(classObj)
     return classList
Пример #15
0
 def getOnlyIncludeClassesCount(self):
     cnt_of_includes = 0
     compiledIncludeRE = re.compile(SMCONSTS.ONLY_INCLUDE_REGEX)
     declareClassList = []
     for match in (compiledIncludeRE.findall(self.fileText)):
         cnt_of_includes = cnt_of_includes + 1
         #print match
         declareClassText = match
         cleanInclude = re.sub(r'^\s*include \[?(.+)\]?\s*$', r'\1',
                               declareClassText)
         #print "Clean include: ", cleanInclude
         class_name = r'(?:Class\[)?\'?\:{0,2}([\w\d\:\-_\$]+)\'?\]?'
         classRE = re.compile(class_name)
         if ',' in cleanInclude:
             classes = cleanInclude.split(',')
             for c in classes:
                 for m in classRE.findall(c):
                     # Find a variable value in text
                     if m.startswith('$'):
                         #print("Variable: %s" % m)
                         varRE = r'(?:^|\n)\s*\$[\w\d\-_]+\s?=\s?\'?\"?([\w\d\-_]+)\'?\"?\n'
                         compiledVarRE = re.compile(varRE)
                         for v in (compiledVarRE.findall(self.fileText)):
                             #print(v)
                             declareClassName = v
                             #Utilities.myPrint("Extracted include class declaration: " + declareClassText)
                             declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                                 declareClassText, declareClassName)
                             declareClassList.append(declareResourceObj)
                             break
                             #print("Variable %s value)
                             #print "if block: Extracted class name:", m
                     else:
                         declareClassName = m
                         Utilities.myPrint(
                             "Extracted include class declaration: " +
                             declareClassText)
                         declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                             declareClassText, declareClassName)
                         declareClassList.append(declareResourceObj)
         else:
             for c in classRE.findall(cleanInclude):
                 #print "else block: Extracted class name: ", c
                 declareClassName = c
                 #print("%s" % includeClassText)
                 #Utilities.myPrint("Extracted include class declaration: " + declareClassText)
                 declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                     declareClassText, declareClassName)
                 declareClassList.append(declareResourceObj)
     #print "Declre class list contents in the end:", declareClassList
     #print "Total count of includes: ", cnt_of_includes
     return cnt_of_includes
Пример #16
0
def analyze(folder, repoName):
    outputFile = open(folder + "/" + CONSTS.PUPPETEER_OUT_FILE, 'w')

    puppetFileCount = FileOperations.countPuppetFiles(folder)
    outputFile.write(CONSTS.PUPPET_FILE_COUNT + str(puppetFileCount) + "\n")
    Utilities.myPrint(CONSTS.PUPPET_FILE_COUNT + str(puppetFileCount))

    SizeMetrics.collectSizeMetrics(folder, outputFile)

    SmellDectector.detectSmells(folder, outputFile)

    outputFile.close()
    return
Пример #17
0
    def getOnlyRequireCount(self):
        cnt_of_requires = 0
        compiledIncludeRE = re.compile(SMCONSTS.ONLY_REQUIRE_REGEX)
        declareClassList = []
        for match in (compiledIncludeRE.findall(self.fileText)):
            cnt_of_requires = cnt_of_requires + 1
            #print match
            declareClassText = match
            cleanInclude = re.sub(r'^\s*require \[?(.+)\]?\s*$', r'\1',
                                  declareClassText)
            class_name = r'(?:Class\[)?\'?\:{0,2}([\w\d\:\-_\$]+)\'?\]?'
            classRE = re.compile(class_name)
            if ',' in cleanInclude:
                classes = cleanInclude.split(',')
                for c in classes:
                    for m in classRE.findall(c):
                        # Find a variable value in text
                        if m.startswith('$'):
                            #print("Variable: %s" % m)
                            varRE = r'(?:^|\n)\s*\$[\w\d\-_]+\s?=\s?\'?\"?([\w\d\-_]+)\'?\"?\n'
                            compiledVarRE = re.compile(varRE)
                            for v in (compiledVarRE.findall(self.fileText)):
                                #print(v)
                                declareClassName = v

                                declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                                    declareClassText, declareClassName)
                                declareClassList.append(declareResourceObj)
                                break
                        else:
                            declareClassName = m
                            Utilities.myPrint(
                                "Extracted include class declaration: " +
                                declareClassText)
                            declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                                declareClassText, declareClassName)
                            declareClassList.append(declareResourceObj)
            else:
                for c in classRE.findall(cleanInclude):
                    declareClassName = c

                    declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                        declareClassText, declareClassName)
                    declareClassList.append(declareResourceObj)

        return cnt_of_requires
Пример #18
0
 def getPhysicalResourceDeclarationCount(self):
     pkg_count = 0
     compiledRE = re.compile(r'\'.+\'\W*:|\".+\":')
     tempVar = compiledRE.findall(self.resourceText)
     Utilities.myPrint("Found package declarations: " + str(tempVar))
     pkg_count = len(tempVar)
     # Find list type package declarations
     compiledRE = re.compile(r'{\[((\".+?\"),?)+\]:\s*}')
     result = compiledRE.finditer(self.resourceText)
     all_pkgs = ""
     for m in result:
         all_pkgs = m.group(1)
     pkgs = all_pkgs.split(',')
     for pkg in pkgs:
         Utilities.myPrint("Found package declarations: " + str(pkg))
     pkg_count += len(pkgs)
     return pkg_count
Пример #19
0
 def getIncludeClasses(self):
     compiledIncludeRE = re.compile(SMCONSTS.DECLARE_INCLUDE_REGEX)
     compiledResourceRE = re.compile(SMCONSTS.DECLARE_RESOURCE_REGEX)
     declareClassList = []
     declareClassName = ""
     for match in (compiledIncludeRE.findall(self.fileText)):
         #print(match)
         declareClassText = match
         cleanInclude = re.sub(r'^\s*include \[?(.+)\]?\s*$', r'\1', declareClassText)
         #print("Clean include: %s" % cleanInclude)
         class_name = r'(?:Class\[)?\'?\:{0,2}([\w\d\:\-_\$]+)\'?\]?'
         classRE = re.compile(class_name)
         if ',' in cleanInclude:
           classes = cleanInclude.split(',')
           for c in classes:
             for m in classRE.findall(c):
               # Find a variable value in text
               if m.startswith('$'):
                 #print("Variable: %s" % m)
                 varRE = r'(?:^|\n)\s*\$[\w\d\-_]+\s?=\s?\'?\"?([\w\d\-_]+)\'?\"?\n'
                 compiledVarRE = re.compile(varRE)
                 for v in (compiledVarRE.findall(self.fileText)):
                   #print(v)
                   declareClassName = v
                   Utilities.myPrint("Extracted include class declaration: " + declareClassText)
                   declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(declareClassText, declareClassName)
                   declareClassList.append(declareResourceObj)
                   break
                   #print("Variable %s value)
               #print("Extracted class name: %s" % m)
               else:
                 declareClassName = m
                 Utilities.myPrint("Extracted include class declaration: " + declareClassText)
                 declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(declareClassText, declareClassName)
                 declareClassList.append(declareResourceObj)
         else:
           for c in classRE.findall(cleanInclude):
             #print("Extracted class name: %s" % c)
             declareClassName = c
         #print("%s" % includeClassText)
             Utilities.myPrint("Extracted include class declaration: " + declareClassText)
             declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(declareClassText, declareClassName)
             declareClassList.append(declareResourceObj)
     for match in (compiledResourceRE.findall(self.fileText)):
         #print(match)
         declareClassText = match
         declareClassName = declareClassText
         #print("%s" % includeClassText)
         Utilities.myPrint("Extracted resource class declaration: " + declareClassText)
         declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(declareClassText, declareClassName)
         declareClassList.append(declareResourceObj)
     return declareClassList
Пример #20
0
def collectSizeMetrics(folder, outputFile):
    totalClasses = 0
    totalDefines = 0
    totalFiles = 0
    totalPackages = 0
    totalServices = 0
    totalExecs = 0
    totalLOC = 0
    for root, dirs, files in os.walk(folder):
        for file in files:
            if file.endswith(".pp") and not os.path.islink(
                    os.path.join(root, file)):
                Utilities.myPrint("Reading file: " + os.path.join(root, file))
                fileObj = SourceModel.SM_File.SM_File(os.path.join(root, file))

                totalClasses += fileObj.getNoOfClassDeclarations()
                totalDefines += fileObj.getNoOfDefineDeclarations()
                totalFiles += fileObj.getNoOfFileDeclarations()
                totalPackages += fileObj.getNoOfPackageDeclarations()
                totalServices += fileObj.getNoOfServiceDeclarations()
                totalExecs += fileObj.getNoOfExecDeclarations()
                totalLOC += fileObj.getLinesOfCode()

    print("1,TotalClasses," + str(totalClasses) + "\n")

    print("1,TotalDefines," + str(totalDefines) + "\n")

    print("1,TotalFiles," + str(totalFiles) + "\n")

    print("1,TotalPackages," + str(totalPackages) + "\n")

    print("1,TotalServices," + str(totalServices) + "\n")

    print("1,TotalExecs," + str(totalExecs) + "\n")

    print("1,TotalLOC," + str(totalLOC) + "\n")
Пример #21
0
def collectSizeMetrics(folder, outputFile):
    totalClasses = 0
    totalDefines = 0
    totalFiles = 0
    totalPackages = 0
    totalServices = 0
    totalExecs = 0
    totalLOC = 0
    for root, dirs, files in os.walk(folder):
        for file in files:
            if file.endswith(".pp") and not os.path.islink(os.path.join(root, file)):
                Utilities.myPrint("Reading file: " + os.path.join(root, file))
                fileObj = SourceModel.SM_File.SM_File(os.path.join(root, file))

                totalClasses += fileObj.getNoOfClassDeclarations()
                totalDefines += fileObj.getNoOfDefineDeclarations()
                totalFiles += fileObj.getNoOfFileDeclarations()
                totalPackages += fileObj.getNoOfPackageDeclarations()
                totalServices += fileObj.getNoOfServiceDeclarations()
                totalExecs += fileObj.getNoOfExecDeclarations()
                totalLOC += fileObj.getLinesOfCode()

    outputFile.write(CONSTS.TOTAL_CLASS_DECLS + str(totalClasses) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_CLASS_DECLS + str(totalClasses))

    outputFile.write(CONSTS.TOTAL_DEFINE_DECLS + str(totalDefines) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_DEFINE_DECLS + str(totalDefines))

    outputFile.write(CONSTS.TOTAL_FILE_RES_DECLS + str(totalFiles) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_FILE_RES_DECLS + str(totalFiles))

    outputFile.write(CONSTS.TOTAL_PACKAGE_RES_DECLS + str(totalPackages) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_PACKAGE_RES_DECLS + str(totalPackages))

    outputFile.write(CONSTS.TOTAL_SERVICE_RES_DECLS + str(totalServices) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_SERVICE_RES_DECLS + str(totalServices))

    outputFile.write(CONSTS.TOTAL_EXEC_DECLS + str(totalExecs) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_EXEC_DECLS + str(totalExecs))

    outputFile.write(CONSTS.TOTAL_LOC + str(totalLOC) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_LOC + str(totalLOC))
Пример #22
0
def collectSizeMetrics(folder, outputFile):
    totalClasses = 0
    totalDefines = 0
    totalFiles = 0
    totalPackages = 0
    totalServices = 0
    totalExecs = 0
    totalLOC = 0
    for root, dirs, files in os.walk(folder):
        for file in files:
            if file.endswith(".pp") and not os.path.islink(
                    os.path.join(root, file)):
                Utilities.myPrint("Reading file: " + os.path.join(root, file))
                fileObj = SourceModel.SM_File.SM_File(os.path.join(root, file))

                totalClasses += fileObj.getNoOfClassDeclarations()
                totalDefines += fileObj.getNoOfDefineDeclarations()
                totalFiles += fileObj.getNoOfFileDeclarations()
                totalPackages += fileObj.getNoOfPackageDeclarations()
                totalServices += fileObj.getNoOfServiceDeclarations()
                totalExecs += fileObj.getNoOfExecDeclarations()
                totalLOC += fileObj.getLinesOfCode()

    outputFile.write(CONSTS.TOTAL_CLASS_DECLS + str(totalClasses) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_CLASS_DECLS + str(totalClasses))

    outputFile.write(CONSTS.TOTAL_DEFINE_DECLS + str(totalDefines) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_DEFINE_DECLS + str(totalDefines))

    outputFile.write(CONSTS.TOTAL_FILE_RES_DECLS + str(totalFiles) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_FILE_RES_DECLS + str(totalFiles))

    outputFile.write(CONSTS.TOTAL_PACKAGE_RES_DECLS + str(totalPackages) +
                     "\n")
    Utilities.myPrint(CONSTS.TOTAL_PACKAGE_RES_DECLS + str(totalPackages))

    outputFile.write(CONSTS.TOTAL_SERVICE_RES_DECLS + str(totalServices) +
                     "\n")
    Utilities.myPrint(CONSTS.TOTAL_SERVICE_RES_DECLS + str(totalServices))

    outputFile.write(CONSTS.TOTAL_EXEC_DECLS + str(totalExecs) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_EXEC_DECLS + str(totalExecs))

    outputFile.write(CONSTS.TOTAL_LOC + str(totalLOC) + "\n")
    Utilities.myPrint(CONSTS.TOTAL_LOC + str(totalLOC))
Пример #23
0
 def countEntityDeclaration(self, regEx, entityType):
     compiledRE = re.compile(regEx)
     Utilities.myPrint("Identified " + entityType + " declarations: " + str(compiledRE.findall(self.fileText)) + \
                       " Size: " + str(len(compiledRE.findall(self.fileText))))
     return len(compiledRE.findall(self.fileText))
Пример #24
0
 def getPhysicalResourceDeclarationCount(self):
     compiledRE = re.compile(r'\'.+\'\W*:|\".+\":')
     tempVar = compiledRE.findall(self.resourceText)
     Utilities.myPrint("Found file declarations: " + str(tempVar))
     return len(tempVar)
Пример #25
0
 def getIncludeClasses(self):
     compiledIncludeRE = re.compile(SMCONSTS.DECLARE_INCLUDE_REGEX)
     compiledResourceRE = re.compile(SMCONSTS.DECLARE_RESOURCE_REGEX)
     declareClassList = []
     declareClassName = ""
     for match in (compiledIncludeRE.findall(self.fileText)):
         #print(match)
         declareClassText = match
         cleanInclude = re.sub(r'^\s*include \[?(.+)\]?\s*$', r'\1',
                               declareClassText)
         #print("Clean include: %s" % cleanInclude)
         class_name = r'(?:Class\[)?\'?\:{0,2}([\w\d\:\-_\$]+)\'?\]?'
         classRE = re.compile(class_name)
         if ',' in cleanInclude:
             classes = cleanInclude.split(',')
             for c in classes:
                 for m in classRE.findall(c):
                     # Find a variable value in text
                     if m.startswith('$'):
                         #print("Variable: %s" % m)
                         varRE = r'(?:^|\n)\s*\$[\w\d\-_]+\s?=\s?\'?\"?([\w\d\-_]+)\'?\"?\n'
                         compiledVarRE = re.compile(varRE)
                         for v in (compiledVarRE.findall(self.fileText)):
                             #print(v)
                             declareClassName = v
                             Utilities.myPrint(
                                 "Extracted include class declaration: " +
                                 declareClassText)
                             declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                                 declareClassText, declareClassName)
                             declareClassList.append(declareResourceObj)
                             break
                             #print("Variable %s value)
                     #print("Extracted class name: %s" % m)
                     else:
                         declareClassName = m
                         Utilities.myPrint(
                             "Extracted include class declaration: " +
                             declareClassText)
                         declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                             declareClassText, declareClassName)
                         declareClassList.append(declareResourceObj)
         else:
             for c in classRE.findall(cleanInclude):
                 #print("Extracted class name: %s" % c)
                 declareClassName = c
                 #print("%s" % includeClassText)
                 Utilities.myPrint("Extracted include class declaration: " +
                                   declareClassText)
                 declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
                     declareClassText, declareClassName)
                 declareClassList.append(declareResourceObj)
     for match in (compiledResourceRE.findall(self.fileText)):
         #print(match)
         declareClassText = match
         declareClassName = declareClassText
         #print("%s" % includeClassText)
         Utilities.myPrint("Extracted resource class declaration: " +
                           declareClassText)
         declareResourceObj = SourceModel.SM_IncludeResource.SM_IncludeResource(
             declareClassText, declareClassName)
         declareClassList.append(declareResourceObj)
     return declareClassList
Пример #26
0
def collectSizeMetrics(file, outputFile):
    # print(">>> file SIZE METRICS: ", file)
    # print("\n\n")
    results = []

    totalClasses = 0
    totalDefines = 0
    totalFiles = 0
    totalPackages = 0
    totalServices = 0
    totalExecs = 0
    totalLOC = 0
    #for root, dirs, files in os.walk(folder):
    #   for file in files:
    #if file.endswith(".pp") and not os.path.islink(os.path.join(root, file)):
    if file.endswith(".pp"):
        Utilities.myPrint("Reading file: " + file)
        #fileObj = SourceModel.SM_File.SM_File(os.path.join(root, file))
        fileObj = SourceModel.SM_File.SM_File(file)

        totalClasses += fileObj.getNoOfClassDeclarations()
        # print("total classes: ", totalClasses)

        totalDefines += fileObj.getNoOfDefineDeclarations()
        # print("total defines: ", totalDefines)

        totalFiles += fileObj.getNoOfFileDeclarations()
        # print("total files: ", totalFiles)

        totalPackages += fileObj.getNoOfPackageDeclarations()
        # print("totalPackages: ", totalPackages)

        totalServices += fileObj.getNoOfServiceDeclarations()
        # print("totalServices: ", totalServices)

        totalExecs += fileObj.getNoOfExecDeclarations()
        # print("totalExecs: ", totalExecs)

        totalLOC += fileObj.getLinesOfCode()
        # print("totalLOC: ", totalLOC)

        results = [
            totalClasses, totalDefines, totalFiles, totalPackages,
            totalServices, totalExecs, totalLOC
        ]

        outputFile.write(file + "\n")
        Utilities.myPrint(file)

        outputFile.write(CONSTS.TOTAL_CLASS_DECLS + str(totalClasses) + "\n")
        Utilities.myPrint(CONSTS.TOTAL_CLASS_DECLS + str(totalClasses))

        outputFile.write(CONSTS.TOTAL_DEFINE_DECLS + str(totalDefines) + "\n")
        Utilities.myPrint(CONSTS.TOTAL_DEFINE_DECLS + str(totalDefines))

        outputFile.write(CONSTS.TOTAL_FILE_RES_DECLS + str(totalFiles) + "\n")
        Utilities.myPrint(CONSTS.TOTAL_FILE_RES_DECLS + str(totalFiles))

        outputFile.write(CONSTS.TOTAL_PACKAGE_RES_DECLS + str(totalPackages) +
                         "\n")
        Utilities.myPrint(CONSTS.TOTAL_PACKAGE_RES_DECLS + str(totalPackages))

        outputFile.write(CONSTS.TOTAL_SERVICE_RES_DECLS + str(totalServices) +
                         "\n")
        Utilities.myPrint(CONSTS.TOTAL_SERVICE_RES_DECLS + str(totalServices))

        outputFile.write(CONSTS.TOTAL_EXEC_DECLS + str(totalExecs) + "\n")
        Utilities.myPrint(CONSTS.TOTAL_EXEC_DECLS + str(totalExecs))

        outputFile.write(CONSTS.TOTAL_LOC + str(totalLOC) + "\n")
        Utilities.myPrint(CONSTS.TOTAL_LOC + str(totalLOC))

        outputFile.write("\n\n")
        Utilities.myPrint("\n\n")

        return results
Пример #27
0
 def countEntityDeclaration(self, regEx, entityType):
     compiledRE = re.compile(regEx)
     Utilities.myPrint("Identified " + entityType + " declarations: " + str(compiledRE.findall(self.fileText)) + \
                       " Size: " + str(len(compiledRE.findall(self.fileText))))
     return len(compiledRE.findall(self.fileText))
Пример #28
0
 def getPhysicalResourceDeclarationCount(self):
     compiledRE = re.compile(r'\'.+\'\W*:|\".+\":')
     tempVar = compiledRE.findall(self.resourceText)
     Utilities.myPrint("Found service declarations: " + str(tempVar))
     return len(tempVar)