Ejemplo n.º 1
0
def detectUnnAbsInDefine(fileObj, outputFile):
    defineList = fileObj.getDefineDeclarationList()
    for aDefine in defineList:
        lineCount, textSizeCount = aDefine.getBodyTextSize()
        if lineCount < CONSTS.LOC_THRESHOLD_UNNABS and textSizeCount < CONSTS.SIZE_THRESHOLD_UNNABS:
            Utilities.reportSmell(outputFile, fileObj.fileName,
                                  CONSTS.SMELL_UNN_ABS, CONSTS.DEFINE_RES)
Ejemplo n.º 2
0
def detectUnnAbsInClasses(fileObj, outputFile):
    classList = fileObj.getClassDeclarationList()
    for aClass in classList:
        lineCount, textSizeCount = aClass.getBodyTextSize()
        if lineCount < CONSTS.LOC_THRESHOLD_UNNABS and textSizeCount < CONSTS.SIZE_THRESHOLD_UNNABS:
            Utilities.reportSmell(outputFile, fileObj.fileName,
                                  CONSTS.SMELL_UNN_ABS, CONSTS.CLASS_RES)
Ejemplo n.º 3
0
def detectMulAbsInClass(fileObj, outputFile):
    classList = fileObj.getClassDeclarationList()
    for aClass in classList:
        lcom = aClass.getLCOM()
        if lcom < CONSTS.LCOM_THRESHOLD:
            Utilities.reportSmell(outputFile, fileObj.fileName,
                                  CONSTS.SMELL_MUL_ABS_2, CONSTS.CLASS_RES)
Ejemplo n.º 4
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)
Ejemplo n.º 5
0
def detectBroHierarchy(folder, outputFile):
    classNames, superClassNames = collectClassNames(folder)
    #print("classNames: " + str(classNames))
    #print("superClassNames: " + str(superClassNames))
    for superClass in superClassNames:
        if not classNames.__contains__(superClass):
            Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_BRO_HIE, CONSTS.MODULE_RES)
Ejemplo n.º 6
0
def detectTCMod(fileObj, outputFile):
    if not (fileObj.fileName.__contains__("param")
            or fileObj.fileName.__contains__("init")
            or fileObj.fileName.__contains__("site")):
        if len(fileObj.getHardCodedStatments()) > 1:
            Utilities.reportSmell(outputFile, fileObj.fileName,
                                  CONSTS.SMELL_TC_MOD, CONSTS.FILE_RES)
Ejemplo n.º 7
0
def detectMisAbs(fileObj, outputFile):
    classAndDefineCount = len(fileObj.getOuterClassList() +
                              fileObj.getOuterDefineList())
    outerElementCount = len(fileObj.getOuterElementList())
    if outerElementCount - classAndDefineCount > CONSTS.MISABS_MAX_NON_ABS_COUNT:
        Utilities.reportSmell(outputFile, fileObj.fileName,
                              CONSTS.SMELL_MIS_ABS, CONSTS.FILE_RES)
Ejemplo n.º 8
0
def detectImpAbs(fileObj, outputFile):
    execDecls = fileObj.getNoOfExecDeclarations()
    totalDeclarations = fileObj.getNoOfClassDeclarations() + fileObj.getNoOfDefineDeclarations() + \
                        fileObj.getNoOfFileDeclarations() + fileObj.getNoOfPackageDeclarations() + \
                        fileObj.getNoOfServiceDeclarations() + execDecls
    if float(totalDeclarations * CONSTS.IMPABS_THRESHOLD) <= float(
            execDecls) and execDecls > CONSTS.IMPABS_MAXEXECCOUNT:
        Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_IMP_ABS, CONSTS.FILE_RES)
Ejemplo n.º 9
0
def detectDuplicateAbs(folder, outputFile):
    cpdXmlFile = getCpdXmlFile(folder)
    if cpdXmlFile:
        file = open(os.path.join(folder, cpdXmlFile), 'r', errors='ignore')
        fileContent = file.read()
        compiledRE = re.compile("<duplication lines=")
        for i in re.findall(compiledRE, fileContent):
            Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_DUP_ABS, CONSTS.FILE_RES)
def detectImpAbs(fileObj, outputFile):
    execDecls = fileObj.getNoOfExecDeclarations()
    totalDeclarations = fileObj.getNoOfClassDeclarations() + fileObj.getNoOfDefineDeclarations() + \
                        fileObj.getNoOfFileDeclarations() + fileObj.getNoOfPackageDeclarations() + \
                        fileObj.getNoOfServiceDeclarations() + execDecls
    if float(totalDeclarations * CONSTS.IMPABS_THRESHOLD) <= float(
            execDecls) and execDecls > CONSTS.IMPABS_MAXEXECCOUNT:
        Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_IMP_ABS, CONSTS.FILE_RES)
