pronto-clang_tidy 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d20206bbc89510ef27a4e7f97573fe05e905c136a04676a2c946a2c2d3d48fe
4
- data.tar.gz: 52c7dd9ec890b0b2e29c81a53c833640b93b354ecc8f1279101ecace60f383bd
3
+ metadata.gz: aa8b2568123ef68b9a13cb451f547eabf93a7deada6854e31fb4d715faf7d84e
4
+ data.tar.gz: 27f8ca1e59d14a209a2651c47868a58a7ad825ce2badde47199835908762c1b7
5
5
  SHA512:
6
- metadata.gz: '0845109034135d43dd8f810333e87c857fb1e83858695b12a8d02abddcadf5790ccd20ef4e44a72b8b40a5d065ce77fd79230004bebb2e00f107ca977bf3181c'
7
- data.tar.gz: b7f0bd0c318e3957ab823e23026adc12264adb2ac48b6a9b8314d1b3d3c7bdc72489bc793b46956c778c28e99e570f24120573fd65b092ec2deb76255095d897
6
+ metadata.gz: 5fb3f5aaa237f15b8ff4558cb641eec7ea664d0dc029ee0fa4edd1d1776c250d42c4ce088001d1a6f0c64af35a22c289326c87e0abc41354c14b3749a82ba884
7
+ data.tar.gz: 41d2a054d544738db1de3f50a4b205dbfa92061f2dec3ba7ac8d590cf97fe5731cb9ce80eb6391befc92bd437a37372a33fe1252ef786cc8792a9233f0767141
data/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  [![Code Climate](https://codeclimate.com/github/micjabbour/pronto-clang_tidy.png)](https://codeclimate.com/github/micjabbour/pronto-clang_tidy)
4
4
  [![Build Status](https://travis-ci.org/micjabbour/pronto-clang_tidy.png)](https://travis-ci.org/micjabbour/pronto-clang_tidy)
5
5
  [![Gem Version](https://badge.fury.io/rb/pronto-clang_tidy.png)](http://badge.fury.io/rb/pronto-clang_tidy)
6
- [![Dependency Status](https://gemnasium.com/micjabbour/pronto-clang_tidy.png)](https://gemnasium.com/micjabbour/pronto-clang_tidy)
7
6
 
8
7
  Pronto runner for [clang-tidy](http://clang.llvm.org/extra/clang-tidy), a clang-based C++ "linter" tool. [What is Pronto?](https://github.com/prontolabs/pronto)
9
8
 
@@ -29,4 +28,10 @@ Pronto will look for clang-tidy output file and submit its contents as soon as t
29
28
 
30
29
  After configuring and running `clang-tidy` on your codebase, redirect and save its standard output to a file (e.g. `clang-tidy.out`).
31
30
 
31
+ To do that, you can use my [modified version of `run-clang-tidy.py`](https://gist.github.com/micjabbour/948578e0e24ce99aaaf6b32d848c9c18#file-run-clang-tidy-py) to automatically save clang-tidy output into `clang-tidy.out`:
32
+ ```
33
+ python run-clang-tidy.py -checks=* -p build
34
+ ```
35
+ where `build` is your build directory (that is, the directory that contains the generated file [`compile_commands.json`](https://clang.llvm.org/docs/JSONCompilationDatabase.html)).
36
+
32
37
  The name of the clang-tidy output file can be configured by setting the environment variable `PRONTO_CLANG_TIDY_OUTFILE` prior to running pronto. If it is not set, the runner will assume the file name is `clang-tidy.out`.
@@ -1,5 +1,5 @@
1
1
  module Pronto
2
2
  module ClangTidy
3
- VERSION = '0.9.0'.freeze
3
+ VERSION = '0.9.1'.freeze
4
4
  end
5
5
  end
@@ -13,7 +13,9 @@ module Pronto
13
13
  next if patch.nil?
14
14
  # generate a message for the corresponding added_line in the patch
15
15
  message_for(patch, offence)
16
- end.flatten.compact
16
+ # Header warnings are repeated for every compilation unit that includes
17
+ # them. Use uniq to ignore repeated messages
18
+ end.flatten.compact.uniq
17
19
  end
18
20
 
19
21
  private
@@ -37,23 +39,42 @@ module Pronto
37
39
 
38
40
  def new_message(offence, line)
39
41
  path = line.patch.delta.new_file[:path]
40
- Message.new(path, line, :warning, offence.msg, nil, self.class)
42
+ Message.new(path, line, pronto_level(offence.level), offence.msg, nil,
43
+ self.class)
44
+ end
45
+
46
+ def pronto_level(clang_level)
47
+ case clang_level
48
+ when :warning
49
+ :warning
50
+ when :error
51
+ :error
52
+ when :fatal
53
+ :fatal
54
+ else
55
+ :info
56
+ end
41
57
  end
42
58
 
43
59
  # reads clang-tidy output file and returns an array of offences
44
60
  def read_clang_tidy_output
45
61
  unless FileTest.file? clang_tidy_output_file
46
62
  puts 'WARN: pronto-clang_tidy: clang-tidy output file not found'
47
- return ''
63
+ return []
48
64
  end
49
65
  clang_tidy_output = File.read clang_tidy_output_file
50
- clang_tidy_output.split("\n").each_slice(3).map do |offence|
51
- properties = offence[0].split(':').map(&:strip)
66
+ clang_tidy_output.each_line.select { |line| line_is_offence? line }
67
+ .map do |offence|
68
+ properties = offence.split(':').map(&:strip)
52
69
  OpenStruct.new(file: properties[0], lineno: properties[1].to_i,
53
- level: properties[3], msg: properties[4])
70
+ level: properties[3].to_sym, msg: properties[4])
54
71
  end
55
72
  end
56
73
 
74
+ def line_is_offence?(line)
75
+ line.start_with?('/') && /:\d+:\d+:/.match(line) && /\[\S+\]/.match(line)
76
+ end
77
+
57
78
  def clang_tidy_output_file
58
79
  ENV['PRONTO_CLANG_TIDY_OUTFILE'] || 'clang-tidy.out'
59
80
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pronto-clang_tidy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Jabbour
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-14 00:00:00.000000000 Z
11
+ date: 2018-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pronto