Skip to content

Commit aa40967

Browse files
committed
giver a try
1 parent ee7b86b commit aa40967

18 files changed

Lines changed: 287 additions & 1175 deletions

File tree

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1110"
4+
version = "1.3">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "4C61E97C226B86B300F95EA9"
18+
BuildableName = "CodeCoverageCompare"
19+
BlueprintName = "CodeCoverageCompare"
20+
ReferencedContainer = "container:CodeCoverageCompare.xcodeproj">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
</Testables>
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
<BuildableProductRunnable
44+
runnableDebuggingMode = "0">
45+
<BuildableReference
46+
BuildableIdentifier = "primary"
47+
BlueprintIdentifier = "4C61E97C226B86B300F95EA9"
48+
BuildableName = "CodeCoverageCompare"
49+
BlueprintName = "CodeCoverageCompare"
50+
ReferencedContainer = "container:CodeCoverageCompare.xcodeproj">
51+
</BuildableReference>
52+
</BuildableProductRunnable>
53+
<CommandLineArguments>
54+
<CommandLineArgument
55+
argument = "//Users/michael/Documents/git/CodeCoverageCompare/example/before.json"
56+
isEnabled = "YES">
57+
</CommandLineArgument>
58+
<CommandLineArgument
59+
argument = "//Users/michael/Documents/git/CodeCoverageCompare/example/after.json"
60+
isEnabled = "YES">
61+
</CommandLineArgument>
62+
<CommandLineArgument
63+
argument = "http://www.nba.com"
64+
isEnabled = "YES">
65+
</CommandLineArgument>
66+
<CommandLineArgument
67+
argument = "http://www.espn.com"
68+
isEnabled = "YES">
69+
</CommandLineArgument>
70+
</CommandLineArguments>
71+
</LaunchAction>
72+
<ProfileAction
73+
buildConfiguration = "Release"
74+
shouldUseLaunchSchemeArgsEnv = "YES"
75+
savedToolIdentifier = ""
76+
useCustomWorkingDirectory = "NO"
77+
debugDocumentVersioning = "YES">
78+
<BuildableProductRunnable
79+
runnableDebuggingMode = "0">
80+
<BuildableReference
81+
BuildableIdentifier = "primary"
82+
BlueprintIdentifier = "4C61E97C226B86B300F95EA9"
83+
BuildableName = "CodeCoverageCompare"
84+
BlueprintName = "CodeCoverageCompare"
85+
ReferencedContainer = "container:CodeCoverageCompare.xcodeproj">
86+
</BuildableReference>
87+
</BuildableProductRunnable>
88+
</ProfileAction>
89+
<AnalyzeAction
90+
buildConfiguration = "Debug">
91+
</AnalyzeAction>
92+
<ArchiveAction
93+
buildConfiguration = "Release"
94+
revealArchiveInOrganizer = "YES">
95+
</ArchiveAction>
96+
</Scheme>

CodeCoverageCompare/CodeCoverageCompare/main.swift

Lines changed: 16 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -9,101 +9,23 @@
99
import Foundation
1010
import CodeCoverageFramework
1111

