@@ -5,6 +5,7 @@ var Dependecy = require('./dependency');
55var findFolder = require ( './find-folder' ) ;
66var path = require ( 'path' ) ;
77var parseNuspec = require ( './nuspec-parser' ) ;
8+ var debug = require ( 'debug' ) ( 'snyk' ) ;
89
910function determineManifestType ( filename ) {
1011 switch ( true ) {
@@ -65,6 +66,7 @@ module.exports = {
6566 var installedPackages = [ ] ;
6667 switch ( manifestType ) {
6768 case 'project.json' : {
69+ debug ( 'Trying to parse project.json manifest' ) ;
6870 var rawDependencies = JSON . parse ( fileContent ) . dependencies ;
6971 if ( rawDependencies ) {
7072 for ( var name in rawDependencies ) {
@@ -80,6 +82,7 @@ module.exports = {
8082 break ;
8183 }
8284 case 'packages.config' : {
85+ debug ( 'Trying to parse packages.config manifest' ) ;
8386 parseXML ( fileContent , function scanPackagesConfig ( err , result ) {
8487 if ( err ) {
8588 reject ( err ) ;
@@ -99,17 +102,24 @@ module.exports = {
99102 break ;
100103 }
101104 case '.csproj' : {
105+ debug ( 'Trying to parse .csproj manifest' ) ;
102106 parseXML ( fileContent , function scanCsprojContent ( err , result ) {
103107 if ( err ) {
104108 reject ( err ) ;
105109 } else {
106110 ( result . Project . ItemGroup || [ ] ) . forEach ( function ( itemGroup ) {
107111 ( itemGroup . Reference || [ ] ) . forEach ( function ( referenceItem ) {
108112 if ( referenceItem . HintPath ) {
109- var installedDependency =
110- Dependecy . from . csprojEntry ( referenceItem ) ;
111- if ( installedDependency . name . indexOf ( 'System.' ) !== 0 ) {
112- installedPackages . push ( installedDependency ) ;
113+ try {
114+ var installedDependency =
115+ Dependecy . from . csprojEntry ( referenceItem ) ;
116+ if ( installedDependency . name . indexOf ( 'System.' ) !== 0 ) {
117+ installedPackages . push ( installedDependency ) ;
118+ }
119+ }
120+ catch ( err ) {
121+ debug ( 'Could not parse package name. Skipping' ) ;
122+ // gracefully continue
113123 }
114124 }
115125 } ) ;
@@ -121,6 +131,7 @@ module.exports = {
121131 }
122132 }
123133 } ) . then ( function scanInstalled ( installedPackages ) {
134+ debug ( 'Located ' + installedPackages . length + ' packages in manifest' ) ;
124135 function injectPath ( dep ) {
125136 dep . path = path . resolve (
126137 packagesFolder ,
@@ -130,8 +141,10 @@ module.exports = {
130141 installedPackages . forEach ( function ( entry ) {
131142 injectPath ( entry ) ;
132143 flattendPackageList [ entry . name ] = entry ;
144+ debug ( 'Entry: ' + entry . name + ' -> ' + entry . path ) ;
133145 } ) ;
134146 try {
147+ debug ( 'Trying to read installed packaged folder: ' + packagesFolder ) ;
135148 fs . readdirSync ( packagesFolder )
136149 . filter ( function ( name ) {
137150 return name . slice ( 0 , 7 ) . toLowerCase ( ) !== 'system.'
@@ -144,6 +157,8 @@ module.exports = {
144157 flattendPackageList [ dep . name ] = flattendPackageList [ dep . name ] || dep ;
145158 } ) ;
146159 } catch ( error ) {
160+ debug ( 'Could not complete installed packages folder scanning' ) ;
161+ debug ( error ) ;
147162 // could not read installed packages folder,
148163 // continue only with manifest list
149164 }
@@ -154,20 +169,24 @@ module.exports = {
154169 flattendPackageList = sorted ;
155170 } ) . then ( function fetchNugetInformationFromPackages ( ) {
156171 // initiate collecting information from .nuget files on installed packages
172+ debug ( 'Trying to analyze .nuspec files' ) ;
157173 var nuspecParserChain = [ ] ;
158174 for ( var name in flattendPackageList ) {
159175 var dep = flattendPackageList [ name ] ;
176+ debug ( '...' + name ) ;
160177 nuspecParserChain . push ( parseNuspec ( dep ) ) ;
161178 }
162179 return Promise . all ( nuspecParserChain ) ;
163180 } ) . then ( function processNugetInformation ( nuspecResolutionChain ) {
164181 nuspecResolutionChain . forEach ( function ( resolution ) {
165182 if ( ! resolution ) return ; // jscs:ignore
183+ debug ( '.nuspec analyzed for ' + resolution . name ) ;
166184 nuspecResolutions [ resolution . name ] = resolution ;
167185 } ) ;
168186 } ) . then ( function buildDependencyTree ( ) {
169187 // .nuget parsing is complete, returned as array of promise resolutions
170188 // now the flat list should be rebuilt as a tree
189+ debug ( 'Building dependency tree' ) ;
171190 function buildTree ( node , requiredChildren , repository ) {
172191 var resolutionName = node . name + '@' + node . version ;
173192 node . from = node . from . concat ( resolutionName ) ;
0 commit comments