def detectDuplicateAbs(folder, outputFile):
    cpdXmlFile = getCpdXmlFile(folder)
    if cpdXmlFile:
        file = open(os.path.join(folder, cpdXmlFile), 'r', errors='ignore')
        fileContent = file.read()
        compiledRE = re.compile("<duplication lines=")
        for i in re.findall(compiledRE, fileContent):
            Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_DUP_ABS, CONSTS.FILE_RES)
Ejemplo n.º 12
0
def detectBroHierarchy(folder, outputFile):
    classNames, superClassNames = collectClassNames(folder)
    #print("classNames: " + str(classNames))
    #print("superClassNames: " + str(superClassNames))
    for superClass in superClassNames:
        if not classNames.__contains__(superClass):
            Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_BRO_HIE,
                                  CONSTS.MODULE_RES)
Ejemplo n.º 13
0
def detectUnstructuredModForm1(folder, outputFile):
    if isModulesExists(folder):
        return
    manifestsFolder = getManifestsFolder(folder) #repo-level manifests folder
    if manifestsFolder == "":
        Utilities.reportSmell(outputFile, manifestsFolder, CONSTS.SMELL_UNS_MOD_1, CONSTS.REPO_MANIFEST)
        return
    if FileOperations.countPuppetFiles(manifestsFolder) > CONSTS.MAX_MANIFESTS_PUPPET_FILES:
        Utilities.reportSmell(outputFile, manifestsFolder, CONSTS.SMELL_UNS_MOD_1, CONSTS.REPO_MANIFEST)
Ejemplo n.º 14
0
def detectUnsModForm3(folder, outputFile):
    counter = 0
    if os.path.isdir(folder):
        for dir in os.listdir(folder):
            if not (dir == "files" or dir == "manifests" or dir == "templates" or dir == "lib" or dir == "tests" or
                            dir == "spec" or dir.__contains__("readme") or dir.__contains__("README") or
                        dir.__contains__("license") or dir.__contains__("LICENSE") or dir.__contains__("metadata")):
                counter += 1

    if counter > CONSTS.MAX_ALLOWED_NONSTANDARD_FILES:
        Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_UNS_MOD_3, CONSTS.OTHERFILES)
Ejemplo n.º 15
0
def detectInsModForm2(fileObj, outputFile):
    for aClass in fileObj.getOuterClassList():
        if aClass.getLocWithoutComments() > CONSTS.MAX_CLASS_LOC_THRESHOLD:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_INS_MOD_2, CONSTS.CLASS_RES)

    for aDefine in fileObj.getOuterDefineList():
        if aDefine.getLocWithoutComments() > CONSTS.MAX_DEFINE_LOC_THRESHOLD:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_INS_MOD_2, CONSTS.DEFINE_RES)

    if fileObj.getLinesOfCodeWithoutComments() > CONSTS.MAX_MODULE_LOC_THRESHOLD:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_INS_MOD_2, CONSTS.FILE_RES)
Ejemplo n.º 16
0
def detectInsModForm3(fileobj, outputFile):
    if fileobj.getMaxNestingDepth() > CONSTS.MAX_NESTING_DEPTH:
        Utilities.reportSmell(outputFile, fileobj.fileName,
                              CONSTS.SMELL_INS_MOD_3, CONSTS.FILE_RES)
Ejemplo n.º 17
0
def detectUnsModForm2(folder, outputFile):
    if not getManifestsFolder(folder):
        Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_UNS_MOD_2,
                              CONSTS.MODULE_MANIFEST)
Ejemplo n.º 18
0
def detectInsModForm1(fileObj, outputFile):
    classDefineDeclCount = len(fileObj.getOuterClassList()) + len(fileObj.getOuterDefineList())
    if classDefineDeclCount > 1:
        Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_INS_MOD_1, CONSTS.FILE_RES)
Ejemplo n.º 19
0
def checkWithPackageResource(fileObj, outputFile):
    packageResourceList = fileObj.getPackageResourceList()
    for packageRes in packageResourceList:
        if packageRes.getPhysicalResourceDeclarationCount() > 1:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_MUL_ABS_1, CONSTS.PACKAGE_RES)
Ejemplo n.º 20
0
def detectTCMod(fileObj, outputFile):
    if not (fileObj.fileName.__contains__("param") or fileObj.fileName.__contains__("init") or fileObj.fileName.__contains__("site")):
        if len(fileObj.getHardCodedStatments()) > 1:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_TC_MOD, CONSTS.FILE_RES)
