Feasibility: How *do-able* is my project?
The hardware necessary to run this project would be a machine capable of running open source software in its terminal. As of now I do not anticipate any other hardware being necessary for my research project.
The main resources that I need to complete my project are all of the Python static analysis tools that I deem useful for my purposes. Along with these I will need the Python programming language. I will likely need several external libraries to create my tool, but I am not sure which as of now.
My knowledge of the Python programming language is the first skill that will contribute to the completion of my proposed project. Every programming language has static code analysis and has tools to do such analysis, but I chose to look into Python because of my interest in it. In doing so, I also plan to make my tool with the Python language. I am not far enough into the planning of my project that I would know any libraries I plan to use, but I have experience with researching and using libraries I was unfamiliar with in past projects. The most recent Software Innovation course that I took required me to work on a project of a topic that I was unfamiliar with, but I was able to leverage a new library to complete it. This is one example that proves my record of learning new skills/resources to complete a projects.
My project requires the use of data in the form of different file types. I can leverage self-created or random files of various types for my testing. Examples of these files include .md, .yml, .py, .txt, etc. The files that I use can be obtained from anywhere on GitHub, namely many of my own files. Given that GitHub is open source and very large, there is not a limit to how much I can obtain. I am not yet sure how much is sufficient to use in my project, but I would guess that 10-15 of each file type that I use is enough.
Seeing as I was able to complete a full project in three weeks with the aid of my team members, I believe that this project will take around 2-2.5 months. The planning stage will be relatively straightforward and quick, while the implementation will be a lengthy process. Once the tool works, the testing of it will not take very long.
Successful results from my project will yield answers to the question of “Which static code analyzers should I use for my Python project?” I will test my project by running experiments with a large amount projects with multiple file types.
I will analyze the results by comparing them to real project examples as well as comparing them with the “intended use” of the analysis tools. I can run the tool on existing projects to demonstrate it and obtain results for analysis.
I cannot foresee anything else that I will need for the project at this moment. A back-up plan if my original project process fails will be to use the tool in a different manner. In some form I intend to create a tool that analyzes static analysis tools and their applications in projects.
I am relying on others' projects to use as data, so there is some room for error there, but given the fact that I am working with tools that are meant to find/fix mistakes, the error decreases.