12-
func loadCoverageFile(file: String) -> Project {
13-
14-
let url = URL(fileURLWithPath: file)
15-
let json = try! Data(contentsOf: url)
16-
17-
let decoder = JSONDecoder()
18-
return try! decoder.decode(Project.self, from: json)
19-
}
20-
21-
struct Row {
22-
var change: String {
23-
var change = ""
24-
if(develop > pr) {
25-
change = ""
26-
} else if(pr > develop) {
27-
change = ""
28-
}
29-
return change
30-
}
31-
let file: String
32-
let develop: Double
33-
let pr: Double
34-
35-
func toString() -> String {
36-
return "|\(change)|\(file)|\(develop)|\(pr)|"
37-
}
12+
let arguments = CommandLine.arguments
13+
14+
if arguments.count != 5 {
15+
print("Missing arguments, expected the following: ")
16+
print("\t1 - develop json file")
17+
print("\t2 - pr json file")
18+
print("\t3 - develop base URL path")
19+
print("\t4 - pr base URL path")
20+
fatalError()
3821
}
3922

40-
extension Row: Hashable {
41-
static func == (lhs: Row, rhs: Row) -> Bool {
42-
return lhs.file == rhs.file
43-
}
44-
45-
func hash(into hasher: inout Hasher) {
46-
hasher.combine(file)
47-
}
48-
}
49-
50-
func getFilesChanged(before: Project, after: Project) -> Set<Row> {
51-
var rows = Set<Row>()
52-
for beforeFile in before.targets.first!.files {
53-
let filename = beforeFile.name
54-
let beforeCoverage = beforeFile.lineCoverage
55-
var afterCoverage = 0.0
56-
for afterFile in after.targets.first!.files {
57-
if afterFile.name == filename {
58-
afterCoverage = afterFile.lineCoverage
59-
break
60-
}
61-
}
62-
rows.insert(Row(file: filename, develop: beforeCoverage, pr: afterCoverage))
63-
}
64-
65-
for afterFile in after.targets.first!.files {
66-
let filename = afterFile.name
67-
var beforeCoverage = 0.0
68-
let afterCoverage = afterFile.lineCoverage
69-
for beforeFile in before.targets.first!.files {
70-
if beforeFile.name == filename {
71-
beforeCoverage = beforeFile.lineCoverage
72-
break
73-
}
74-
}
75-
// rows.insert(Row(file: filename, develop: beforeCoverage, pr: afterCoverage))
76-
}
77-
return rows
78-
}
79-
80-
func getRows(before: Project, after: Project) -> Set<Row> {
81-
return getFilesChanged(before: before, after: after)
82-
}
83-
84-
func printTable(before: Project, after: Project) {
85-
print("|Change|File|Develop|PR|")
86-
print("|------|----|-------|--|")
87-
for row in getRows(before: before, after: after) {
88-
print(row.toString())
89-
}
90-
}
91-
92-
let before = "//Users/michael/Documents/git/CodeCoverageCompare/example/before.json"
93-
let after = "//Users/michael/Documents/git/CodeCoverageCompare/example/after.json"
94-
95-
printTable(before: loadCoverageFile(file: before), after: loadCoverageFile(file: after))
96-
97-
func compare() throws {
98-
let coverage = "//Users/michael/Documents/git/CodeCoverageCompare/example/coverage.json"
99-
100-
let url = URL(fileURLWithPath: coverage)
101-
let data = try Data(contentsOf: url)
102-
let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves)
103-
if let jsonResult = jsonResult as? Dictionary<String, AnyObject>, let person = jsonResult["removedTargets"] as? [Any] {
104-
print(person)
105-
}
106-
}
23+
let beforeFileName = arguments[1]
24+
let afterFileName = arguments[2]
25+
let devURLBasePath = arguments[3]
26+
let prURLBasePath = arguments[4]
10727

108-
//CodeCoverage.go(fileA: a, fileB: b)
28+
let before = Utils.loadCoverageFile(file: beforeFileName)
29+
let after = Utils.loadCoverageFile(file: afterFileName)
30+
CoverageComparison(before: before, after: after).printTable(devLink: devURLBasePath, prLink: prURLBasePath)
10931

CodeCoverageFramework/CodeCoverageFramework.xcodeproj/project.pbxproj

Lines changed: 14 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,10 @@
88

99
/* Begin PBXBuildFile section */
1010
4C61E99B226B86CC00F95EA9 /* CodeCoverageFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C61E991226B86CB00F95EA9 /* CodeCoverageFramework.framework */; };
11-
4C61E9A2226B86CC00F95EA9 /* CodeCoverageFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C61E994226B86CB00F95EA9 /* CodeCoverageFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
12-
4C61E9C0226B876800F95EA9 /* CoveredLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9BF226B876800F95EA9 /* CoveredLine.swift */; };
13-
4C61E9C2226B87BA00F95EA9 /* CoveredClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9C1226B87BA00F95EA9 /* CoveredClass.swift */; };
14-
4C61E9C4226B87CD00F95EA9 /* CoveredProject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9C3226B87CD00F95EA9 /* CoveredProject.swift */; };
15-
4C61E9C6226B87EC00F95EA9 /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9C5226B87EC00F95EA9 /* Parser.swift */; };
16-
4C61E9C8226B881C00F95EA9 /* CodeCoverage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9C7226B881C00F95EA9 /* CodeCoverage.swift */; };
17-
4C61E9CB226B8A8500F95EA9 /* CoveredClassTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9CA226B8A8500F95EA9 /* CoveredClassTests.swift */; };
18-
4C61E9CD226B8F2D00F95EA9 /* CoveredProjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9CC226B8F2D00F95EA9 /* CoveredProjectTests.swift */; };
19-
4C61E9CF226B91B200F95EA9 /* CodeCoverageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9CE226B91B200F95EA9 /* CodeCoverageTests.swift */; };
20-
4C61E9D1226BEDE400F95EA9 /* CoveredLineTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9D0226BEDE400F95EA9 /* CoveredLineTests.swift */; };
21-
4C61E9E82274870E00F95EA9 /* CoveredResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C61E9E72274870E00F95EA9 /* CoveredResult.swift */; };
22-
4CA6CC32237878C50010ACC9 /* CoverageCompare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA6CC31237878C50010ACC9 /* CoverageCompare.swift */; };
2311
4CA6CD4D237A043D0010ACC9 /* Coverage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA6CD4C237A043D0010ACC9 /* Coverage.swift */; };
12+
4CA6CD57237B616D0010ACC9 /* CoverageComparison.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA6CD56237B616D0010ACC9 /* CoverageComparison.swift */; };
13+
4CA6CD59237B619B0010ACC9 /* Row.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA6CD58237B619B0010ACC9 /* Row.swift */; };
14+
4CA6CD5B237B61F40010ACC9 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CA6CD5A237B61F40010ACC9 /* Utils.swift */; };
2415
/* End PBXBuildFile section */
2516

