예제 #1
0
파일: shell.py 프로젝트: fossology/Nirjas
def shellExtractor(file):
    """
    Extract comments from Shell file.
    :param file: File to scan
    :type file: string
    :return: Scan output
    :rtype: ScanOutput
    """
    result = CommentSyntax()
    single_line_comment = result.hash(file)
    cont_single_line_comment = contSingleLines(single_line_comment)
    file = file.split("/")
    output = ScanOutput()
    output.filename = file[-1]
    output.lang = "Shell"
    output.total_lines = single_line_comment[1]
    output.total_lines_of_comments = single_line_comment[3]
    output.blank_lines = single_line_comment[2]

    if cont_single_line_comment:
        single_line_comment = cont_single_line_comment[0]

    for i in single_line_comment[0]:
        output.single_line_comment.append(SingleLine(i[0], i[1]))

    for idx, _ in enumerate(cont_single_line_comment[1]):
        output.cont_single_line_comment.append(
            MultiLine(
                cont_single_line_comment[1][idx],
                cont_single_line_comment[2][idx],
                cont_single_line_comment[3][idx],
            ))

    return output
예제 #2
0
파일: c.py 프로젝트: fossology/Nirjas
def cExtractor(file):
    """
    Extract comments from C file.
    :param file: File to scan
    :type file: string
    :return: Scan output
    :rtype: ScanOutput
    """
    result = CommentSyntax()
    single_line_comment = result.doubleSlash(file)
    multiline_comment = result.slashStar(file)
    cont_single_line_comment = contSingleLines(single_line_comment)
    file = file.split("/")
    output = ScanOutput()
    output.filename = file[-1]
    output.lang = "C"
    output.total_lines = single_line_comment[1]
    output.total_lines_of_comments = single_line_comment[
        3] + multiline_comment[3]
    output.blank_lines = single_line_comment[2]

    if cont_single_line_comment:
        single_line_comment = cont_single_line_comment[0]

    for i in single_line_comment[0]:
        output.single_line_comment.append(SingleLine(i[0], i[1]))

    for idx, _ in enumerate(cont_single_line_comment[1]):
        output.cont_single_line_comment.append(
            MultiLine(
                cont_single_line_comment[1][idx],
                cont_single_line_comment[2][idx],
                cont_single_line_comment[3][idx],
            ))

    try:
        for idx, _ in enumerate(multiline_comment[0]):
            output.multi_line_comment.append(
                MultiLine(
                    multiline_comment[0][idx],
                    multiline_comment[1][idx],
                    multiline_comment[2][idx],
                ))
    except BaseException:
        pass

    return output
예제 #3
0
def matlabExtractor(file):
    """
    Extract comments from MATLAB file.
    :param file: File to scan
    :type file: string
    :return: Scan output
    :rtype: ScanOutput
    """
    result = CommentSyntax()
    single_line_comment = result.percentage(file)
    multiline_comment = result.percentageCurlybraces(file)
    cont_single_line_comment = contSingleLines(single_line_comment)
    file = file.split("/")
    output = ScanOutput()
    output.filename = file[-1]
    output.lang = "MATLAB"
    output.total_lines = single_line_comment[1]
    output.total_lines_of_comments = single_line_comment[3] + multiline_comment[3]
    output.blank_lines = single_line_comment[2]

    if cont_single_line_comment:
        single_line_comment = cont_single_line_comment[0]

    for i in single_line_comment[0]:
        output.single_line_comment.append(SingleLine(i[0], i[1]))

    for idx, _ in enumerate(cont_single_line_comment[1]):
        output.cont_single_line_comment.append(
            MultiLine(
                cont_single_line_comment[1][idx],
                cont_single_line_comment[2][idx],
                cont_single_line_comment[3][idx],
            )
        )

    for idx, _ in enumerate(multiline_comment[0]):
        output.multi_line_comment.append(
            MultiLine(
                multiline_comment[0][idx],
                multiline_comment[1][idx],
                multiline_comment[2][idx],
            )
        )

    return output
예제 #4
0
파일: r.py 프로젝트: fossology/Nirjas
def rExtractor(file):
    """
    Extract comments from R file.
    :param file: File to scan
    :type file: string
    :return: Scan output
    :rtype: ScanOutput
    """
    result = CommentSyntax()
    single_line_comment = result.hash(file)
    file = file.split("/")
    output = ScanOutput()
    output.filename = file[-1]
    output.lang = "R"
    output.total_lines = single_line_comment[1]
    output.total_lines_of_comments = single_line_comment[3]
    output.blank_lines = single_line_comment[2]

    for i in single_line_comment[0]:
        output.single_line_comment.append(SingleLine(i[0], i[1]))

    return output