Ejemplo n.º 21
0
def detectMulAbsInClass(fileObj, outputFile):
    classList = fileObj.getClassDeclarationList()
    for aClass in classList:
        lcom = aClass.getLCOM()
        if lcom < CONSTS.LCOM_THRESHOLD:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_MUL_ABS_2, CONSTS.CLASS_RES)
Ejemplo n.º 22
0
def detectDefEnc(fileObj, outputFile):
    for nodeDecl in fileObj.getNodeDeclarations():
        if nodeDecl.getGlobalVariableCount() > 0:
            Utilities.reportSmell(outputFile, CONSTS.SMELL_DEF_ENC, fileObj.fileName, CONSTS.NODES_RES)
Ejemplo n.º 23
0
def detectWeakendMod(graph, folder, outputFile):
    for node in graph.getNodes():
        if node.getModularityRatio() < CONSTS.MODULARITY_THRESHOLD:
            Utilities.reportSmell(outputFile, str(node.getId()),
                                  CONSTS.SMELL_WEA_MOD, CONSTS.MODULE_RES)
Ejemplo n.º 24
0
def detectUnnAbsInDefine(fileObj, outputFile):
    defineList = fileObj.getDefineDeclarationList()
    for aDefine in defineList:
        lineCount, textSizeCount = aDefine.getBodyTextSize()
        if lineCount < CONSTS.LOC_THRESHOLD_UNNABS and textSizeCount < CONSTS.SIZE_THRESHOLD_UNNABS:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_UNN_ABS, CONSTS.DEFINE_RES)
Ejemplo n.º 25
0
def detectUnnAbsInModules(fileObj, outputFile):
    lineCount, textSizeCount = fileObj.getBodyTextSize()
    if lineCount < CONSTS.LOC_THRESHOLD_UNNABS and textSizeCount < CONSTS.SIZE_THRESHOLD_UNNABS:
        Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_UNN_ABS, CONSTS.DEFINE_RES)
Ejemplo n.º 26
0
def detectUnnAbsInClasses(fileObj, outputFile):
    classList = fileObj.getClassDeclarationList()
    for aClass in classList:
        lineCount, textSizeCount = aClass.getBodyTextSize()
        if lineCount < CONSTS.LOC_THRESHOLD_UNNABS and textSizeCount < CONSTS.SIZE_THRESHOLD_UNNABS:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_UNN_ABS, CONSTS.CLASS_RES)
Ejemplo n.º 27
0
def detectMulAbsInModule(fileObj, outputFile):
    if fileObj.getLCOM() < CONSTS.LCOM_THRESHOLD:
        Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_MUL_ABS_2, CONSTS.FILE_RES)
Ejemplo n.º 28
0
def detectMulAbsInDefine(fileObj, outputFile):
    defineList = fileObj.getDefineDeclarationList()
    for aDefine in defineList:
        if aDefine.getLCOM() < CONSTS.LCOM_THRESHOLD:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_MUL_ABS_2, CONSTS.DEFINE_RES)
Ejemplo n.º 29
0
def detectHaiStr(graph, folder, outputFile):
    if graph.getAverageDegree() > CONSTS.MAX_GRAPH_DEGREE_THRESHOLD:
        Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_HAI_STR, CONSTS.REPO_RES)
Ejemplo n.º 30
0
def detectUnnAbsInModules(fileObj, outputFile):
    lineCount, textSizeCount = fileObj.getBodyTextSize()
    if lineCount < CONSTS.LOC_THRESHOLD_UNNABS and textSizeCount < CONSTS.SIZE_THRESHOLD_UNNABS:
        Utilities.reportSmell(outputFile, fileObj.fileName,
                              CONSTS.SMELL_UNN_ABS, CONSTS.DEFINE_RES)
Ejemplo n.º 31
0
def detectHaiStr(graph, folder, outputFile):
    if graph.getAverageDegree() > CONSTS.MAX_GRAPH_DEGREE_THRESHOLD:
        Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_HAI_STR,
                              CONSTS.REPO_RES)
Ejemplo n.º 32
0
def detectInsModForm3(fileobj, outputFile):
    if fileobj.getMaxNestingDepth() > CONSTS.MAX_NESTING_DEPTH:
        Utilities.reportSmell(outputFile, fileobj.fileName, CONSTS.SMELL_INS_MOD_3, CONSTS.FILE_RES)