2617
/* Begin PBXContainerItemProxy section */
@@ -35,23 +26,14 @@
3526

3627
/* Begin PBXFileReference section */
3728
4C61E991226B86CB00F95EA9 /* CodeCoverageFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CodeCoverageFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
38-
4C61E994226B86CB00F95EA9 /* CodeCoverageFramework.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CodeCoverageFramework.h; sourceTree = "<group>"; };
39-
4C61E995226B86CB00F95EA9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
4029
4C61E99A226B86CC00F95EA9 /* CodeCoverageFrameworkTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CodeCoverageFrameworkTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
4130
4C61E9A1226B86CC00F95EA9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
42-
4C61E9BF226B876800F95EA9 /* CoveredLine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredLine.swift; sourceTree = "<group>"; };
43-
4C61E9C1226B87BA00F95EA9 /* CoveredClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredClass.swift; sourceTree = "<group>"; };
44-
4C61E9C3226B87CD00F95EA9 /* CoveredProject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredProject.swift; sourceTree = "<group>"; };
45-
4C61E9C5226B87EC00F95EA9 /* Parser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Parser.swift; sourceTree = "<group>"; };
46-
4C61E9C7226B881C00F95EA9 /* CodeCoverage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeCoverage.swift; sourceTree = "<group>"; };
4731
4C61E9C9226B8A8500F95EA9 /* CodeCoverageFrameworkTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CodeCoverageFrameworkTests-Bridging-Header.h"; sourceTree = "<group>"; };
48-
4C61E9CA226B8A8500F95EA9 /* CoveredClassTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredClassTests.swift; sourceTree = "<group>"; };
49-
4C61E9CC226B8F2D00F95EA9 /* CoveredProjectTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredProjectTests.swift; sourceTree = "<group>"; };
50-
4C61E9CE226B91B200F95EA9 /* CodeCoverageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeCoverageTests.swift; sourceTree = "<group>"; };
51-
4C61E9D0226BEDE400F95EA9 /* CoveredLineTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredLineTests.swift; sourceTree = "<group>"; };
52-
4C61E9E72274870E00F95EA9 /* CoveredResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoveredResult.swift; sourceTree = "<group>"; };
53-
4CA6CC31237878C50010ACC9 /* CoverageCompare.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoverageCompare.swift; sourceTree = "<group>"; };
5432
4CA6CD4C237A043D0010ACC9 /* Coverage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Coverage.swift; sourceTree = "<group>"; };
33+
4CA6CD54237B612E0010ACC9 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
34+
4CA6CD56237B616D0010ACC9 /* CoverageComparison.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoverageComparison.swift; sourceTree = "<group>"; };
35+
4CA6CD58237B619B0010ACC9 /* Row.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Row.swift; sourceTree = "<group>"; };
36+
4CA6CD5A237B61F40010ACC9 /* Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = "<group>"; };
5537
/* End PBXFileReference section */
5638

