def _get_code(self, issue, tabbed=False): '''Gets lines of code from a file :param filename: Filename of file with code in it :param line_list: A list of integers corresponding to line numbers :return: string of code ''' issue_line = [] prepend = "" file_len = sum(1 for line in open(issue['fname'])) lines = utils.lines_with_context(issue['lineno'], issue['linerange'], self.max_lines, file_len) for l in lines: if l: if tabbed: prepend = "%s\t" % l issue_line.append(prepend + linecache.getline( issue['fname'], l)) return ''.join(issue_line)
def get_code(self, max_lines=-1, tabbed=False): '''Gets lines of code from a file the generated this issue. :param max_lines: Max lines of context to return :param tabbed: Use tabbing in the output :return: strings of code ''' lc = linecache file_len = sum(1 for line in open(self.fname)) lines = utils.lines_with_context(self.lineno, self.linerange, max_lines, file_len) if not tabbed: return ''.join([lc.getline(self.fname, l) for l in lines]) return ''.join(["%s\t%s" % (l, lc.getline(self.fname, l)) for l in lines])
def _get_code(self, issue, tabbed=False): '''Gets lines of code from a file :param filename: Filename of file with code in it :param line_list: A list of integers corresponding to line numbers :return: string of code ''' issue_line = [] prepend = "" file_len = self._file_length(issue['fname']) lines = utils.lines_with_context(issue['lineno'], issue['linerange'], self.max_lines, file_len) for l in lines: if l: if tabbed: prepend = "%s\t" % l issue_line.append(prepend + linecache.getline(issue['fname'], l)) return ''.join(issue_line)
def test_lines_with_context(self): res = b_utils.lines_with_context(2, [0, 1, 2, 3, 4], 20, 100) self.assertEqual([-1, 0, 1, 2, 3, 4, 5], res) res = b_utils.lines_with_context(8, [0, 1, 2, 3, 4, 5, 6, 7], 3, 100) self.assertEqual([7, 8], res) res = b_utils.lines_with_context(8, [0, 1, 2, 3, 4, 5, 6, 7], 3, 6) self.assertEqual([2, 3, 4], res) res = b_utils.lines_with_context(1, [0, 1, 2, 3, 4, 5, 6, 7], 3, 6) self.assertEqual([0, 1, 2], res) res = b_utils.lines_with_context(5, [5, 6, 7], 4, 6) self.assertEqual([4, 5, 6, 7], res) res = b_utils.lines_with_context(0, [0], 0, 0) self.assertEqual([], res) self.assertRaises( ValueError, b_utils.lines_with_context, 3, [5, 6, 7], 4, 6 )