Ejemplo n.º 33
0
def detectInsModForm1(fileObj, outputFile):
    classDefineDeclCount = len(fileObj.getOuterClassList()) + len(
        fileObj.getOuterDefineList())
    if classDefineDeclCount > 1:
        Utilities.reportSmell(outputFile, fileObj.fileName,
                              CONSTS.SMELL_INS_MOD_1, CONSTS.FILE_RES)
Ejemplo n.º 34
0
def detectMulAbsInModule(fileObj, outputFile):
    if fileObj.getLCOM() < CONSTS.LCOM_THRESHOLD:
        Utilities.reportSmell(outputFile, fileObj.fileName,
                              CONSTS.SMELL_MUL_ABS_2, CONSTS.FILE_RES)
Ejemplo n.º 35
0
def checkWithServiceResource(fileObj, outputFile):
    serviceResourceList = fileObj.getServiceResourceList()
    for serviceRes in serviceResourceList:
        if serviceRes.getPhysicalResourceDeclarationCount() > 1:
            Utilities.reportSmell(outputFile, fileObj.fileName,
                                  CONSTS.SMELL_MUL_ABS_1, CONSTS.SERVICE_RES)
Ejemplo n.º 36
0
def detectDefEnc(fileObj, outputFile):
    for nodeDecl in fileObj.getNodeDeclarations():
        if nodeDecl.getGlobalVariableCount() > 0:
            Utilities.reportSmell(outputFile, CONSTS.SMELL_DEF_ENC,
                                  fileObj.fileName, CONSTS.NODES_RES)
Ejemplo n.º 37
0
def checkWithFileResource(fileObj, outputFile):
    fileResourceList = fileObj.getFileResourceList()
    for fileRes in fileResourceList:
        if fileRes.getPhysicalResourceDeclarationCount() > 1:
            Utilities.reportSmell(outputFile, fileObj.fileName,
                                  CONSTS.SMELL_MUL_ABS_1, CONSTS.FILE_RES)
Ejemplo n.º 38
0
def detectUnsModForm2(folder, outputFile):
    if not getManifestsFolder(folder):
        Utilities.reportSmell(outputFile, folder, CONSTS.SMELL_UNS_MOD_2, CONSTS.MODULE_MANIFEST)
Ejemplo n.º 39
0
def checkWithPackageResource(fileObj, outputFile):
    packageResourceList = fileObj.getPackageResourceList()
    for packageRes in packageResourceList:
        if packageRes.getPhysicalResourceDeclarationCount() > 1:
            Utilities.reportSmell(outputFile, fileObj.fileName,
                                  CONSTS.SMELL_MUL_ABS_1, CONSTS.PACKAGE_RES)
Ejemplo n.º 40
0
def detectMisAbs(fileObj, outputFile):
    classAndDefineCount = len(fileObj.getOuterClassList() + fileObj.getOuterDefineList())
    outerElementCount = len(fileObj.getOuterElementList())
    if outerElementCount - classAndDefineCount > CONSTS.MISABS_MAX_NON_ABS_COUNT:
        Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_MIS_ABS, CONSTS.FILE_RES)
Ejemplo n.º 41
0
def detectMulAbsInDefine(fileObj, outputFile):
    defineList = fileObj.getDefineDeclarationList()
    for aDefine in defineList:
        if aDefine.getLCOM() < CONSTS.LCOM_THRESHOLD:
            Utilities.reportSmell(outputFile, fileObj.fileName,
                                  CONSTS.SMELL_MUL_ABS_2, CONSTS.DEFINE_RES)
Ejemplo n.º 42
0
def checkWithFileResource(fileObj, outputFile):
    fileResourceList = fileObj.getFileResourceList()
    for fileRes in fileResourceList:
        if fileRes.getPhysicalResourceDeclarationCount() > 1:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_MUL_ABS_1, CONSTS.FILE_RES)
Ejemplo n.º 43
0
def checkWithServiceResource(fileObj, outputFile):
    serviceResourceList = fileObj.getServiceResourceList()
    for serviceRes in serviceResourceList:
        if serviceRes.getPhysicalResourceDeclarationCount() > 1:
            Utilities.reportSmell(outputFile, fileObj.fileName, CONSTS.SMELL_MUL_ABS_1, CONSTS.SERVICE_RES)
Ejemplo n.º 44
0
def detectWeakendMod(graph, folder, outputFile):
    for node in graph.getNodes():
        if node.getModularityRatio() < CONSTS.MODULARITY_THRESHOLD:
            Utilities.reportSmell(outputFile, str(node.getId()), CONSTS.SMELL_WEA_MOD, CONSTS.MODULE_RES)