5739
/* Begin PBXFrameworksBuildPhase section */
@@ -94,16 +76,11 @@
9476
4C61E993226B86CB00F95EA9 /* CodeCoverageFramework */ = {
9577
isa = PBXGroup;
9678
children = (
97-
4C61E9C7226B881C00F95EA9 /* CodeCoverage.swift */,
98-
4C61E994226B86CB00F95EA9 /* CodeCoverageFramework.h */,
99-
4C61E995226B86CB00F95EA9 /* Info.plist */,
100-
4C61E9BF226B876800F95EA9 /* CoveredLine.swift */,
101-
4C61E9C1226B87BA00F95EA9 /* CoveredClass.swift */,
102-
4C61E9C3226B87CD00F95EA9 /* CoveredProject.swift */,
103-
4C61E9E72274870E00F95EA9 /* CoveredResult.swift */,
104-
4C61E9C5226B87EC00F95EA9 /* Parser.swift */,
105-
4CA6CC31237878C50010ACC9 /* CoverageCompare.swift */,
79+
4CA6CD54237B612E0010ACC9 /* Info.plist */,
10680
4CA6CD4C237A043D0010ACC9 /* Coverage.swift */,
81+
4CA6CD56237B616D0010ACC9 /* CoverageComparison.swift */,
82+
4CA6CD58237B619B0010ACC9 /* Row.swift */,
83+
4CA6CD5A237B61F40010ACC9 /* Utils.swift */,
10784
);
10885
path = CodeCoverageFramework;
10986
sourceTree = "<group>";
@@ -113,10 +90,6 @@
11390
children = (
11491
4C61E9A1226B86CC00F95EA9 /* Info.plist */,
11592
4C61E9C9226B8A8500F95EA9 /* CodeCoverageFrameworkTests-Bridging-Header.h */,
116-
4C61E9CE226B91B200F95EA9 /* CodeCoverageTests.swift */,
117-
4C61E9D0226BEDE400F95EA9 /* CoveredLineTests.swift */,
118-
4C61E9CA226B8A8500F95EA9 /* CoveredClassTests.swift */,
119-
4C61E9CC226B8F2D00F95EA9 /* CoveredProjectTests.swift */,
12093
);
12194
path = CodeCoverageFrameworkTests;
12295
sourceTree = "<group>";
@@ -128,7 +101,6 @@
128101
isa = PBXHeadersBuildPhase;
129102
buildActionMask = 2147483647;
130103
files = (
131-
4C61E9A2226B86CC00F95EA9 /* CodeCoverageFramework.h in Headers */,
132104
);
133105
runOnlyForDeploymentPostprocessing = 0;
134106
};
@@ -231,25 +203,17 @@
231203
isa = PBXSourcesBuildPhase;
232204
buildActionMask = 2147483647;
233205
files = (
234-
4C61E9C6226B87EC00F95EA9 /* Parser.swift in Sources */,
235-
4C61E9C0226B876800F95EA9 /* CoveredLine.swift in Sources */,
236-
4C61E9C4226B87CD00F95EA9 /* CoveredProject.swift in Sources */,
237-
4C61E9C8226B881C00F95EA9 /* CodeCoverage.swift in Sources */,
238-
4CA6CC32237878C50010ACC9 /* CoverageCompare.swift in Sources */,
206+
4CA6CD57237B616D0010ACC9 /* CoverageComparison.swift in Sources */,
207+
4CA6CD59237B619B0010ACC9 /* Row.swift in Sources */,
239208
4CA6CD4D237A043D0010ACC9 /* Coverage.swift in Sources */,
240-
4C61E9C2226B87BA00F95EA9 /* CoveredClass.swift in Sources */,
241-
4C61E9E82274870E00F95EA9 /* CoveredResult.swift in Sources */,
209+
4CA6CD5B237B61F40010ACC9 /* Utils.swift in Sources */,
242210
);
243211
runOnlyForDeploymentPostprocessing = 0;
244212
};
245213
4C61E996226B86CC00F95EA9 /* Sources */ = {
246214
isa = PBXSourcesBuildPhase;
247215
buildActionMask = 2147483647;
248216
files = (
249-
4C61E9D1226BEDE400F95EA9 /* CoveredLineTests.swift in Sources */,
250-
4C61E9CD226B8F2D00F95EA9 /* CoveredProjectTests.swift in Sources */,
251-
4C61E9CB226B8A8500F95EA9 /* CoveredClassTests.swift in Sources */,
252-
4C61E9CF226B91B200F95EA9 /* CodeCoverageTests.swift in Sources */,
253217
);
254218
runOnlyForDeploymentPostprocessing = 0;
255219
};

CodeCoverageFramework/CodeCoverageFramework/CodeCoverage.swift

Lines changed: 0 additions & 40 deletions
This file was deleted.

CodeCoverageFramework/CodeCoverageFramework/CodeCoverageFramework.h

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)